更新时间:2022-06-22 22:37:32
原来我不知道 audioop 内置模块(感谢 Anil_M 的答案.此外,我在转换立体声方面都错了格式和写作(我应该使用结构).
Turns out like I didn't know about the audioop built-in module (thanks to Anil_M's answer. Also, I was wrong on both converting the stereo format and writing (I should have used struct).
这让一切变得更加简单:
This makes everything absolutely easier:
stereo = wave.open('stereofile.wav', 'rb')
mono = wave.open('monofile.wav', 'wb')
mono.setparams(stereo.getparams())
mono.setnchannels(1)
mono.writeframes(audioop.tomono(stereo.readframes(float('inf')), stereo.getsampwidth(), 1, 1))
mono.close()
然后您可以通过修改最新的2个参数(1, 0
为左,0, 1
为右)甚至使用1.414 来选择单个通道
等功率代替等幅
Then you can select a single channel by modifying the latest 2 parameters (1, 0
for left, 0, 1
for right) or even using 1.414
for equal power instead of equal amplitude