摘要:有的時候我們想讓樹莓派能夠錄音,以實現語音控制等功能。所以今天我們總結一下用在樹莓派上使用錄音的過程。準備硬件樹莓派上自帶的接口只能作為語音輸出口,不能接麥克風。
有的時候我們想讓樹莓派能夠錄音,以實現語音控制等功能。所以今天我們總結一下用在樹莓派上使用Python錄音的過程。
準備硬件樹莓派上自帶的3.5mm接口只能作為語音輸出口,不能接麥克風。所以我們需要另外購買USB聲卡,某寶上5元左右就能買到,當然你還需要一個麥克風。總費用應該在20元以內。
檢查硬件是否正常使用arecord -l可以列出所有錄音設備,一般輸出如下:
arecord -l
List of CAPTURE Hardware Devices
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
同樣地,aplay -l可以列出所有播放設備,輸出中也能找到形如 Device [USB Audio Device] 的設備。
我們可以直接在命令行執行Linux自帶的錄音/播放命令,測試硬件是否正常:
arecord -D hw:1,0 -t wav -c 1 -r 44100 -f S16_LE test.wav aplay -D hw:0,0 test.wav
arecord 是錄音命令,其中 hw:1,0 表示 card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio] 的 card 1 , device 0 ,如果你的USB聲卡錄音設備不是 card 1 , device 0 ,還請進行相應修改。另外,錄音過程需要手動按CTRL + C結束。
aplay 是播放命令,其中 hw:0,0 表示樹莓派板載音頻接口,如果你把耳機插在USB聲卡接口,還請進行相應修改,如改成 hw:1,0 。
*如果你發現錄制的音頻內沒有聲音,只有細微的雜音,但 arecord -l 和 aplay -l 列出的設備中確實有USB聲卡。那么你可以嘗試著把麥克風接口拔出來一些,只插進去2/3,或許能夠解決你的問題。筆者不是很明白其中的緣由,如果你有什么想法懇請留言告知。
安裝pyaudio在Python中執行錄音命令需要pyaudio模塊,直接用pip命令安裝:
pip install pyaudio
如果你使用pip命令下載速度很慢,或許修改pip源可以幫到你。
*如果你使用了virtualenv,一般會發現pyaudio安裝失敗。這種情況下你需要安裝APT中的PortAudio開發頭文件,然后安裝PyAudio:
sudo apt-get install portaudio19-dev pip install pyaudio使用Python錄音
該例程修改自官方主頁例程PyAudio。
import pyaudio import wave import os import sys CHUNK = 512 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" p = pyaudio.PyAudio() stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) print("recording...") frames = [] for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) frames.append(data) print("done") stream.stop_stream() stream.close() p.terminate() wf = wave.open(WAVE_OUTPUT_FILENAME, "wb") wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b"".join(frames)) wf.close()
執行后會錄制一段5秒的音頻,輸出為同目錄下的output.wav文件。
python3 rec.py* 隱藏錯誤消息
一般情況下,在樹莓派上執行上述Python代碼后,你會看到非常多的ALSA報錯和JACK報錯:
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition "cards.bcm2835.pcm.front.0:CARD=0"......
......
connect(2) call to /tmp/jack-1000/default/jack_0 failed (err=No such file or directory)
attempt to connect to server failed
但你會發現其實能夠正常地錄音。如果你不想看到這些錯誤消息,可以在代碼中加入下述命令隱藏錯誤:
os.close(sys.stderr.fileno())小結
使用Python錄音很簡單,你還可以在GPIO口上接入一個按鈕,修改例程,實現按下按鈕自動開始錄音的功能。下一步的目標是把Python錄音和Cloud Speech API語音識別結合起來。
感謝你閱讀文章!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44654.html
摘要:在我已經制作完成一輛可以運行的遙控車時,公司發布了一個自駕車項目,來展示自動駕駛汽車的工作原理。需要注意的是,這里用的都是語言而非,其主要原因有兩個一方面,近來似乎已成為運用機器學習技術時實際使用的語言。 最近,Mapbox 的 Android 工程師 Antonio 使用計算機視覺和機器學習技術,為他的女兒 Violeta 重新制作了一臺遙控車。接下來我們看看 Antonio 是如何...
摘要:因為樹莓派是架構的,所以的安裝和使用也都有不同。反過來別的上的鏡像,也不能在樹莓派上運行。有一個叫的倉庫制作了非常多樹莓派專用,可以參考下。樹莓派參考參考樹莓派安裝,最難的在于正確的選擇源和添加,才能找到版本適合的并下載。 因為樹莓派是ARM架構的,所以Docker的安裝和使用也都有不同。需要講的內容比較多,這里單挑出來。 樹莓派是基于ARM架構的,和PC不同。所以即使樹莓派上能做一些...
閱讀 2158·2023-04-25 20:45
閱讀 1067·2021-09-22 15:13
閱讀 3640·2021-09-04 16:48
閱讀 2579·2019-08-30 15:53
閱讀 927·2019-08-30 15:44
閱讀 936·2019-08-30 15:43
閱讀 1001·2019-08-29 16:33
閱讀 3432·2019-08-29 13:08