7

好的,所以我也在使用 pyaudio,但从我一直在看的 wave 模块来看,也许可以帮助我。

所以我试图在我的程序上添加一个修剪功能,我的意思是我试图让用户找到 wav 的一部分。他/她不喜欢并且有能力将波形文件修剪成他/她想要的。

到目前为止,我一直在使用 pyaudio 进行简单的播放,而 pyaudio 在从输入设备录制时非常容易。

我一直在 pyaudio 上搜索我可以做的任何事情来修剪音频,但我真的没有找到任何可以帮助我的东西。虽然在嵌入式波形模块上我看到有设置位置的方法。

我是否必须完成一个循环或 if 语句,以便程序知道要录制哪些位置,然后让 pyaudio 或 wave 模块从用户设置的位置(开始,结束)录制歌曲?如果我以这种方式接近它,我的程序会有效运行吗?

4

1 回答 1

4

假设您使用 scipy 读取了波形文件。

然后你需要有“编辑点”这些是用户想要保留的输入和输出值(例如以秒为单位)。您可以从文件中获取这些信息,也可以通过显示波形文件并获得鼠标点击来获取这些信息。如果用户提供了应该删除的部分音频文件,那么这需要首先被否定

这不是最有效的解决方案,但在许多情况下应该没问题。

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)
于 2013-10-15T13:38:32.550 回答