免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

樹莓派學(xué)習(xí)手記——使用Python錄音

 xvdo 2021-11-12

CSDN廣告郵件太多了,郵箱已經(jīng)屏蔽了CSDN,留言請轉(zhuǎn)SegmentFault:https://segmentfault.com/a/1190000013854294

有的時候我們想讓樹莓派能夠錄音,以實現(xiàn)語音控制等功能。所以今天我們總結(jié)一下用在樹莓派上使用Python錄音的過程。

準(zhǔn)備硬件

樹莓派上自帶的3.5mm接口只能作為語音輸出口,不能接麥克風(fēng)。所以我們需要另外購買USB聲卡,某寶上5元左右就能買到,當(dāng)然你還需要一個麥克風(fēng)。總費用應(yīng)該在20元以內(nèi)。

檢查硬件是否正常

使用arecord -l可以列出所有錄音設(shè)備,一般輸出如下:

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可以列出所有播放設(shè)備,輸出中也能找到形如 Device [USB Audio Device] 的設(shè)備。

我們可以直接在命令行執(zhí)行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聲卡錄音設(shè)備不是 card 1 , device 0 ,還請進(jìn)行相應(yīng)修改。另外,錄音過程需要手動按 ctrl + c 結(jié)束。

aplay 是播放命令,其中 hw:0,0 表示樹莓派板載音頻接口,如果你把耳機(jī)插在USB聲卡接口,還請進(jìn)行相應(yīng)修改,如改成 hw:1,0

*****如果你發(fā)現(xiàn)錄制的音頻內(nèi)沒有聲音,只有細(xì)微的雜音,但 arecord -laplay -l 列出的設(shè)備中確實有USB聲卡。那么你可以嘗試著把麥克風(fēng)接口拔出來一些,只插進(jìn)去2/3,或許能夠解決你的問題。筆者不是很明白其中的緣由,如果你有什么想法懇請留言告知。

安裝pyaudio

在Python中執(zhí)行錄音命令需要pyaudio模塊,直接用pip命令安裝:

pip install pyaudio

如果你使用pip命令下載速度很慢,或許修改pip源可以幫到你。

*****如果你使用了virtualenv,一般會發(fā)現(xiàn)pyaudio安裝失敗。這種情況下你需要安裝APT中的PortAudio開發(fā)頭文件,然后安裝PyAudio:

sudo apt-get install portaudio19-dev
pip install pyaudio

使用Python錄音

該例程修改自官方主頁例程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í)行后會錄制一段5秒的音頻,輸出為同目錄下的output.wav文件。

python3 rec.py

* 隱藏錯誤消息

一般情況下,在樹莓派上執(zhí)行上述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

但你會發(fā)現(xiàn)其實能夠正常地錄音。如果你不想看到這些錯誤消息,可以在代碼中加入下述命令隱藏錯誤:

os.close(sys.stderr.fileno())

小結(jié)

使用Python錄音很簡單,你還可以在GPIO口上接入一個按鈕,修改例程,實現(xiàn)按下按鈕自動開始錄音的功能。下一步的目標(biāo)是把Python錄音和Cloud Speech API語音識別結(jié)合起來。

感謝你閱讀文章!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多