我有這個程序,監聽麥克風,並試圖認識到什麼是說:PyAudio警告poluting輸出
#!/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
問題是我想要一個腳本來執行上面的代碼並閱讀它的輸出(馬鈴薯),但返回的結果與所有這些錯誤混合在一起。我嘗試了我看到的解決方案here,但它只能抑制alsa警告。可能與alsa/pulseaudio配置混淆會解決這個問題,但我不想在每臺運行代碼的機器上都這麼做。
我也嘗試將stdin/stderr重定向到null,但沒有壓制任何東西。
我有一個解決方法,即腳本運行此程序時,只獲取最後一行,但我只希望它只作爲最後一個資源。
只是爲了指出,這個問題是由於'alsa.conf'文件有糟糕的設置,例如'pcm.rear cards.pcm.rear'。從'/ usr/share/alsa/alsa.conf'中刪除這些應該可以解決這個問題。 – jojek