2016-12-19 105 views
0

[編輯] PyAudio不工作,程序根本不做任何語音識別。Python語音識別錯誤ALSA

我在虛擬機上運行Ubuntu,並製作了一個簡短腳本。它使用SpeechRecognition 3.5.0來檢測用戶說什麼。我安裝了pyaudio,但是當我運行這個腳本時,我得到一個很長的錯誤。我在筆記本電腦上使用內置麥克風。

import wolframalpha 
import os 
from gtts import gTTS 
import speech_recognition as sr 
r = sr.Recognizer() 
with sr.Microphone() as source:    
    audio = r.listen(source) 
print("You said " + r.recognize(audio)) 
app_id = ("H34HDS-SDFJKOEER2") 
client = wolframalpha.Client(app_id) 
while app_id == "H34HDS-SDFJKOEER2": 
    input = raw_input("Question: ") 
    res = client.query(input) 
    answer = next(res.results).text 
    tts = gTTS(text=answer, lang='en') 
    tts.save("hello.mp3") 
    os.system("mpg321 hello.mp3") 

是我得到的錯誤是:

ALSA lib pcm_dsnoop.c:606:(snd_pcm_dsnoop_open) unable to open slave 
ALSA lib setup.c:548:(add_elem) Cannot obtain info for CTL elem (MIXER,'AC97 2ch->4ch Copy Switch',0,0,0): No such file or directory 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21 
ALSA lib setup.c:548:(add_elem) Cannot obtain info for CTL elem (MIXER,'AC97 2ch->4ch Copy Switch',0,0,0): No such file or directory 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71 
ALSA lib setup.c:548:(add_elem) Cannot obtain info for CTL elem (PCM,'IEC958 Playback PCM Stream',0,0,0): No such file or directory 
ALSA lib setup.c:548:(add_elem) Cannot obtain info for CTL elem (PCM,'IEC958 Playback PCM Stream',0,0,0): No such file or directory 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline 
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 
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock 
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock 
+1

每次[PyAudio工作,但吐出的錯誤消息的可能的複製](http://stackoverflow.com/questions/7088672/pyaudio-working-but-spits-out-error-messages-each-time) –

+0

沒有。 PyAudio實際上並不工作。 – TheMCProgrammer

+0

您需要檢查alsa是否首先使用aplay/amixer命令和驅動程序正確安裝。你需要檢查你的硬件(lspci輸出)。然後你需要檢查pulseaudio是否適用於桌面設置。一旦pulseaudio開始工作,其他一切都將工作。 –

回答

-2

我提供了從他們的頁面的答案。基本上你沒有插孔音頻服務器運行。作爲一個不得不使用Linux音頻的人,我可以告訴你這可能是一種痛苦。

https://pypi.python.org/pypi/SpeechRecognition/

在Ubuntu/Debian的,我得到這樣的「傑克服務器沒有運行或無法啓動」或錯誤「無法鎖定[...]字節的存儲區(無法分配內存)」。

Linux音頻棧非常易變。有幾件事會導致這些問題。

首先,確保JACK安裝 - 安裝它,執行sudo apt-get的安裝多媒體插孔

那麼你將要正確配置JACK守護進程,以避免「無法分配內存」錯誤。運行sudo dpkg-reconfigure -p high jackd2並選擇「是」來執行此操作。

現在,您將需要確保您的當前用戶位於音頻組中。您可以通過運行sudo adduser $(whoami)音頻將當前用戶添加到該組。

不幸的是,這些更改將需要您重新啓動才能生效。

重啓後,運行的PulseAudio --kill,其次是jack_control啓動,修復「傑克服務器沒有運行或無法啓動」錯誤

+0

嗯...我這樣做了,它仍然給出了同樣的錯誤,再加上另外幾條錯誤。 – TheMCProgrammer

+1

儘管在他們的頁面中的建議,這是錯誤的。你不應該安裝插孔。 Jack不是Ubuntu上的默認聲音服務器,pulseaudio是。你需要做的是正確配置pulseaudio和alsa,而不是安裝插孔。 –

+0

我希望我早一點知道這一點。已經安裝了Jack。你能否詳細說明如何配置pulseaudio和alsa? – TheMCProgrammer