探索くん1号が完成したので新たなプロジェクト、会話ロボット、ラズたろうくん1号の開発を開始しました。
まずはラズたろうくん1号のゴールです。
リビングに設置して子供の声に反応して発音する(対話する)
認識の精度や、対話が成り立っているかはまずは問わないことにしました。
先ずインターフェースを確立し、プロトタイピングで品質を上げていきたいと思います。
ざっくり必要な機能
・録音
・音声認識
・対話
・音声合成
追加装備
・USBマイク
・Bluetoothスピーカー
簡易な対話ロボは思いのほか早く完成しました。
まずマイクセットアップします。ラズパイのオーディオインターフェースはALSAという管理システムが組み込まれているので、そいつの設定でマイクの優先度を1番にあげます。
マイクテスト。wavファイルができて自分の声が聞こえて成功。
次に出力スピーカーです。最初はHDMIでテレビに繋いでいるのでそこから音が出ればいいやと考えていたのですが、HDMIは音声再生時に最初の数秒が出力されないことが判明。音楽かけ流すならまだしも、数秒の音声データを何度もやり取りする会話システムにとっては致命的でした。
よってBluetoothスピーカーに変更。Bluetooth機器についてはPulseAudioというソフトウェアを入れるのが主流なようで早速インストール。Bluetoothのペアリング設定して、無事wavが途絶えることなく聞こえました。
次は本体Pythonプログラム。
色々なライブラリが公開されていますが、僕が選んだのは
音声合成:AquesTalk
です。
プログラム実行 → 録音秒数を打ち込む → 話しかける → 音声認識APIでテキスト変換 → 対話AIで応答テキスト取得 → 音声合成で応答テキストを音声wavに変換 → スピーカーから発声
という流れです。
あっさり成功しました。ラズたろうくんがしゃべった!感動です。
こんなシステムが全部オープンソースでかんたんに構築できるようになったとは、すごい時代になったものですね。