gpt4 book ai didi

python - Linux 和 python : Combining multiple wave files to one wave file

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:21 25 4
gpt4 key购买 nike

我正在寻找一种方法,可以使用 python 将多个 wave 文件组合成一个 wave 文件并在 linux 上运行它。除了默认的 shell 命令行和默认的 python 模块之外,我不想使用任何附加组件。例如,如果我有 a.wav 和 b.wav。我想创建一个 c.wav,它以 a.wav 的内容开头,然后是 b.wav。我找到了 wave 模块,我可以打开一个 wave 文件并写入一个新文件。因为我是这个音频世界的新手。我仍然不知道该怎么做。下面是我的代码

import struct, wave

waveFileA = wave.open('./a.wav', 'r')
waveFileB = wave.open('./b.wav', 'r')
waveFileC = wave.open('./c.wav', 'w')

lengthA = waveFileA.getnframes()
for i in range(0,lengthA):
waveFileC.writeframes(waveFileA.readframes(1))

lengthB = waveFileB.getnframes()
for i in range(0,lengthB):
waveFileC.writeframes(waveFileB.readframes(1))

waveFileA.close()
waveFileB.close()
waveFileC.close()

当我运行这段代码时,我得到了这个错误:

wave.Error: # channels not specified

谁能帮帮我?

最佳答案

您需要设置 channel 数、采样宽度和帧率:

waveFileC.setnchannels(waveFileA.getnchannels())
waveFileC.setsampwidth(waveFileA.getsampwidth())
waveFileC.setframerate(waveFileA.getframerate())

如果你想处理具有不同设置的 a.wav 和 b.wav,你需要使用像 pysox 这样的东西。将它们转换为相同的设置,或者对于 nchannels 和 sampwidth,您可以自己解决。

关于python - Linux 和 python : Combining multiple wave files to one wave file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12649465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com