Raspberry Piで音声認識と音声合成をはじめる

前回、PWMでの音声出力と音質の改善ができた。
ここから、目標の会話できるハロを目指して、音声認識と音声合成をやってみる。
人工知能は、その後。

今日の流れ。今回は、Webの情報メインで独自色がすくないから細かいことは書いていない。
1.Open Jtalkの導入
2.Juliusの導入
3.マイクとPWM出力について
4.実行スクリプト参考URL
簡単にできる!音声認識と音声合成を使ってRaspberrypiと会話
Raspberry Piで音声認識する人工知能をつくってみる

pythonスクリプトは、以下のサイトがコメントが適切でがわかりやすかった。
AIロボットも作れるのか?音声認識でロボットに仕事させる。

1.Open Jtalkの導入

これはググればたくさん出てくるし、特に難しくないのでの詳細は書かない。
今回のポイントは、音声を"mei" ではなくて、"tohoku"にしたこと。

参考URL:
まほろば Open JTalk の音響モデルを試す

tohokuが、落ち着いていていいかな、って思った。
ハロの声はおそらく再現はできない。でも、再現トライはいつかしてみよう。

2.Juliusの導入

音声認識のためのJuliusを導入
こちらもググると沢山出てくるので割愛

ここのポイント:
・ググると沢山出てくるけど、バージョン差異が多少なりある。
・お決まりパターンっぽいディレクトリ構成をとっていたりするので、自分みたいに好きにしたい人は要注意。

・OSDN・・・とかって思ってGitHUBから入手すると必要なものが抜けていたことがあったので、素直にOSDNから入手するのがベスト。

3.マイクとPWM出力について

PWMの出力との競合があったので、ちょっとだけ書いておく。

音声入力のためのマイクは、アナログでは難しい感じ。たくさんググって調べたけど全然出てこないので、素直にUSB入力がいいのだろう、という結論になった。
情報を公開してくれている方々のサイトから、安い小型のマイクで充分とのことでAmazonで購入。
ただし、500円ぐらいしたので、ラズパイに次ぐ高額部品になってしまった。


ここで悩んだポイントは、
PWM出力を先にやっていたので、マイク入力のデバイスがそのまま使えるか?ってところ。
でも、何をやっても(デバイス番号を指定しても)Juliusは起動時にデバイスが見つからないエラーとなってしまう。
結局諦めて、マイク入力のデバイス番号を「0」に設定した。
すると、当然、PWMの出力はエラーとなる。
$ aplay --quiet  /tmp/test.wav
aplay: main:788: audio open error: No such file or directory
$ mpg321 test.mp3
・・・
Can't find a suitable libao driver. (Is device in use?)


対策は、デバイス番号を指定してあげること
$ aplay -Dhw:1,0 --quiet /tmp/test.wav
$ mpg321 -a hw:1,0 test.mp3
これで、マイク入力と両立するようになった。

4.スクリプト

音声認識させて、それに対する回答を返すためにはプログラムが必要。
今回は、下記のサイトのスクリプトを参考にさせてもらいました。

pythonスクリプトは、以下のサイトがコメントが適切で、非常にわかりやすかった。ありがとうございます。
AIロボットも作れるのか?音声認識でロボットに仕事させる。


今日はここまで。
このままで実行していくと、音声認識時間+音声合成時間で、Raspberry Pi Zero Wだと5秒近くかかるので実用性に欠ける。
対策としては、Julius用の辞書作成と、音声合成部分の極小化。
もしかすると、クラウド使うかもしれない。そういった記事は沢山ある。
でも、前に書いた通り、全部持っていかれるのは嫌だという性格なので内部で何とかしたい。

まだまだ暇つぶしができそう。
これらができたら、ハロを分解して組み込みを考えないと。
それはそれで現状維持+アルファで難しそうだ。


0 件のコメント:

コメントを投稿