2016-12-19 86 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