SpeechRecognitonモジュールはPythonでは遅すぎます

Sep 04 2020

ディープラーニングチャットボットに音声認識を使用して、ユーザーからの入力を取得しようとしていました。実際、私の音声認識機能コードは次のとおりです。

def get_audio():
    r = sr.Recognizer()

    with sr.Microphone() as source:
        r.pause_threshold = 1
        r.adjust_for_ambient_noise(source, duration=1)
        audio = r.listen(source)
        said = ""

        try:
            print("Listening...")
            said = r.recognize_google(audio)
            print("You said: " + said)
        except Exception as e:
            print("Exception: " + str(e))

    return said.lower()

さて、エラーはありません、そしてそれは最大のエラーです!高品質のビデオを同時にストリーミングできるので、インターネット接続に問題はありません。これはビデオでさえなく、文字列です。何が問題なのでしょうか。テキストを取得するには、15分近く待たなければなりません。

さて、私はオフラインAPIも試しました:recognize_sphinix()メソッド。あなたはpocketsphinixのバイナリインストールファイル(whl)を構築する必要があります。ああ、私は言及するのを忘れました、あなたはまた、speech_recognitionを使うためにあなたのマシンでpyaudioを構築する必要があります。私はすべてのことを行いましたが、同じ問題がこのオフラインAPIにもあります...午前中にrecognize.sphinix()私が言ったことを2〜3回認識しましたが、今ではそれに応答していません!

注:音声認識機能のみを実行しているタスクマネージャーでPCを監視しましたが、Pythonは9MBのRAMと0.3%のCPU使用率を使用していました。したがって、限られた計算能力で問題はありません。

誰かがこれを解決できますか?この頭痛を解決すれば、あなたは私の一日を作るでしょう。前もって感謝します!

回答

2 HarshitRuwali Sep 04 2020 at 00:47

期間パラメータは非推奨になりました。StackOverflowの質問を参照してください。
代わりにphrase_time_limitまたはを使用してくださいtimeout。

以下を使用したコードのブロックはphrase_time_limit次のとおりです。

import speech_recognition as sr
def myCommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.listen(source, phrase_time_limit = 5)  
    try:
        command = r.recognize_google(audio).lower()
        print("you said: " + command)
        
    except sr.UnknownValueError:
        print("Sorry, Cant understand, Please say again")
        command = myCommand()
    return command

これは完全に正常に機能します。