这会播放单声道aifc文件,但是对于任何立体声文件,我都会听到一阵静电:
import pyaudio
import aifc
CHUNK = 1024
wf = aifc.open('C:\\path_to_file.aiff', 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
我正在测试的立体声文件:https : //archive.org/details/TestAifAiffFile
我在Windows 7上,如果那很重要的话。
交换所有其他样本就可以了。将整个文件加载到data
,然后执行
a = numpy.fromstring(data, dtype = '<i2')
temp = a[1::2]
a[1::2] = a[::2]
a[::2] = temp
然后播放a
,就好像它是一串音频样本而不是一个numpy数组。我已经在两个不同的aiff文件上对其进行了测试,在两种情况下,它都可以保留两个通道并可以正确播放。
之所以可行,可能是因为该文件与pyaudio期望的字节顺序相反。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句