在python中使用wave连接wav文件

时间:2015-12-16 22:04:00

标签: python audio text-to-speech wav wave

我正在尝试将wav文件列表连接到一个连续的wav文件中。我使用了以下代码片段,但输出不正确,听起来几乎就像文件在彼此之上。 audio_files是一个列表,其中包含按预期播放的.wav文件名。

这是我目前的代码:

outfile = "sounds.wav"

    data= []
    for wav_file in audio_files:
        w = wave.open(wav_file, 'rb')
        data.append( [w.getparams(), w.readframes(w.getnframes())] )
        w.close()
    output = wave.open(outfile, 'wb')
    output.setparams(data[0][0])
    output.writeframes(data[0][1])
    output.writeframes(data[1][1])
    output.close()

1 个答案:

答案 0 :(得分:1)

我假设您使用this question作为参考。但是,您所使用的代码只考虑了2个wav文件,因为这是原始问题所要求的。

虽然我不是,如果这样可以解决声音在彼此之上的问题,你应该遍历data列表中的每个项目。

output = wave.open(outfile, 'wb')
output.setparams(data[0][0])
for params,frames in data:
    output.writeframes(frames)
output.close()

确保您放入每个文件的框架。

要记住的一件事是,新wav文件的参数可能特定于每个文件,您可能需要检查getparams()是否为每个文件返回类似的结果。