【问题标题】:SpeechRecognition not working (microphone not detected)SpeechRecognition 不工作(未检测到麦克风)
【发布时间】:2019-10-04 23:11:09
【问题描述】:

我想做一个带有语音识别的小程序。

这是我的代码(经典的):

import speech_recognition as sr
r = sr.Recognizer()

with sr.Microphone() as source:
    print("SAY SOMETHING")
    audio = r.listen(source,timeout=3, phrase_time_limit=3)
    print("TIME OVER")
try:
    print("TEXTE : "+r.recognize_google(audio, language="fr-FR"))
except Exception:
    print("ERROR")

但是当我尝试启动程序时出现这个错误:

ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) 无法打开从站
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) 未知 PCM 卡.pcm.rear
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) 未知 PCM 卡.pcm.center_lfe
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) 未知 PCM 卡.pcm.side
ALSA lib pcm_route.c:869:(find_matching_chmap) 找不到匹配的频道图
ALSA lib pcm_route.c:869:(find_matching_chmap) 找不到匹配的频道图
ALSA lib pcm_route.c:869:(find_matching_chmap) 找不到匹配的频道图
ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) 无法打开从站
无法连接到服务器套接字错误 = 没有这样的文件或目录
无法连接到服务器请求 channeljack 服务器未运行或无法启动
JackShmReadWritePtr::~JackShmReadWritePtr - 未完成 -1 的初始化,跳过解锁
JackShmReadWritePtr::~JackShmReadWritePtr - 未完成 -1 的初始化,跳过解锁
回溯(最近一次通话最后一次):

中的文件“record.py”,第 6 行 以 sr.Microphone() 作为来源:
文件“/usr/lib/python2.7/site- packages/speech_recognition/__init__.py",第 86 行,在 __init__
device_info = audio.get_device_info_by_index(device_index) if
device_index 不是 None 其他 audio.get_default_input_device_info()
文件“/usr/lib64/python2.7/site-packages/pyaudio.py”,第 949 行,在
获取默认输入设备信息
device_index = pa.get_default_input_device()
IOError: 没有可用的默认输入设备

当我做arecord -l 时,我有这个:

**** CAPTURE 硬件设备列表 ****
卡 0:PCH [HDA Intel PCH],设备 0:ALC298 模拟 [ALC298 模拟]
子设备:0/1
子设备#0:子设备#0

Ps : 麦克风适用于任何软件,如 Skype 或 Google

【问题讨论】:

  • 来自模块文档:pypi.org/project/SpeechRecognition“正如错误所说,程序不知道要使用哪个麦克风。要继续,请使用 Microphone(device_index=MICROPHONE_INDEX, ...) 而不是Microphone(...),或在您的操作系统中设置默认麦克风。您可以使用此问题上方的故障排除条目中的代码获取 MICROPHONE_INDEX 的可能值。"
  • 我已经尝试过使用索引 0 到 5 ...
  • 如何在 linux 上设置默认麦克风?仅通过命令行...我在 Fedora 29 上(但奇怪的是我可以在所有其他应用程序上使用麦克风)
  • 您是否尝试列出设备以查看可用的设备? for index, name in enumerate(sr.Microphone.list_microphone_names()): print("Microphone with name \"{1}\" found for Microphone(device_index={0})".format(index, name))
  • 我有 13 个 device_index 我尝试了所有但没有一个工作...这是错误(对所有人都一样):使用 sr.Microphone(device_index = 13) 作为源:文件“/usr/local /lib/python3.7/site-packages/speech_recognition/__init__.py", 第 141 行, in enter input=True, #stream 是一个输入流 File "/usr/local/lib64/python3 .7/site-packages/pyaudio.py”,第 750 行,在开放流中 = Stream(self, *args, **kwargs) 文件“/usr/local/lib64/python3.7/site-packages/pyaudio.py ",第 441 行,在 init self._stream = pa.open(**arguments) OSError: [Errno -9998] Invalid number of channels

标签: python audio speech-recognition microphone alsa


【解决方案1】:

尝试:更改您的默认麦克风设备。

【讨论】:

  • 问题表明麦克风与其他软件配合良好。您是否看到建议需要告诉代码如何选择要使用的麦克风的评论?
【解决方案2】:

我的一个项目中有一个工作代码 sn-p 试试这个它可能会工作:

import speech_recognition as sr

rObject = sr.Recognizer() 
audio = '' 
with sr.Microphone() as source: 
    print("Speak...")   
    audio = rObject.listen(source, phrase_time_limit = 0) 
    print("Stop.")
    try: 
        text = rObject.recognize_google(audio, language ='fr-FR') 
        print("You : "+ text)  
    except: 
        speak("Could not understand your audio...PLease try again !") 

运行这个 sn-p,我认为有一些名为 PyAudio 的包的问题...没有正确安装,如果没有 pyaudio,它将无法工作(特别是在 python 2.7 中,如果没有 pyaudio,它将无法工作)。

【讨论】:

  • 这只是与问题无关
【解决方案3】:

尝试将 PyAudio 安装到您的代码中以消除错误。甚至尝试连接到网络或让您的麦克风正常工作。

【讨论】:

  • 这不是你在这里回答任何问题的方式,伙计。你必须是描述性的。
【解决方案4】:

如何在异常块中添加 Speech_regognition Timeout 错误

with sr.Microphone() as source:
    print("SAY SOMETHING")
    audio = r.listen(source,timeout=3, phrase_time_limit=3)
    print("TIME OVER")
try:
    print("TEXTE : "+r.recognize_google(audio, language="fr-FR"))
except sr.WaitTimeoutError:
    print("ERROR")

【讨论】:

    【解决方案5】:
    def takecommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source, 1)
        print("Listening....")
        speak("listening")
        audio = r.listen(source)
    
    
        try:
            print("Recognizing...")
            query = r.recognize_google(audio, language='en-in')
            print(f"You said: {query}\n ")
    
        except sr.UnknownValueError:
            speak("Could not hear that, Try saying again")
    
        except sr.RequestError:
            speak("Make Sure that you have a good Internet connection")
        return query
    

    你必须import pyttsx3 pip install pyttsx3import speech_recognition as sr pip install SpeechRecognition 然后你的代码才能工作。

    【讨论】:

    • 您好!请为您的答案提供一些解释和来源,而不仅仅是在 StackOverflow 上发布代码 sn-p 作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多