如何使用Python合并多个.wav文件

3

我看到一个帖子将两个.wav文件连接在一起,但我想知道如何使用python连接多个.wav文件? 我正在使用python 3.6.0。如果有人知道如何做,请教我。 我看到其他帖子要求连接2个.wav文件,并且我使用那里的评论中的代码:

import wave
infiles = ["sound_1.wav", "sound_2.wav"]
outfile = "sounds.wav"

data= []
for infile in infiles:
    w = wave.open(infile, '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()

我希望能够从路径中读取我的.wav文件,然后将它们合并为一个文件。我考虑了一下,想在添加前两个.wav文件后将它们删除,然后不断地进行合并和删除操作,直到只剩下一个.wav文件为止:

file:
sound1.wav
sound2.wav
sound3.wav

code:
sound1.wav + sound2.wav = sound4.wav

file:
sound3.wav
sound4.wav

code:
sound4.wav + sound3.wav = sound5.wav

file:
sound5.wav

我不知道如何编写这个代码。我是使用Python进行编码的新手,对编程语言并不是很熟悉。

提前感谢您的帮助。


https://dev59.com/znE85IYBdhLWcg3wNgrk - Boran
如果不是重复地合并两个文件,那么合并多个文件是什么意思呢? - Mr. T
是的,那就是我看到的将两个 .wav 文件合并的帖子。我只是不知道如何在这两个 .wav 文件上再添加更多内容。对不起,我是新手,不太擅长使用 Python 进行编程,希望没有给您带来麻烦。 - Haperious
output.writeframes(data[0][1]) output.writeframes(data[1][1]) 这是代码的一部分,硬编码将仅两个文件连接在一起。只需将所有文件名放入 infiles 列表中,并用以下代码替换先前的代码:for i in range(len(data)): output.writeframes(data[i][1])。这将连接任意数量的文件。 - Ardweaden
1个回答

3
使用像pydub这样的模块。
#!/usr/bin/env python
from pydub import AudioSegment
sound1 = AudioSegment.from_wav("filename01.wav")
sound2 = AudioSegment.from_wav("filename02.wav")
sound3 = AudioSegment.from_wav("filename03.wav")
combined_sounds = sound1 + sound2 + sound3 
combined_sounds.export("joinedFile.wav", format="wav")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接