9

Pythonでプログラムでwavファイルを分割しようとしています。stackoverflow のヒントと Python wave モジュールのドキュメントに基づいて、次のことを行っています

import wave

origAudio = wave.open('inputFile.wav','r')
frameRate = origAudio.getframerate()
nChannels = origAudio.getnchannels()
sampWidth = origAudio.getsampwidth()

start = float(someStartVal)
end = float(someEndVal)

origAudio.setpos(start*frameRate)
chunkData = origAudio.readframes(int((end-start)*frameRate))

chunkAudio = wave.open('outputFile.wav','w')
chunkAudio.setnchannels(nChannels)
chunkAudio.setsampwidth(sampWidth)
chunkAudio.setframerate(frameRate)
chunkAudio.writeframes(chunkData)
chunkAudio.close()

さまざまな開始値と終了値を繰り返し処理し、この方法で元のファイルからオーディオのチャンクを抽出します。奇妙なことに、この手法は一部のチャンクでは問題なく機能し、他のチャンクではガベージ ホワイト ノイズが生成されます。また、どの開始位置と終了位置がホワイト ノイズを生成するかについて明確なパターンはなく、入力ファイルに対して一貫して発生するだけです。

この種の行動を以前に経験した人はいますか?または、私が間違っていることを知っていますか?プログラムでオーディオ ファイルを分割するより良い方法についての提案を歓迎します。

前もって感謝します。

4

1 に答える 1

6

これは、 setposstart*frameRateを呼び出すときにfloatであることに関係している可能性があります。おそらく、リードフレームの後、代わりにファイルポインタの現在の場所を見つけるためにtellを使用する必要があります。

于 2013-03-22T23:35:44.503 に答える