|
CSDN廣告郵件太多了,郵箱已經(jīng)屏蔽了CSDN,留言請(qǐng)轉(zhuǎn)SegmentFault:https://segmentfault.com/a/1190000013854294 有的時(shí)候我們想讓樹莓派能夠錄音,以實(shí)現(xiàn)語(yǔ)音控制等功能。所以今天我們總結(jié)一下用在樹莓派上使用Python錄音的過(guò)程。 準(zhǔn)備硬件樹莓派上自帶的3.5mm接口只能作為語(yǔ)音輸出口,不能接麥克風(fēng)。所以我們需要另外購(gòu)買USB聲卡,某寶上5元左右就能買到,當(dāng)然你還需要一個(gè)麥克風(fēng)??傎M(fèi)用應(yīng)該在20元以內(nèi)。
檢查硬件是否正常使用arecord -l可以列出所有錄音設(shè)備,一般輸出如下: arecord -l
同樣地,aplay -l可以列出所有播放設(shè)備,輸出中也能找到形如 我們可以直接在命令行執(zhí)行Linux自帶的錄音/播放命令,測(cè)試硬件是否正常: arecord -D hw:1,0 -t wav -c 1 -r 44100 -f S16_LE test.wav aplay -D hw:0,0 test.wav
*****如果你發(fā)現(xiàn)錄制的音頻內(nèi)沒(méi)有聲音,只有細(xì)微的雜音,但 安裝pyaudio在Python中執(zhí)行錄音命令需要pyaudio模塊,直接用pip命令安裝: pip install pyaudio 如果你使用pip命令下載速度很慢,或許修改pip源可以幫到你。 *****如果你使用了virtualenv,一般會(huì)發(fā)現(xiàn)pyaudio安裝失敗。這種情況下你需要安裝APT中的PortAudio開發(fā)頭文件,然后安裝PyAudio: sudo apt-get install portaudio19-dev pip install pyaudio 使用Python錄音該例程修改自官方主頁(yè)例程PyAudio。 import pyaudioimport waveimport osimport sys
CHUNK = 512FORMAT = pyaudio.paInt16
CHANNELS = 1RATE = 44100RECORD_SECONDS = 5WAVE_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() 執(zhí)行后會(huì)錄制一段5秒的音頻,輸出為同目錄下的output.wav文件。 python3 rec.py * 隱藏錯(cuò)誤消息一般情況下,在樹莓派上執(zhí)行上述Python代碼后,你會(huì)看到非常多的ALSA報(bào)錯(cuò)和JACK報(bào)錯(cuò):
但你會(huì)發(fā)現(xiàn)其實(shí)能夠正常地錄音。如果你不想看到這些錯(cuò)誤消息,可以在代碼中加入下述命令隱藏錯(cuò)誤: os.close(sys.stderr.fileno()) 小結(jié)使用Python錄音很簡(jiǎn)單,你還可以在GPIO口上接入一個(gè)按鈕,修改例程,實(shí)現(xiàn)按下按鈕自動(dòng)開始錄音的功能。下一步的目標(biāo)是把Python錄音和Cloud Speech API語(yǔ)音識(shí)別結(jié)合起來(lái)。 感謝你閱讀文章! |
|
|
來(lái)自: xvdo > 《python編程學(xué)習(xí)》