理系のブログ

京大生がJARVISを作るまでの話(2)「オウム返しbot」

理系のブログ
理系のシモン
理系のシモン

前回はプログラミング言語pythonの環境構築を行いました。

今回はpythonを使って人工知能の第一歩「オウム返しbot」を作りたいと思います。

前回の記事はこちらをご覧ください。

オウム返しbot

プログラム

オウム返しbotとはその名の通り、言われたことをオウム返しするだけのプログラムです。

プログラムは記事にするのもはばかられるほどしょぼいですが、一応載せて置きます。

text=input()

print(text)

上のプログラムではinput()関数で入力してもらった文字をtextという変数に保存。

二行目でprint()関数を使い、textに保存された文字を出力します。

動作確認

動作確認の方法は前回の記事の「pythonの使い方」を御覧ください。

動作は以下のようになります。

プログラムを実行すると入力待ちの状態になり、「こんにちは」と入力すると「こんにちは」とそのまま出力されます。

音声入力を可能にする

これだけでは面白くないので今回は「耳」の実装をしたいと思います。

音声入力にはGoogle Web Speech APIを使用します。

pipの更新

pipとはpythonのライブラリをインストールするためのツールです。

コマンドプロンプトで次のように入力してpipを更新します。

python -m pip install -U pip setuptools

SpeechRecognitionのインストール

次にpipでSpeechRecognitionをインストールします。

同じくコマンドプロンプトで次のように入力。

python -m pip install -U SpeechRecognition

「Successfully installed SpeechRecognition-X.X.X」と表示されれば成功です。

また、SpeechRecognition内でPyAudioというものも使うのでインストールしておきましょう。

PyAudioのインストールはこちらを御覧ください。

プログラム

音声認識専用の次のような「voicein.py」というファイルをrepeat.pyと同じフォルダ内に作りました。

import speech_recognition as sr
 
 
def voicein():
    text = '聞き取れませんでした'
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("何かお話しして下さい。")
        r.adjust_for_ambient_noise(source)  # 雑音対策
        audio = r.listen(source)
     
    try:
            # Google Web Speech APIで音声認識
        text = r.recognize_google(audio, language="ja-JP")
    except sr.UnknownValueError:
        print("音声を認識できませんでした。")
    except sr.RequestError as e:
        print("音声認識を要求できませんでした;"
                  " {0}".format(e))
    else:
        print(text)

    return(text)

1行目の「import speech_recognition as sr」でSpeechRecognitionを読み込みます。

また、voicein()関数を作りました。

voicein()関数の内容としてはまず「text = ‘聞き取れませんでした’」で初期返答を「聞き取れませんでした」に設定しています。

6行目「r = sr.Recognizer()」では1行目で読み込んだSpeechRecognitionを有効化しています。

14行目ではGoogle Web Speech APIを使って音声認識し、エラーでない場合は音声認識の内容を変数textに保存し、return()で返り値として設定します。

repeat.pyの編集

また、本体の「repeat.py」は次のように編集しました。

import voicein

text=voicein.voicein()

print(text)

一行目で同じフォルダ内のvoicein.pyを読み込み、3行目でvoicein.pyの中のvoicein()関数で音声認識したものを変数textに保存し、最後の行で出力します。

この状態でrepeat.pyを実行すると自分が喋った言葉をテキストで返してくれます。

次回はオウム返しbotを喋れるようにします。

この記事の執筆者
理系さん

理系の現役京大生。
受験での失敗と成功の経験を生かした理系記事でブログ毎日更新中!Twitterもやっていますのでよかったらフォローよろしくお願いします。

理系のシモンをフォローする
スポンサーリンク
シェアお願いします
理系の地下室

コメント

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