昨今、スマートフォンを初めとした様々な機器で、音声トリガー、ボイスコマンド、音声認識といった機能が使われています。これらの音声を入力コマンドとした機能を実現するために、Texas Instruments社(以下 TI社)の幅広いプロセッサ/デジタルシグナルプロセッサ(以下DSP)ラインナップでしたら、処理内容や実現内容に応じて最適な製品提案が可能です。
そこで、今回はTI社の組み込み音声認識ライブラリ(TIesr)を使用し、TI社の音声認識向けデバイス C5545、C5535を利用して予めプログラムされたフレーズに応答する音声認識デモの実施方法をご紹介します。
※本記事はTI社の資料「Speech Recognition Reference Design on the C5535 eZdsp™ (Rev. A)」を参考に掲載しています。参考資料のrevisionが更新がされた場合、手順が変更となる可能性があるため、本記事への反映が遅れる可能性がございますので予めご了承ください。
音声認識デモの実施にあたり準備する物
ハードウェア

- C5535 eZDSP USB スティック開発キット(TMDX5535EZDSP)
- Windows PC
※事前にバーチャル環境でUbuntuが動作できることをご確認ください。
ソフトウェア
- Code Composer Studio v6.1.2以降(以降CCS)
- TIDEP0066 Software
- DSP/BIOS v5.42.0.7
- C55XCSL-LOWPOWER-3.00.00.02(以降CSL)
※各ソフトウェアのインストール方法は省略します。
プログラムの作成
CCSでプログラムのビルドを行います。
なお、本手順はCCSの使用経験がある方向けの記載となっています。CCSを初めて使われる方は、下記の記事でCCSを使用している箇所をご参照いただきながら実施されることをおすすめします。
SensorTagを最新のF/Wにアップデートしよう -CCS編-
CapTIvateでタッチセンシング結果をLCDに表示させるリファレンスデザイン
- CCSを立ち上げた後、Projectタブから "Import CCS Project" を選択
- 展開したTIDEP0066フォルダの "/TIesr_src/TIesr_C55_demo" を選択
- 以下のプロジェクトをインポート
- TIesrDemoC55
- TIesrEngineC55
- 同様にCSLに含まれる以下のプロジェクトをインポート
- cslVC5505
- atafs_bios_drv_lib
- "atafs_bios_drv_lib" と "cslVC5505" のプロパティのBuild→C5500 CompilerにてRuntime Model Optionsの下記を設定変更
- use large memory modelにチェックが入っていないことを確認
→入ってればチェックを外す。 - Specify type size to hold results of pointer mathが "32" で指定されているか確認
- Processor OptionsのSpecify memory modelを "huge" に変更
- use large memory modelにチェックが入っていないことを確認

- "atafs_bios_drv_lib" と "cslVC5505"、"TIesrDemoC55" のプロパティからDSP/BIOSのバージョンを確認し、"5.42.0.07" ではない場合はプルダウンから変更
※v5.42.0.07がプルダウンの項目に無い場合は下記を参考に設定してください。
Texas Instruments マイコン・プロセッサ:CCSのDSP/BIOS versionの変更方法を教えてください。 - C:\c55xx_csl_3.00\inc\csl_general.hを開き、"#define CHIP_C5517" をコメントアウト
- TIesrDemoC55を選択し、プロジェクトをビルド
プログラムの実行と動作確認
- TIesrDemoC55のプロジェクトにターゲットコンフィグレーションファイルを作成
Connection:Texas Instruments XDS100v2 USB Debug Probe
Board or Device:EZDSP5535
※EZDSP5535が見当たらない場合はTMS320C5535を選びます。 - TMDX5535EZDSPをPCに接続し、マイクをStereo IN J3に接続
※付属のマイクであればピンクの端子を接続します。 - Debugボタンを押して、プログラムを実行
- CCSのDebug画面でResumeボタンを押す
- TMDX5535EZDSP上のSW2を押して、DS2のLEDの点滅を確認

- マイクに向かって、デフォルトで登録されている "TI voice trigger" を発声
- 認識するとOLEDに認識したキーワードが表示
実際に動かしてDS2のLEDの点滅を確認後、"TI voice trigger" と話すとこのように表示されました。

