はじめに
aNo研さん @nnn112358 が記事で説明して頂いているとおりM5StickVでマイクが使えるようになったので、M5StickVで音声認識してみました。MaixCubeで音声認識を試してみるのM5StickV版。K210に搭載されたハードウェアサポートのFFTを利用します。
Maixduino(PlatformIO + Arduino開発環境)
Sipeed社から提供されているMaixduinoの開発環境にSpeech Recognitionのサンプルのコードとモデルが含まれています。
サンプルのコードでは、音声入力をMFCC(メル周波数ケプストラム係数)分析した後、DTW(動的時間伸縮法)で類似度を求めているようです。MFCCでK210のFFTが使われています。
場所
.platformio/packages/framework-maixduino/libraries/Maix_Speech_Recognition/examples
サンプル
サンプルのモデルをそのまま使ってM5StickVで試したソースはこちら
起動すると、まずモデルを読み込みます(シリアルコンソールに下記のメッセージが表示されます)
init model...
init model ok!
次に、周囲の雑音が小さくなるのを待ちます
get noise again...
音声入力待ちになります
speaking...
ここで、「レッド」あるいは「グリーン」あるいは「ブルー」と話しかけます。
うまくいけば、
res : red
と、表示されて赤のLEDが表示されます。
うまく認識されない時は、
recognize failed.
と表示されます。
結果
現状ではあまり認識率がいいとは言えません。マイク入力のコードは見直しが必要かもしれません。Sipeedのサンプルに自分のモデルを作るコードもあるので、自分の声でモデルを作ると少し認識率が上がりそうです。
M5StickVは、簡単に音声認識(AI)も試すことができました。