Python声音拼接

时间:2014-05-05 16:31:31

标签: python audio jython splice

我正在开发一个程序,它接收一个音频文件,找到并删除文件中的任何静音。此时程序运行,但是当我们播放返回的声音时,它只是原始文件的减速版本。此函数接收声音文件,然后是静音段的开始和停止时间。然后该功能制作两个剪辑(前一个剪辑,静音后一个剪辑)并将这两个剪辑放在目标声音对象中。

    def spliceAudio(audio, start, stop):
      clipOneStart = 0
      clipOneEnd = start - 1
      clipTwoStart = stop + 1
      clipTwoEnd = getLength(audio) - 1 
      target = makeEmptySound(getLength(audio) - (stop-start)) 
      index = 0 
      for source in range(clipOneStart, clipOneEnd): 
         value = getSampleValueAt(audio, source) 
         setSampleValueAt(target, index, value)
         index = index + 1 
      for source in range(clipTwoStart, clipTwoEnd):
         value - getSampleValueAt(audio, source)
         setSampleValueAt(target, index, value)
         index = index + 1 
      play(target)
      return target

对我来说,一切看起来都应该有效,但它没有给我们预期的结果。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的代码逻辑看起来没问题。音频播放速度的常见问题涉及您为音频数据分配的参数,具体为:

  • 采样频率
  • 频道数
  • 位深度(可能不相关,因为它看起来像数据存储在数组中)

我没有使用jython的任何经验,但是当您调用target时,代码中没有任何内容可以暗示为makeEmptySound()设置了这些参数功能。我想他们会有默认值,但值得检查它们是什么以及它们是否与您的输入数据相匹配。