エッジAIラボ
エッジAIラボ
実測カルテ③・自作モデル vs 汎用モデル

自作の軽量キーワード分類器とwhisper-baseの比較

呼称パターンだけを判定する専用の小型分類器を自作し、whisper-baseと同じ試験セットで比較しました。速度は圧倒的ですが、学習データの話者数が実用の壁になりました。

① 検証課題

決まった呼称パターンだけを判定する専用の軽量分類器(Keyword Spotting/KWS)を自作した場合、実測カルテ②のwhisper-base(オープン語彙の汎用ASR)と比べて、速度・精度はどう変わるか。

② 環境

  • モデル構成: 対数メルスペクトログラム入力のCNN分類器(クラス分類。自由なテキスト生成はしません)
  • 学習データ: edge-tts合成音声2話者分(呼称フレーズ+「その他」クラス)のみ
  • 話者ホールドアウト: 評価に使うja-JP-KeitaNeural(Keita、呼称フレーズ15試行)は学習に含めず、未学習話者として評価
  • 実行方式: ONNX Runtime Web(ブラウザ内、CPU実行)
  • 実行日: 2026-07-17
  • CPU・GPU・OS: 実行環境のCPU型番・GPUモデル・OSはハーネスのログに記録なしです。
  • 音声条件・試験セット: 実測カルテ①②と同一。静音/SNR10dB/SNR5dBの3条件、各条件20発話(呼称10種+雑談10種を話者2種=Keita/Nanamiに配分)、3条件合計60発話
  • 特徴量の実装: 学習(Python)と推論(ブラウザJS)で対数メル特徴量の実装を別々に用意

③ 判定基準(事前に置いた基準)

実測カルテ①②と同一の基準(測定スクリプトのdocstringに明記)。

実測カルテ③の判定基準一覧
指標基準
recall(静音)90%以上
recall(雑音下: SNR10dB・SNR5dB)80%以上
誤受理率5%以下
p95レイテンシ2500ms以下

④ 結果(実測値)

ミリ秒の実測値は小数点以下を四捨五入して表記します(本ページ・関連カルテ共通の丸め規則)。

モデル規模と推論速度

自作KWSとwhisper-baseのモデル規模・推論速度比較
項目自作KWSwhisper-base(参考・カルテ②)
パラメータ数約18.6万(185,723)未測定
モデルファイルサイズ(ONNX単体)約0.74MiB(777,064バイト)未測定
推論レイテンシ p507.6ms1466ms(WebGPU)/2662ms(CPU)
p95レイテンシ(全体)9.1ms1606ms(WebGPU)/3027ms(CPU)

モデルファイルサイズはONNX単体の値です(参考: 同じ自作モデルをWASMランタイム込みでダウンロードした場合の合計は、指差呼称チェッカーのデモページで約3.7MiBと実測しています)。 推論速度は自作KWSが2桁以上高速です(p50で約190〜350倍)。一方でモデルの「賢さ」は下記の精度実測で明暗が分かれました。

精度:話者を変えると成立しない

自作KWSの条件別recall・誤受理率
条件recall(基準90%/80%)誤受理率(基準5%以下)
静音70%(未達)40%(未達)
SNR10dB70%(未達)50%(未達)
SNR5dB70%(未達)60%(未達)
話者別recall(静音〜SNR5dB込み・全条件合算)
話者(全条件合算)recall
学習話者(Nanami)100%
未学習話者(Keita・15試行)40%

誤受理率は全条件で基準(5%以下)を大きく超過。信頼度スコアのしきい値を引き上げても(0.995まで)誤受理率は13.3%までしか下がらず、しきい値調整だけでは解決しませんでした。短い否定サンプルを追加した再学習も試しましたが、誤受理率は40%→50%に悪化しました(出典は⑥参照)。

結論:話者2種類(片方は学習前提の音声)ではデータが根本的に不足

学習話者(Nanami)ではrecall100%と高精度に見えますが、これは「学習に含めた話者を、学習に含めたテキストで当てられる」ことを示しているに過ぎません。未学習話者(Keita・15試行)でのrecall40%が、話者非依存の判定性能の実測値です。ただしこれは1名・15試行のみの実測であり、複数話者での傾向確認ではありません。whisper-baseは今回のedge-tts 2話者(Keita・Nanami)を学習に含んでおらず、大規模な事前学習データのみで学習済みのモデルです。そのため両話者とも「未学習話者」という条件は同じで、その上でrecall100%を達成しています(比較の非対称性は下記⑤参照)。

Python学習実装とJS推論実装の特徴量パリティ

学習(Python)と推論(ブラウザJS)で対数メル特徴量の実装を独立に用意したため、数値的な一致を検証しました。実測は誤差の最大値7.629×10⁻⁶・平均値1.139×10⁻⁷で、学習時と推論時の特徴量は実用上一致していると判断しました。

⑤ この実測から言えないこと

  • 自作KWSとwhisper-baseの比較は対等な条件ではありません。whisper-baseは汎用ASRとして大規模データで事前学習済みのモデルであるのに対し、自作KWSは今回2話者分のみで学習したその場限りのモデルです。
  • 未学習話者recall40%はKeita1名・15試行のみの実測です。「専用の小型分類器は原理的にダメ」という結論ではありませんが、「話者3名以上・実声を含む学習データを用意すれば改善する」という見立ては、この実測が検証したものではなく未検証の仮説です。
  • 推論速度(8ms)はCPU実行での計測です。whisper-base側のWebGPU実測(1.6秒)とは実行方式が異なる比較である点に注意してください。
  • 「その他」クラス(誤受理対策)の学習データも2話者分のみで、短い相槌等のカバーが不十分な可能性があります。
  • この実測は話者非依存性の壁を示すもので、KWS方式そのものの実用可能性を否定するものではありません。

⑥ 再現方法

比較対象のwhisper-base実測は実測カルテ②、指差呼称の記録用途としての実装は指差呼称チェッカーで試せます。

学習データ・学習スクリプト・測定ハーネス・生の実測データは社内の検証用リポジトリに保存済みです(本サイトの公開リポジトリには含まれません)。数値の再検証をご希望の場合はお問い合わせください。

出典(内部データファイル名・参考情報): recall/誤受理率/レイテンシはasr/arm3_score_summary.json。パラメータ数18.6万は学習ログmodel/training_log.jsonのn_params。モデルファイルサイズ777,064バイトはmodel/kws_model.onnxの実測ファイルサイズ。特徴量パリティ誤差はkws/logmel.parity.test.mjsの実行結果。再学習で誤受理率が40%→50%に悪化した記述はkws/kws-data-collection-plan.mdに基づきます。

関連する業務ページ

この実測が、自社の記録用途にそのまま使えるかを先に整理する

この仕組みが自分の現場に要るか、先に整理する

いくつかの質問に答えると、次に試すデモ・追加で確かめること・PoC受入基準のひな型が表示されます。登録は不要で、結果はその場で全部見られます。

意思決定室で整理する(登録不要・約3分)
← 実機ベンチ大全に戻る