意外と簡単!Python で音声認識プログラムを自作!!

雑な日記
スポンサーリンク

最近はすっかりと身近になったSiriやスマートスピーカーなどの音声認識。今回は、Python の SpeechRecognitionモジュールを使って音声認識プログラムを作成しました。

スポンサーリンク

音声認識API

SpeechRecognitionに対応した音声認識APIはいくつかあります。なかでも、CMU Sphinix と Google Speech Recognition はアカウント登録不要で無料のため、よく使われているようです。

CMU Sphinix はオフラインも対応していますが、英語のみ認識可能。Google Speech Recognition はオンラインのみ使用可能ですが、日本語も認識可能です。

よって、Google Speech Recognition を用いて音声認識プログラムを作成します。

事前準備

SpeechRecognitionのインストールと、マイク入力に必要なpyaudioをインストールしていきます。以下の文を1行ずつ実行していきます。pyaudioのインストールするために、portaudioを入れておく必要があるようです。

% pip install SpeechRecognition

% sudo apt-get install portaudio19-dev
% sudo apt-get install python-pyaudio python3-pyaudio
% pip install pyaudio

音声認識スクリプト

マイクに話しかけられた日本語を認識するプログラムです。

import speech_recognition as sr

r = sr.Recognizer()
mic = sr.Microphone()

while True:
    print("話しかけてください")

    with mic as source:
        r.adjust_for_ambient_noise(source)
        audio = r.listen(source)
    try:
        print(r.recognize_google(audio, language='ja-JP'))

    except sr.UnknownValueError:
        print("音声が聞き取れませんでした")
    except sr.RequestError as e:
        print("音声認識が正常に動作しませんでした;" " {0}".format(e))

r.adjust_for_ambient_noise(source) では雑音対策をしています。

print(r.recognize_google(audio, language=’ja-JP’)) の’ja-JP’で音声を日本語に指定しています。

実行して話しかけてみると、しっかり文章も認識できていました!

沈黙を続けると、「音声が聞き取れませんでした」と返してくれます。

話しかけてください
result2:
{   'alternative': [   {   'confidence': 0.95566952,
                           'transcript': '今日の三重の天気は 午前は雨で午後から晴れます'},
                       {'transcript': '今日の三重の天気は 午前は雨で午後から貼れます'},
                       {'transcript': '今日の三重の天気は 午前は雨で後から晴れます'},
                       {'transcript': '今日の家の天気は 午前は雨で午後から晴れます'},
                       {'transcript': '今日の三重の天気は 午前は雨でこうから晴れます'}],
    'final': True}
今日の三重の天気は 午前は雨で午後から晴れます
話しかけてください
result2:
[]
音声が聞き取れませんでした

まとめ

音声認識のプログラムは短い文で簡単に作れることが分かりました。

また試しに「今日は、え〜、よく晴れます」と、途中で「え〜、」という間投詞を入れて話しかけてみました。結果は「今日はよく晴れます」となり、Google Speech Recognition側で自動的に間投詞が取り除かれていました。すごいですね。

音声認識を使って色々、面白いものが作れたらなぁと思っています!

コメント

タイトルとURLをコピーしました