用樹莓派打造自己的對話式智能家居控制中心——錄音

日常前言

項目教程目錄: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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章