音频信号处理(二)语音读取、播放

语音的播放其实是将音频信号读取出来(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)

你可能感兴趣的:(语音识别,人工智能)