基於訊飛語音,百度語音,圖靈機器人樹莓派的智慧語音機器人mic

bbzz2發表於2018-10-15

基於訊飛語音,百度語音,圖靈機器人樹莓派的智慧語音機器人

 

1.安裝python下的庫之PyAudio


首先解除安裝掉以前我們用的庫,安裝新的庫。原因是以前的庫有BUG,在python裡帶的pyaudio庫各種報錯,最後檢視了“stackoverflow”上的一些解決方案,定位錯誤的源頭,發現我的庫裡read函式不能遮蔽IOerror。所以一定是版本問題。 
所以要解決的第一步就是解除安裝老的庫,安裝新的庫。下圖是我在【http://people.csail.mit.edu/hubert/pyaudio/docs/】官方文件裡找到的相關介紹 


  上面談到的報錯我們列出如下: 
  
  
  當然還有諸多:我以文件的形式列出,方便後期搜尋引擎爬到。讓更多的人解決這些問題(我準備參加完畢業,全部開源)


[IOError: [Errno Input overflowed] -9981]
IOError: [Errno Invalid input device (no default output device)] -9996
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4771:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM sysdefault
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory

1234567891011121314151617181920


  好了:我們開始解決它……………


sudo apt-get remove python-pyaudio
12


然後我們來安裝我們需要的最新模組


sudo apt-get install python-pyaudio

sudo apt-get install git

git clone http://people.csail.mit.edu/hubert/git/pyaudio.git

sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev

sudo apt-get python-dev

sudo python pyaudio/setup.py install
123456789101112


安裝完就解決了我們一開始談到的問題 io報錯 9981。當然還要在原始碼裡做修改,把read函式裡面的引數修改為false,安裝上面官方文件的截圖進行傳參。後面我會在程式碼裡標註。


2.解決音效卡的各種問題

在這個上面我研究了很長時間,看了許多程式碼,我們在畢業設計第一天就談到了音效卡的驅動安裝,這裡再次談起是因為我們要用python裡的pyaudio解決聲音的vad功能:


  話音啟用檢測(VAD)演算法能夠區分傳輸語音訊號中的語音訊號和背景噪音,避免無用訊號的傳輸,從而節省有限網路資源,因此對VAD演算法的研究有重要的意義。由於一般靜默壓縮方法僅考慮高訊雜比和平穩背景噪聲這種理想通訊條件,為了在複雜的背景噪聲下進行VAD檢測。簡單來說就是我們不可能一直讓錄音和儲存,比如現在家裡沒有人,也沒人說話,我們完全就沒必要錄音上傳檢測語音識別。而vad就是解決這個的,當有較大的振幅時,我們開始儲存語音,然後上傳識別。 
  我們在python中寫了一部分程式碼用來解決環境靜音:後面我們會拿出這部分程式碼來詳細說明。但是問題又來了:這個pyaudio底層都用的是linux的聲音介面,當我們執行程式的時候就出現警告而且是上百行:就像上面圖片,但是仔細看:錯誤原因是找不到:那好解決了,錯誤的引起是我們本來就沒有這些裝置。我們把這些東西刪除。具體操作如下:

刪除這些報錯的裝置:什麼錯誤,刪除什麼


sudo vim /usr/share/alsa/alsa.conf1

$ ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline

例如:上面報錯是,那麼刪除下面的:

pcm.rear cards.pcm.rear
pcm.center_lfe cards.pcm.center_lfe
pcm.side cards.pcm.side
pcm.hdmi cards.pcm.hdmi
pcm.modem cards.pcm.modem
pcm.phoneline cards.pcm.phoneline
X11 proxy: Unsupported authorisation protocol
xcb_connection_has_error() returned true1234567891011121314151617181920


新增一些東西,解決con錯誤


sudo copy ~ .Xauthority /root1

ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

報錯如上:解決方法:

 在路徑 /usr/share/alsa/alsa.conf.d/  下刪除pulseaudio files. 

Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
jack_control start
After making those changes, I no longer get the errors, just:
然後執行基本不報錯了:
Listening... Press Ctrl+C to exit
1234567891011121314
--------------------- 
作者:張飛online 
來源:CSDN 
原文:https://blog.csdn.net/u013372900/article/details/72784823?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

相關文章