语音的播放其实是将音频信号读取出来(wave库),然后写入声卡中(pyaudio)。这其中的核心点是,wave读取的音频参数要传递给pyaudio。
1.1打开wave获取参数
打开wave的文件对象
wf = wave.open(filename, 'rb') #model = ‘rb’or ‘wb’
使用wf获取音频参数传递给pyaudio
getsampwidth(self)
getnchannels(self)
getframerate(self)
1.2打开pyaudio对象,创建输出流
创建pyaudio对象 p = pyaudio.PyAudio()
传递参数 stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True)
1.3数据循环传输到声卡
data = wf.readframes(CHUNK) #按块大小读音频数据 while data != b'': stream.write(data) #将数据写入声卡中(播放) data = wf.readframes(CHUNK)
1.4完整播放音频代码
import pyaudio
import wave
CHUNK = 1024
FILENAME = r"C:\Users\adins\Desktop\0020a.wav"
def player(filename=FILENAME):
wf = wave.open(filename, '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 != b'':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
player(FILENAME)