天天看點

樹莓派錄音和播放聲音

安裝庫

安裝 ALSA 的錄音應用軟體

sudo apt-get -y  install  alsa-utils   pulseaudio
      

  

​lsusb​

​指令檢視一下USB裝置:

樹莓派錄音和播放聲音
(2)通過[sudo apt-get update]進行源更新。(無外網時可以跳過,如果後面指令執行時出現問題,請傳回此步并執行此步和(3)步)

(3)通過[sudo apt-get upgrade]進行包更新。(無外網時可以跳過)

(4)通過[sudo modprobe snd_bcm2835]載入聲霸卡驅動。

(5)通過[arecord -d 10 -D plughw:1,0 test.wav]進行錄音測試。(預設儲存在/home/test.wav)(指令說明:arecord -d 錄制時間(s)-D 裝置 名稱)
      

USB聲霸卡的使用

​arecord -l​

​可以列出所有錄音裝置

樹莓派錄音和播放聲音
樹莓派錄音和播放聲音

直接執行Linux自帶的錄音指令,錄制一段5秒的聲音進行測試

arecord -D "plughw:1,0" -f S16_LE -r 16000 -d 5 -t wav test.wav
      

 其中 ​

​hw:1,0​

​ 表示​

​card 1 , device 0​

​,即我們的USB聲霸卡,arecord 其他的參數如下:

樹莓派錄音和播放聲音

如果聲音過小,輸入指令 ​

​alsamixer​

​,來對音量進行調整,按下​

​F6​

​,選擇USB聲霸卡,

alsamixer
      
樹莓派錄音和播放聲音

 選擇F6

樹莓派錄音和播放聲音
樹莓派錄音和播放聲音

 然後按下​

​F5​

​,将錄音和播音裝置都展示出來,因為我的USB聲霸卡隻支援錄音,是以播音的音量無法調整,我們将錄音的音量按上鍵調高

樹莓派錄音和播放聲音

 注意這個聲音最好調成0,不然會有嚴重的電流刺啦聲音

 然後使用​

​aplay​

​指令來播放,也可以輕按兩下使用樹莓派自帶的媒體軟體播放。

aplay -D "plughw:0,0" test.wav
      

 如果錄音有問題,可能是缺少一些錄音軟體

sudo apt-get install  alsa-utils ulseaudio
      

 

語音播放

樹莓派支援 3.5mm 接口音頻輸出和 HDMI 音頻輸出,可以通過 config 界面來進行配置

如下圖所示,輸入

sudo raspi-config
      

  聲音輸出模式配置

(1)選擇進入第 7 項 - Advanced Options

(2)選擇 Audio,單擊回車

樹莓派錄音和播放聲音
樹莓派錄音和播放聲音

 配置聲音輸出模式

0 - 自動選擇

1 - 3.5mm 音頻接口輸出

2 - HDMI 輸出,這種方式一般是在顯示器有喇叭的情況下,使用顯示器自帶的喇叭播放音頻

選擇播放模式後,使用 TAB 鍵切換到 OK,然後單擊回車确認,就完成了音頻輸出模式配置

退出配置界面後,SSH終端會顯示模式配置成功

插上耳機到輸出孔,看是否有聲音,沒有的話,把輸出改成3.5mm

測試例程

'''
功能:
1錄音儲存wmv
2上傳百度語音識别傳回結果
'''
#樹莓派4B 使用USB免驅動麥克風儲存錄音
import json
import subprocess

vioce_path="voice.wav"

def getvoice(vioce_path):  
    print('開始語音輸入,5秒内說出目标點 紅色  綠色  藍色,之後保持安靜!')
    #arecord -l可以列出所有錄音裝置 檢視闆卡号和驅動号
    #vioce_path="voice.wav"
    Audio_drivce="plughw:2,0"#USB面驅動麥克風 闆卡2 驅動0
    vioce_time="5" #錄制5秒語音
    msg="arecord -D "+Audio_drivce+" -f S16_LE -r 16000 -d "+vioce_time+" -t wav "+vioce_path
    result=subprocess.call(msg, shell=True)#執行 同級目錄儲存檔案
    #print("錄音結束")

#getvoice()
    
    
from aip import AipSpeech


def usevoice(vioce_path):
    print('開始語音識别,請等待。。。')
  
    """ 修改成你的百度 APPID AK SK """
  
        
    APP_ID = '23159731'
    API_KEY = 'DIQ9g1OKcI4dIyU0xeFoTyK3'
    SECRET_KEY = 'P9zittbiFGpkmGsMMqGd74tbyG3bcOhp'
    
    
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

    # 讀取檔案
    def get_file_content(file_path):
        with open(file_path, 'rb') as fp:
            return fp.read()
        
    vioce_file=get_file_content(vioce_path)


    '''
    1536 國語(支援簡單的英文識别) 無标點
    1537 國語(純中文識别)       有标點
    1737 英語                   有标點
    '''
    # 識别本地檔案
    Recresult = client.asr(vioce_file, 'wav', 16000, {
        'dev_pid': 1537,  # 預設1537(國語 輸入法模型),dev_pid參數見本節開頭的表格
    })

    jsonRec=json.loads(json.dumps(Recresult))


    #print(jsonRec)
    #for i in jsonRec:
    #    print(i)
    VoiceRuselt=jsonRec["result"][0]
    print("識别結果為:  "+VoiceRuselt)
    

    if VoiceRuselt=="紅色。":     #傳回結果預設加了句号
        print('到達紅色區域停止')    
        return "red"
    elif VoiceRuselt=="藍色。":
        print('到達藍色區域停止')
        return "blue"       
    elif VoiceRuselt=="綠色。":
        print('到達綠色區域停止')
        return "green"
    else:
        print('沒有比對結果,請重新識别')
        return "black"
'''
#1錄音 5秒
getvoice(vioce_path)
#2對錄音結果識别  vioceresult儲存結果   
vioceresult=usevoice(vioce_path)
print(vioceresult)
'''
      

三、PyAudio安裝即配置

如果需要使用python程式控制錄音

安裝

pip install pyaudio
pip install tqdm      
sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 pulseaudio
sudo apt-get install libatlas-base-dev alsa-utils alsa-tools alsa-tools-gui alsamixergui -y