如果你想了解'框架'是什么,你将不得不阅读波形文件格式的标准。例如:https://web.archive.org/web/20140221054954/http://home.roadrunner.com/~jgglatt/tech/wave.htm
从该文档:
被意在“播放”的采样点即发送到数字到模拟转换器(DAC)同时被统称为采样帧 。在我们的立体声波形的例子中,每两个采样点构成另一个采样帧。下面为该立体示例进行说明。
sample sample sample
frame 0 frame 1 frame N
_____ _____ _____ _____ _____ _____
| ch1 | ch2 | ch1 | ch2 | . . . | ch1 | ch2 |
|_____|_____|_____|_____| |_____|_____|
_____
| | = one sample point
|_____|
要转换为单声道,你可以做这样的事情,
import wave
def stereo_to_mono(hex1, hex2):
"""average two hex string samples"""
return hex((ord(hex1) + ord(hex2))/2)
wr = wave.open('piano2.wav','r')
nchannels, sampwidth, framerate, nframes, comptype, compname = wr.getparams()
ww = wave.open('piano_mono.wav','wb')
ww.setparams((1,sampwidth,framerate,nframes,comptype,compname))
frames = wr.readframes(wr.getnframes()-1)
new_frames = ''
for (s1, s2) in zip(frames[0::2],frames[1::2]):
new_frames += stereo_to_mono(s1,s2)[2:].zfill(2).decode('hex')
ww.writeframes(new_frames)
没有明确的方式,从立体声转到单声道。你可以放下一个频道。以上,我正在平均渠道。这一切都取决于你的应用程序。
谢谢,该链接是非常翔实的,有趣的阅读。 – jameh
我可以得到一点点赞扬和/或接受的答案吗? –