Linux 中的 speech_recognition 模块不工作,因为它一直在监听并且不前进
The speech_recognition module in Linux does not work as it keeps listening and does not advance
问题是 python3 中的 speech_recognition
模块一直在监听,并没有在代码中进一步推进……这里是:-
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"3[1m YOU: 3[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.listen(source)
之前添加 r.adjust_for_ambient_noise(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 问题仍然存在......另外,这可能是因为我的麦克风质量不好......好吧就是这样! :)
问题是 python3 中的 speech_recognition
模块一直在监听,并没有在代码中进一步推进……这里是:-
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"3[1m YOU: 3[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.listen(source)
之前添加 r.adjust_for_ambient_noise(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 问题仍然存在......另外,这可能是因为我的麦克风质量不好......好吧就是这样! :)