Linux和python:将多个wave文件组合成一个wave-fi

2024-10-01 15:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法,我可以使用python将多个wave文件组合成一个wave文件,并在linux上运行。除了默认的shell命令行和默认的python模块之外,我不想使用任何附加组件。 例如wav和b。我想创建一个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()

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

^{pr2}$

有人能帮我吗?在


Tags: 模块文件代码inforcloserangeopen
3条回答

看起来您需要调用n=waveFileA.getnchannels()来找出第一个输入文件使用了多少个通道,同样对于waveFileB,那么您需要使用waveFileC.setnchannels(n)来告诉它要在输出文件中放入多少个通道。我不知道它将如何处理不同通道数的输入文件。。。在

您需要设置通道数、采样宽度和帧速率:

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

如果您想处理具有不同设置的a.wav和b.wav,则需要使用类似于pysox的方法将它们转换为相同的设置,或者对于nchannels和sampwidth,您可以自己处理。在

这是我要找的答案

How to join two wav files using python? (寻找汤姆10的线索)

在另一条线里。已经有人解决了这个问题。在

相关问题 更多 >

    热门问题