content「Codama」ボードを使った音声認識によるデバイス制御実験(Part-1:サンプルプログラムの動作確認)Python3音声認識codama初めてQiitaに投稿します。2018年12月に「ユカイ工学」社から音声対話キット「Codama」が発売さました。音声認識サービスを使うのに、面倒な利用登録申請などは不要なようで、価格も個人でも何とか手の届きそうなので、早速購入して音声によるデバイス制御がどの程度可能なのかの実験を行いました。(対話は考えていません)最終的には写真のような実験装置を作りました。記事が長くなったので3つ+1つに分けることにしました。Wikiを参考にして下さい。動かすまで色々やらなければならない事がありますので、サイトに書かれている手順を数回読んでから始めた方がよろしいかと思います。このボードに限ったことでは無いのですが、ラズパイで新しいことを始める場合は以下のことを考慮したらいいと思います。サンプルプログラムの動作サンプルプログラムのあるフォルダに移動して、コマンドラインから以下のようにタイプします。main.py起動すると、misakiさんが「ロボスタロボです・・・・」と喋って、ウェイク・アップ・ワード待ちとなる。ウェイク・アップ・ワードを認識すると、待機状態になります。何か発話すると、その音声データがSebastien-aiに送られて、認識処理後に以下のような文字列が表示されます。発話例:「音声認識のテストを行います」サンプルプログラムの動作は、この繰り返しです。説明が無いので途方に暮れるのですが、気を取り直してよく見るとこれはJson形式であることが分かります。on_text_out()から出力される文字列を整形すると、以下のような構造であるようです。"音声認識のテストを行います"を採用することにして、この文字列から取り出すことを考えます。※後で分かったことですが、認識結果である"converter_result"以外にも非常に重要なデータがあることが分かりました。”label:"キーは、認識結果を形態素解析したものと推測します。Part-2・3で認識結果をMecabを使って形態素解析を行い、実際にデバイスを動かすプログラムを提示しますが、"label:"キーの値をそのまま使えば新たに形態素解析を行わなくても済むようです。(始めたころは、形態素解析などという言葉すら知りませんでしたので・・・)しかしながら、認識結果に数字が含まれるようなものですと形態素解析を行う前後で何らかの文字列処理が必要になるかと思いますので、やっぱり使えないか??3.サンプルプログラムの改造サンプルプログラムでは、Json文字列がダラダラと表示されるだけで、このままでは使えません。応用するには内容の把握が必要となりますので、少し改造して分かりやすい表示を試みます。細かなテストを繰り返したのですが、最終的には図のように認識結果をアプリケーションに渡す構造としました。D/Bに出力するだけに専念してもらいます。Serverをインストールして、ラズパイ上のPythonで動くことを確認しておきます。インストール方法は、ググれば沢山出てきますので、そちらを参考にしてください。適当なフォルダを作成し、サンプルプログラムのフォルダから必要なものをコピーしておきます。Classに渡します。