树莓派3B+指南(十三)pyaudio录音与播放

pyaudio录音与播放

在网上有很多范例,但是在播放wav文件的时候,总是卡在循环中出不来,最后在官方的文档中找到了正确的使用方法。
官方文档:
http://people.csail.mit.edu/hubert/pyaudio/docs/#indices-and-tables

以下是结合网上的范例和官方的文档做出的可以在树莓派使用的方法:

import wave
from pyaudio import PyAudio,paInt16

framerate=16000
NUM_SAMPLES=2000
chunk=2014
channels=1
sampwidth=2
TIME=20 #ms

#保存
def save_wave_file(filename,data):

    '''save the date to the wavfile'''
    wf=wave.open(filename,'wb')
    wf.setnchannels(channels)
    wf.setsampwidth(sampwidth)
    wf.setframerate(framerate)
    wf.writeframes(b"".join(data))
    wf.close()

#录音
def my_record():

    pa=PyAudio()
    stream=pa.open(format = paInt16,channels=1,
                   rate=framerate,input=True,
                   frames_per_buffer=NUM_SAMPLES)
    my_buf=[]
    count=0
    
    while count 0:
	    stream.write(data)
	    data = wf.readframes(CHUNK)
	    
	stream.stop_stream()
    stream.close()
    
    p.terminate()

if __name__ == '__main__':
    my_record()
    print('Over!') 
    play()

如果在多个程序中使用pyaudio,可能会报错:

IOError: [Errno -9985] Device unavailable

或者其他的类似于设备不能使用的错误,可以试试以下代码

sudo apt-get install pulseaudio
pulseaudio --start

至此就结束了,希望可以帮助到大家!

你可能感兴趣的:(树莓派,python,语音识别)