web-dev-qa-db-ja.com

音声認識pythonコードが機能しない

PyAudioがインストールされた状態でPython 2.7で次のコードを実行しています。

import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:                # use the default microphone as the audio source
    audio = r.listen(source)                   # listen for the first phrase and extract it into audio data

try:
    print("You said " + r.recognize(audio))    # recognize speech using Google Speech Recognition
except LookupError:                           # speech is unintelligible
    print("Could not understand audio")

出力は点滅するポインタを示します。それでおしまい。私はこれに不慣れなので、助けてください。

8
alloyeduniv

考えられる理由は、_recognizer_instance.energy_threshold_プロパティが高すぎて開始できない値に設定されている可能性があることです。このしきい値を下げるか、recognizer_instance.adjust_for_ambient_noise(source, duration = 1)を呼び出す必要があります。あなたはそれについてもっと学ぶことができます 音声認識

5
Tushar Gautam

同じ問題を次のように解決しました(ノイズ抑制)。「リッスン」機能には環境ノイズの問題があります。したがって、実行中のコードは点滅して待機しているだけです。

この周囲ノイズ抑制/調整を使用してください。 r.adjust_for_ambient_noise(source, duration=5)

参照 2017年3月28日火曜日Python PyAudioおよびPocketsphinxを使用 での簡単な音声認識

3
cinsdikici

交換してみましたか

    print("You said " + r.recognize(audio))
    except LookupError:                          
    print("Could not understand audio")

    text = r.recognize_google(audio)
    print("You said : {}".format(text))
    text = r.recognize_google(audio)
    except:
        print("Sorry could not recognize your voice")

以下のコマンドを実行して、pyaudio.hがインストールされていることを確認します

    Sudo apt-get install portaudio19-dev python-pyaudio python3-pyaudio
2
Michael Maigwa

マイクの入力音量を確認してください。 ubuntuではデフォルトで0に設定されています(私の場合)。プログラムがaudio = r.listen(source)の行で動かなくなったため、これは単にマイクが音声入力を聞くことができないことを意味します。お役に立てれば。

1

Bro最初にマイクがオンになっているかどうかを確認する必要があります。

例:Cortanaで自分の声が認識されない場合は、このビデオを確認してください

https://www.youtube.com/watch?v=2WkiFqDYZ-c

私の問題はあなたのようなもので、私は間違いなくそれを解決しました。ありがとうございました

0
patel devang

Tusharの答えに加えて、より良い外部USBマイクを試すことをお勧めします。 PyAudioは、シンプルな内蔵ラップトップマイクで問題が発生する可能性があります。

0
Connor

問題は期間にあると思います。音声認識エンジンに一定の期間を設定すると、問題は解決されます。次のコードを試してください。

 import Speech_recognition as sr 
 r = sr.Recognizer()
 with sr.Microphone()as source:
 talk(sen)
 print ( "listening ...")
 audio = r.record(source、duration = 3)
 try:
 str = r.recognize_google(audio)
 print(str)
ただし:
 print( "エラーが発生しました!")
0
Samarth Mishra

ちょうど試して;

pip install sounddevice

できます。

0
Chavda Suraj

追加してみてください

r.adjust_for_ambient_noise(source,duration=1)

ここで、rは次のような認識インスタンスです。

import speech_recognition as sr

r=sr.Recognizer()
print(sr.Microphone.list_microphone_names())
with sr.Microphone() as source:
    r.adjust_for_ambient_noise(source,duration=1)
    # r.energy_threshold()
    print("say anything : ")
    audio= r.listen(source)
    try:
        text = r.recognize_google(audio)
        print(text)
    except:
        print("sorry, could not recognise")
0
MANISH RAWAT

最初にこれらのものをインストールする必要があるかもしれません:

  1. pip install pyaudio
  2. pip install --upgrade pyaudio
  3. pip install wheel
  4. pip install google-api-python-client
  5. Sudo apt-get install flac
  6. pip install monotonic
  7. pip install SpeechRecognition

その後、サイトを参照してください( https://realpython.com/python-speech-recognition/ )それはあなたが望むものを明確に説明します。


ここに、そのサイトから編集したコードを添付します。私は新しいので完璧ではありませんが、試してみました。これは天気をチェックするためのもので、音声入力は私が与えたテキストに似ており、あなたが言ったことを印刷します。


#!/usr/bin/ python
import time

import speech_recognition as sr


def recognize_speech_from_mic(recognizer, microphone):
    """Transcribe speech from recorded from `microphone`.

    Returns a dictionary with three keys:
    "success": a boolean indicating whether or not the API request was
           successful
    "error":   `None` if no error occured, otherwise a string containing
           an error message if the API could not be reached or
           speech was unrecognizable
    "transcription": `None` if speech could not be transcribed,
           otherwise a string containing the transcribed text
    """
    # check that recognizer and microphone arguments are appropriate type
    if not isinstance(recognizer, sr.Recognizer):
        raise TypeError("`recognizer` must be `Recognizer` instance")

    if not isinstance(microphone, sr.Microphone):
        raise TypeError("`microphone` must be `Microphone` instance")

    # adjust the recognizer sensitivity to ambient noise and record audio
    # from the microphone
    with microphone as source:
        recognizer.adjust_for_ambient_noise(source)
        audio = recognizer.listen(source)

    # set up the response object
    response = {
        "success": True,
        "error": None,
        "transcription": None
    }

    try:
        response["transcription"] =    recognizer.recognize_google(audio)
    except sr.RequestError:
        # API was unreachable or unresponsive
        response["success"] = False
        response["error"] = "API unavailable"
    except sr.UnknownValueError:
        # speech was unintelligible
        response["error"] = "Unable to recognize speech"

    return response


if __name__ == "__main__":

    NUM_GUESSES = 1
    Prompt_LIMIT = 2
    # create recognizer and mic instances
    recognizer = sr.Recognizer()
    microphone = sr.Microphone()

    Word = "hello world"

    time.sleep(3)

    for i in range(NUM_GUESSES):
        for j in range(Prompt_LIMIT):
            print('Guess {}. Speak!'.format(i+1))
            guess = recognize_speech_from_mic(recognizer, microphone)
            if guess["transcription"]:
                break
            if not guess["success"]:
                break
            print("I didn't catch that")

        # if there was an error, stop the game
        if guess["error"]:
            print("ERROR: {}".format(guess["error"]))
            break

        # show the user the transcription
        print("You said: {}".format(guess["transcription"]))

        # determine if guess is correct and if any attempts remain
        guess_is_correct = guess["transcription"].lower() == Word.lower()
        user_has_more_attempts = i < NUM_GUESSES - 1

        if guess_is_correct:
            print("Correct!".format(Word))
            break
        Elif user_has_more_attempts:
            print("Incorrect. Try again.\n")
        else:
            print("Sorry, output is not similar to '{}'.".format(Word))
            break
0
lashiniDW

インデントの中にTryandExceptを入れます。

これが私の作業コードです:-

while True:
    r = sr.Recognizer()
        with sr.Microphone() as source:
            print("Say Something")
            audio=r.listen(source)
        try:    
            print(r.recognize_google(audio),"\n")
        except:
            pass
0
PARAMESWARAN L