好的,我也在使用pyaudio,但从我所看到的来看,wave模块可能会对我有所帮助。
所以我试图在我的程序中添加一个修剪功能,我的意思是,我试图让用户找到wav的一部分。他/她不喜欢,并且有能力将wave文件裁剪到他/她想要的任何位置。
到目前为止,我一直在使用pyaudio进行简单的回放,当从输入设备进行录制时,pyaudio非常容易。
我一直在pyaudio上搜索我可以做的任何事情来修剪音频,但我真的没有找到任何可以帮助我的东西。虽然在嵌入式wave模块上,我看到有一些方法可以设置位置。
我是否必须有一个循环或if语句,以便程序知道要录制哪些位置,然后让pyaudio或wave模块从用户设置的位置(开始、结束)录制歌曲?如果我这样做,我的程序会高效地运行吗?
发布于 2013-10-15 21:38:33
假设您使用scipy读入了wave文件。
然后你需要有“编辑点”,这些是用户想要保留的输入和输出的值(例如,以秒为单位)。你可以从一个文件中或者通过显示wave文件并点击鼠标来获得这些。如果用户给出了应该删除的音频文件的部分,则需要首先取消这一点
这不是最有效的解决方案,但在许多情况下应该是可以的。
import scipy.io.wavfile
fs1, y1 = scipy.io.wavfile.read(filename)
l1 = numpy.array([ [7.2,19.8], [35.3,67.23], [103,110 ] ])
l1 = ceil(l1*fs1)#get integer indices into the wav file - careful of end of array reading with a check for greater than y1.shape
newWavFileAsList = []
for elem in l1:
startRead = elem[0]
endRead = elem[1]
if startRead >= y1.shape[0]:
startRead = y1.shape[0]-1
if endRead >= y1.shape[0]:
endRead = y1.shape[0]-1
newWavFileAsList.extend(y1[startRead:endRead])
newWavFile = numpy.array(newWavFileAsList)
scipy.io.wavfile.write(outputName, fs1, newWavFile)https://stackoverflow.com/questions/19373748
复制相似问题