Ralomi
日本語の音声をひらがなに変換する、約205万パラメータの軽量な音声認識モデルです。
マイコン・組み込み機器(ESP32-S3等)での音声認識を目指して開発しています。
A lightweight Japanese speech recognition model targeting microcontrollers, embedded systems, and edge devices.
モデルの仕様
| 項目 | 内容 |
|---|---|
| バージョン | 1.0.0(正式版) |
| 入力 | 16kHzモノラル音声、0.1〜15秒 |
| 出力 | 正規化したひらがな。漢字変換・句読点・話者識別は非対応 |
| 形式 | FP32 ONNX(約8.3MB)。ESP32-S3用は16bit量子化した.espdl(約4.3MB) |
| 学習 | ReazonSpeech約10,000時間でスクラッチ学習した990k step版 |
ONNXはlog-Mel特徴量を入力します。下記のPythonコードが音声の変換・特徴抽出・認識をまとめて処理します。
Pythonで使う
python -m pip install huggingface_hub
hf download ayousanz/ralomi --local-dir ralomi-model
python -m pip install -r ralomi-model/requirements.txt
python ralomi-model/inference.py --model-directory ralomi-model sample.wav
Python版は8〜192kHzのモノラル/ステレオ音声を16kHzへ変換します。長い音声は15秒以内の発話単位に分割してください。
ESP32-S3(M5Stack CoreS3)で使う
M5Stack CoreS3に1ファイルを書き込むと、画面をタッチして4秒話すだけで、ひらがなが画面に表示されます。PCやネットワークは不要です。
python -m pip install esptool huggingface_hub
hf download ayousanz/ralomi esp32s3/ralomi_cores3_w16a16_stream100.bin --local-dir .
esptool --chip esp32s3 --port COM3 --baud 921600 write-flash 0x0 esp32s3/ralomi_cores3_w16a16_stream100.bin
COM3は接続したポートに置き換えてください。書き込むとボードのflash全体が上書きされます。ESP-PPQで16bit量子化(W16A16)したモデルは、Common Voice 8.0・ReazonSpeech各300件でFP32との差が0.5ポイント以内でした。音声を1秒ずつ区切って録音しながら認識するため、話し終えてから約0.5秒で結果が出ます。8bit量子化(W8A8・W8A16)は精度が大きく下がるため採用していません。
モデル(.espdl)、firmwareのソースとビルド方法、同梱ソフトウェアのライセンスはesp32s3/にあります。
評価と制限
| 評価集合 | Kana CER(低いほど良い) |
|---|---|
| Validation(1,319件) | 21.03% |
| Clean開発診断(316件) | 25.28% |
正規化ひらがなの文字誤り率です。Cleanは開発用の評価で、独立した最終testではありません。
ライセンス・出典
モデルの重みと推論コードはApache-2.0です。NOTICEも参照してください。