音声認識
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Seeed Studio XIAO nRF52840 Senseでの音声認識
このWikiでは、Seeed Studio XIAO nRF52840 Sense上でTensorFlow Liteを使用し、オンボードマイクを利用して音声認識を行う方法を説明します。
組み込みAIアプリケーションに関しては、「Seeed nrf52 mbed-enabled Boards Library」の使用を強くお勧めします。
ソフトウェアセットアップ
まずは、初期のハードウェアおよびソフトウェアセットアップのために"Getting Started with Seeed Studio XIAO nRF52840 (Sense)"のWikiを参照してください。
次に、残りのソフトウェアセットアップに進みます。
- ステップ 1. tflite-micro-arduino-examplesライブラリをzipファイルとしてダウンロードします。
- ステップ 2. Arduino IDEを開き、
スケッチ > ライブラリを含める > .ZIPライブラリを追加...
に移動し、ダウンロードしたzipファイルを開きます。
データのトレーニングとTensorFlow Liteモデルの生成
次に、Google Colabノートブックを使用してデータトレーニングを行い、TensorFlow Liteモデルを生成します。
- ステップ 1. このPythonノートブックを開きます。
デフォルトでは、このデータセットがロードされ、以下の単語を認識できます:"yes", "no", "up", "down", "left", "right", "on", "off", "stop", "go", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "bed", "bird", "cat", "dog", "happy", "house", "marvin", "sheila", "tree", "wow"
- ステップ 2. Configure Defaults列の下で、モデルが認識する単語に応じてWANTED_WORDSパラメータを変更します。以下の単語から選択できます:"yes", "no", "up", "down", "left", "right", "on", "off", "stop", "go", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "bed", "bird", "cat", "dog", "happy", "house", "marvin", "sheila", "tree", "wow"
注: この例では、yes, no, up, downの単語が選択されています。
- ステップ 3.
Runtime > Run all
に移動して、すべてのコードセルを実行します。
- ステップ 4. 表示されるエラーメッセージに対してRun anywayをクリックします。
注: このプロセスは約2時間かかります。
- ステップ 5. すべてのコードセルが実行されたら、左上のfilesタブに移動し、modelsフォルダ内に新しいmodel.ccファイルが生成されていることを確認します。
注: 上記のmodel.ccファイルが表示されない場合は、ページを更新してください。
- ステップ 6. ファイルを右クリックし、DownloadをクリックしてPCにファイルをダウンロードします。
推論
次に、ダウンロードした TensorFlow Lite モデルファイル (model.cc) を使用して、Seeed Studio XIAO nRF52840 Sense のマイクを使い、異なる単語を認識します。
- ステップ 1. tflite-micro-arduino-examples ライブラリのパスに移動します (通常は Documents > Arduino > libraries > tflite-micro-arduino-examples の下にあります)。examples > micro_speech フォルダを開き、micro_features_model.cpp を開きます。
- ステップ 2. model.cc ファイルから取得した新しい値で、const unsigned char g_model[] DATA_ALIGN_ATTRIBUTE = { の下の値を置き換えます。
- ステップ 3. model.cc から取得した値に基づいて g_model_len を変更します。ここでは 26720 を使用します。
const int g_model_len = 26720;
- ステップ 4. micro_speech フォルダ内の micro_features_micro_model_settings.cpp を開き、トレーニングプロセスで定義したすべての単語を追加します。ここでは yes, no, up, down を使用します。
#include "micro_features_micro_model_settings.h"
const char* kCategoryLabels[kCategoryCount] = {
"silence",
"unknown",
"yes",
"no",
"up",
"down",
};
- ステップ 5. micro_speech フォルダ内の micro_features_micro_model_settings.h を開き、定義したカテゴリ数に基づいて constexpr int kCategoryCount を変更します。ここでは 6 カテゴリを使用します。
constexpr int kCategoryCount = 6;
ステップ 6. micro_speech フォルダ内の micro_speech.ino を開き、コードを Seeed Studio XIAO nRF52840 Sense にアップロードします。
ステップ 7. シリアルモニターウィンドウ を開き、トレーニングプロセスで定義した単語を大声で話します。シリアルモニターが認識後に正しい単語を出力するのが確認できます。
技術サポートと製品に関する議論
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。