以前に”自然会話ロボット”に挑戦し、製作しましたが、NTTドコモの”雑談会話API”が使用できなくなり、代わりに供給されたAPIにうまく切替対応できず、ロボットはほったらかしになっていました。
今回利用できるようになったChatGPT-APIを利用すれば、自然会話ロボット(ChatRobot)が製作できるのでは?と思い、チャレンジしてみました。
1.ハード構成
・Raspberry Pi 4B(4G) および Rspberry Pi OS(Bullseye)
・マイク USB-microphone (MM-MCU03BK サンワサプライ)
・スピーカー Raspberry Piの音声出力-3.5㎜ジャック出力 小型アンプを通してスピーカーへ
小型アンプ:PAM8012 秋月電子
スピーカー:50mmダイナミックスピーカー 0.5W 8オーム
その他:3.5mmステレオミニプラグ、小型VR 2Kオーム
2.各機能別プログラム
2-1 音声入出力
自然会話ロボットのプログラム作成時の手順で、ほぼ完成。
音声入出力関係のパッケージのインストール
$ sudo apt-get install alsa-utils sox libsox-fmt-all
音声合成で使用するOpenJtalk関連のモジュールインストール
$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
女性の声での応答を希望する場合は、
$ sudo wget https://ja.osdn.net/projects/sfnet_mmdagent/releases/
$ sudo unjip MMDAgent_Example-1.8.zip
$ sudo cp -r MMDAgent_Example-1.8/Voice/mei /usr/share/hts-voice/
プログラムとしては、
USB-microphoneからの音声を録音する。 test-listen-1.py
録音された音声を、テキスト文にして、表示すると共に小型アンプを通したスピーカーから出力する。 test-speak-1.py
参考図書
自然会話ロボットを作ろう 鄭立[著] 秀和システム
2-2 音声認識
マイクを通して録音された音声を言語とみなして認識し、テキスト文に変換する。
juliusを使用した音声認識の記事がネット上でいくつか見られた。私も試してみたが、ダウンロード後のコンパイルがうまくいかず、あきらめた。
さらに調査の結果、Googleアシスタント等で利用されている方法(SpeechRecognition)が、研究・開発用であれば無料で使用可能なので、使用することにした。実行プログラムは、
testrecognize.py
$ sudo pip install SpeechRecognition
2-3 ChatGPTとの会話
”生成AIの利用2-ChatGPT-API”で示したプログラム。
テキスト文に変換された音声をAIに送信し、AIからの回答(テキスト文)を表示する。
2-4 音声入出力を使ったChatGPTとの会話
以前作成した自然会話ロボットとよく似た処理で、下記のような、音声中心のChatRobot処理。
入力の呼びかけ→ChatGPTへの質問(マイクから)→音声をテキスト文に変換→質問文を表示。ChatGPTへ問いかけ→ChatGPTからの回答
→回答(テキスト文)を表示。音声に変換し、スピーカーから出力
上記のようなループを繰り返す。
gptchatrobot-4.py