日常前言
項目教程目錄:https://blog.csdn.net/qq_41082014/article/details/86605663
既然在硬件篇說到了對話的這麼一個東西,那就來解析一下,對話的過程分爲以下幾個步驟
- 錄音
- 語音識別
- 語音合成
- 播放合成的聲音
那麼,本篇先來搞定第一個功能——錄音
開始
import wave
from pyaudio import PyAudio,paInt16
# 錄製的音頻質量參數
framerate=16000
NUM_SAMPLES=2000
channels=1
sampwidth=2
TIME=16 #單位爲s,實際錄音時間會縮小兩倍
# 錄音函數
def start():
pa=PyAudio()
stream=pa.open(format = paInt16,channels=1,
rate=framerate,input=True,
frames_per_buffer=NUM_SAMPLES)
my_buf=[]
count=0
while count<TIME
string_audio_data = stream.read(NUM_SAMPLES)
my_buf.append(string_audio_data)
count+=1
print('.')
save_wave_file('music/yinpin.wav',my_buf)
stream.close()
return my_buf
這個時候的錄音數據僅僅添加到my_buf這個數組裏,還沒保存爲文件,所以我們下面再定義一個函數來保存他
# 保存函數
def save_wave_file(filename,data):
wf=wave.open(filename,'wb')
wf.setnchannels(channels)
wf.setsampwidth(sampwidth)
wf.setframerate(framerate)
wf.writeframes(b"".join(data))
wf.close()
最後他他們組合起來使用,最終效果是錄製一個5s左右的音頻並保存到i_said.wav這個文件裏
if __name__ == '__main__':
data = start()
save_wave_file('i_said.wav',data)