応用編:フレーズの変更
デフォルトでは "TI voice trigger" のフレーズしか登録されていませんが、フレーズを追加することが出来るので応用編としてご紹介します。
- 展開したTIDEP0066内の "/Tiesr_src" フォルダをUbuntuにコピー
- コンソールを立ち上げ、/TIesr_src/TIesr_model_build/のフォルダに移動
- 以下のフォルダにあるMakefileで "==" となっている部分をすべて "=" に置き換え
TIesrDictoso, TIesrDTso, TIesrEngineCoreso, TIesrEngineSIso, TIesrFA_ALSAso, TIesrFlexso、TIesrSIso - 以下のファイルに "-lpthread" オプションを追加
\TIesr_model_build\TIesrSI\TestTIesrSI\nbproject\Makefile-LinuxDebugGnu.mk
# Link Libraries and Options
LDLIBSOPTIONS=-L../../Dist/${CND_CONF}/lib -Wl,-
rpath,${CND_BASEDIR}/../../Dist/${CND_CONF}/lib -lTIesrSI -lpthread
- "TIesr_model_build" ディレクトリにてパッケージをコンパイル
コマンドは下記を入力します。- make LinuxDebugGnu PROJECTS='TIesrFA_ALSAso
- make LinuxDebugGnu
- "/TIesr_model_build/build_files.sh" を編集し、登録するフレーズを記載
フレーズの記載方法
"t i voice trigger" の後ろに|(縦線)を追加した後、登録したいフレーズを記載するだけで追加することが出来ます。

- "build_files.sh" にアクセス権を与え、実行
例:chmod +x build_files.sh
./build_files.sh
これにより、"/TIesr_src/TIesr_model_build/Data/GramDir" にファイルが作成されます。 - "/TIesr_src/TIesr_C55_demo/TIesrBintoASCII" に移動
- "convert.sh" にアクセス権を与え、実行
- "/TIesr_src/TIesr_C55_demo/C55xTIesrData/GramKWS" に生成された全ファイルをWindowsの同じディレクトリ下にコピー
- CCSで再度プロジェクトをビルドし、フレーズが変更されたかどうか確認
応用編の動作確認結果
応用編の手順で複数フレーズを設定して動作確認を行いました。今回設定したフレーズは "voice wakeup" と "trigger" の2種類です。
ソースの記述は下記のように行っています。

実際にマイクに向かって話すと、どちらのフレーズもしっかり反応してくれました!
ただ、どうも感度が良いみたいでマイクの近くで物音をたててしまったり、近くで電話している人がいたためか、正しく認識できないときに表示される "_Fill" がよく表示されてしまいました。
このデモを行う際は、なるべく静かなところで実施した方が良いかもしれませんね・・・

以上で応用編の確認は終了です!
最後に
いかがでしたでしょうか。今回は使用したCC5535というデバイスを搭載した評価キットを使いましたが、CC5535の他にもTI社では下記のような音声認識向けデバイスをご用意しております。ご興味がございましたらぜひTI社オフィシャルサイトの デジタル信号プロセッサ概要 にて詳細をご覧ください。

C5535、C5545、C5517
超低消費電力、小型、低価格、固定小数点演算
50MHzから200MHzの周波数レンジ
C674xファミリ
低消費電力、浮動小数点演算対応、ミドルレンジ
200MHzから456MHzの周波数レンジ
66AK2G02
ハイパフォーマンス、ARM Cortex-A15内蔵
600MHzの周波数レンジ
今回参考にした資料
Speech Recognition Reference Design on the C5535 eZdsp™デジタル信号プロセッサ概要
C5535/C5545 eZdsp USB スティック開発キット
おすすめ記事/資料はこちら
基本構成を丸ごと提供!おすすめ音声認識ソリューション3選
マイコンとはここが違う!デジタル信号処理に特化したDSPとは?
産業用イーサネット規格にマルチ対応!ASICやFPGA不要のプロセッサ
水滴が付いてもタッチ検出可能!2つの静電容量方式とは
センサとは何か?電子化、IoT化のための基礎知識