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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值