python - Linux中的speech_recognition模块不起作用,因为它一直在听并且不前进
问题描述
问题是speech_recognition
python3中的模块一直在监听并且没有在代码中进一步前进......这里是: -
import speech_recognition as sr
def takeVoiceInp():
# Input Voice, Output Text (String)
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening")
audio = r.listen(source)
print("Listened!")
try:
print("Recognising!")
query = r.recognize_google(audio)
print(f"\033[1m YOU: \033[0m {query}\n")
except Exception:
print("Try Again!")
print("Error:", Exception)
return "None"
return query
print(takeVoiceInp())
当我运行这段代码时,它会在控制台中抛出这个: -
ALSA lib pcm_dsnoop.c:618:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
Listening
就是这样!它永远留在那里!
我打开设置,发现我的麦克风被 Ubuntu 检测到了。此外,当我运行该程序时,它还显示ALSA plug-in [python3.6]
在设置中使用我的麦克风或扬声器的应用程序列表中(它是唯一使用我的麦克风的应用程序)。
我可以在这里做些什么来让它工作,因为Listened!
从上面的代码中永远不会打印出这句话。如果您能够提供帮助,或者即使您正在阅读本文,请提前致谢!
解决方案
好的....所以我所做r.adjust_for_ambient_noise(source)
的只是在之前添加r.listen(source)
,它工作得很好...看起来在 Windows 中,它有一些自动或默认的环境噪声阈值...好吧,现在的问题是前几秒钟的音频出现故障或被篡改,因此,如果我立即开始讲话,则会引发 0 索引错误(未收到音频)。如果你说话的时间足够长,它不会听懂你说的前几句话......这可能是因为 Ubuntu/Linux 默认附带的 ALSA 麦克风驱动程序。所以一个大胆的解决方案是: -
from time import sleep
r = sr.Recogniser()
with sr.Microphone() as source:
audio = r.listen(source)
sleep(1.5)
print("Say something...")
query = r.recognise_google(audio)
这解决了它!但是...... ALSA 问题仍然存在......另外,这可能是因为我的麦克风质量不好......嗯,就是这样!:)
推荐阅读
- unit-testing - 如何修复错误 import Vue from 'vue' 导致 SyntaxError: Unexpected identifier
- ios - 在 IBDesignable 视图中覆盖以使其显示在 Interface Builder 中的正确方法是什么?
- r - r中的双NextMethod()
- filter - 在每种类型的 MDX 过滤器上禁用“立即应用”选项
- python - 删除具有不同值的重复行
- batch-file - 从批处理文件检索变量的输出/状态到詹金斯管道
- excel - 使用 Range.End 属性扩展多单元格范围
- nativescript - 水平方向的Nativescript gridview
- mongodb - 从死文件系统中恢复 Docker 容器
- git - 将 git 文件恢复到从存储中弹出之前的状态