在Python中分割wav文件
我正在尝试用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()
我遍历了不同的开始和结束位置,从原始文件中提取音频片段。奇怪的是,这种方法对某些片段效果很好,但对其他片段却只得到噪音。而且没有明显的规律可以说明哪些开始和结束位置会产生噪音,只是对于某个输入文件,这种情况总是发生。
有没有人遇到过这种情况?或者知道我哪里做错了吗?如果有更好的方法来程序化地分割音频文件,欢迎分享建议。
提前谢谢大家。
1 个回答
6
这可能和调用 start*frameRate
时,它是一个浮点数(小数)有关。也许在调用 readframes 之后,你应该使用 tell 来找出文件指针当前的位置,而不是直接用 setpos。