わずか数分でオリジナルの音声認識システムを構築【ネット接続不要】

TZ2100の音声HMIソリューションボードの真髄は、ネットに繋がなくても独自の音声コマンドを扱える点です。BSPの環境を整えておけば、わずか数分でオリジナル音声コマンドが構築できます。今回の実験室は、独自の音声コマンドを作って組み込む方法を試してみました。ぜひ、この記事を参考にして、オリジナルの音声認識システムを構築してください。

RTOS環境下で動いているので、電源投入から1秒もかからず音声入力モードになります。Linux環境下ではなし得ないレスポンスも、TZ2100の音声HMIソリューションの魅力の一つです。あなたはこれでもまだラズパイ使い続けますか?

事前準備

東芝にユーザー登録をして、BSPを入手しておきます。BSPを入手したら、Readmeの手順に従って、ビルドするためのディレクトリ構成や、FreeRTOSのパッケージを入手し、BSPで提供されているpatchを当てる必要があります。patchはWindows環境下で実行は難しいので、Cygwinなどを入れておくといいでしょう。

ビルド環境は、IARシステムズ社のIAR Embedded Workbench for Armが必要です。JTAG-ICEは、IARシステムズ社のI-Jetを利用しました。

IAR Embedded Workbench
I-Jet

図I-JetとTZ2100音声HMIソリューションボード

今回は、音声入力のみ扱うため、スピーカやLCDはボードから切り離して使用しました。

辞書ツールで、独自コマンドを登録

BSP内に独自コマンドを作るためのツールが含まれています。これを利用する必要があります。今回は、以下のようなコマンドを登録してみました。

図音声コマンド一覧

ここで登録した内容を、メニューの「Generate」で生成します。生成したデータは、「0_VDC.vtdic」というファイル名にして、指定されたフォルダに保存します。設定されたIDと紐づいているかどうかは、「View」メニューで確認できます。

図IDとラベルが一致している

今回のBSPでは、「jaJP」というフォルダにファイルを保存する方法を取っており、EWARMのプロジェクト設定で、このフォルダにある「0_VDC.vtdic」を参照するように作られています。

図辞書データを指定したフォルダに配置したところ

図リンカ設定で、辞書データを直接指定している

フラッシュに書き込み

ビルドが成功すると、実行ファイルができます。デバッグも可能ですが、書き込み方法を記します。

アクティブなファイルのダウンロードとして、ビルドした実行ファイルをダウンロードします。オンボードのSPIフラッシュに書き込まれます。その次に、「2nd_loader」というファイルをダウンロードします。

TZ2100はセキュアなブートをサポートしていますが、最初のローダーから直接アプリの起動はできません。そのため、アプリケーション部分を書き込んだ後、ローダを上書きすることで、TZ2100を安全にブートさせることができるようになります。詳細は、BSPに記載されていますので、参考にしてみてください。

アプリケーションの実行

ボード上のUSBをPCのTeraTermなどのターミナルソフトとつないで、起動してください。ボードは、リセットボタンを押すだけです。UARTには、認識可能な音声コマンドのIDが表示されます。音声を認識すると、IDが表示されます。

図UARTの画面

さらに独自で音声コマンド変更したい場合は、辞書登録 -> ビルド -> 書き込みを繰り返してもらえればと思います。

ソースコード中のIDを表示する箇所は、main.cでUARTにIDを表示する箇所がありますので、そこを修正したのみです。

図EWARMでソースコード編集

さらなるチャレンジ!

今回は、リンカ設定で辞書ファイルの追加をしていますが、ファイルシステムを搭載して、辞書ファイルをファイルから読み込む方法と、辞書に紐づいたアプリケーション実行部分をなんらかのスクリプトファイルで指定実行できるとさらに便利だと思いませんか?「よし!俺がこの機能を実装するぞ!」というツワモノは、ワタクシまで名乗りをあげてください!(いるかな?)