我有一个程序,它监听麦克风并尝试识别所说的话:
#!/usr/bin/env python3
import speech_recognition
recognizer = speech_recognition.Recognizer()
class Recognition:
def __init__(self):
self.recognizer = speech_recognition.Recognizer()
def listen(self):
with speech_recognition.Microphone() as source:
self.recognizer.adjust_for_ambient_noise(source)
self.audio = self.recognizer.listen(source)
def recognize_sphinx(self):
decoder = self.recognizer.recognize_sphinx(self.audio, show_all=True)
for best, i in zip(decoder.nbest(), range(10)):
return best.hypstr
r = Recognition()
r.listen()
print(r.recognize_sphinx())
虽然代码可以运行,但是它会在输出结果中显示以下警告信息:
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
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_route.c:867:(find_matching_chmap) Found no matching channel map
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 4294967295, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
potato
问题是我想要一个脚本来执行上面的代码并读取它的输出(potato),但返回的结果混杂着所有这些错误。我尝试了我在这里看到的解决方案,但它只抑制alsa警告。可能会通过操作alsa/pulseaudio配置文件来解决此问题,但我不想在每台运行该代码的机器上都这样做。
我还尝试将stdin/stderr重定向到null,但没有抑制任何内容。
我想到了一个解决方法,即当脚本运行此程序时,只获取最后一行,但我希望这只是最后的手段。
alsa.conf
文件中有糟糕的设置,比如pcm.rear cards.pcm.rear
。从/usr/share/alsa/alsa.conf
中删除这些设置应该可以解决问题。 - undefined