複数ウェイクワードを1つのモデルで
ほとんどのウェイクワードエンジンは「1モデル=1ワード」を前提にしています。しかしウェイクワードはコマンドとは違います。ウェイクワードとは、デバイスが「名前を呼ばれた」と応答するためのもの。そして名前は人それぞれ——だからこそ、実際の製品では複数必要になります。
製品に複数ウェイクワードが必要な理由
- 家族ごとに呼び方が違う。父は「ネコちゃん」、子どもは別の呼び方——両方を1つのモデルに入れておけば、呼んだ人に応答できます。ウェイクワードを取り合いません。
- 1ファームウェアで複数SKU。同じハード、3つのブランド名、3つのウェイクワード。マルチワードモデルなら製品ライン全てが1つのファームウェアイメージを共有できます。
- ワード変更に再書き込み不要。従来のオフライン方式では、ワード1つ変えるだけでもファーム更新、場合によっては工場返送が必要です。マルチワードモデルなら設定1行の変更で切替できます。
- 呼ばれ方のバリエーション全て。同じ名前でも「〜さん」「おい、〜」など呼び方は様々。バリエーションを全てモデルに入れておけば、どう呼ばれても応答します。
1モデル vs モデルの山
| ワードごとに1モデル | マルチワード1モデル | |
|---|---|---|
| デプロイファイル | N個のONNX | 1個のONNX |
| 10ワード時のサイズ | 約1.28MB | 167KB |
| フレームごとの推論 | N回 | 1回で全結果 |
| ワード間の誤認識 | 制約なし、混同しやすい | 共学習で自然に分離 |
| ウェイクワード切替 | モデルファイル差し替え | 設定1行 |
ウェイクワードの切替は設定編集だけ
マルチワードモデルには model_info.json が付属し、各フレーズが1エントリになります:
{
"model_type": "dscnn",
"mel_time": 98,
"multi_model": true,
"models": [
{"wake_word": "ネコちゃん", "model_file": "nekochan.onnx", "cons_frames": 2},
{"wake_word": "おきろ", "model_file": "okiro.onnx", "cons_frames": 2}
]
}
デフォルトではリストされた全ワードを監視します。エントリを削除すればそのワードは無効に——再学習もファーム変更も不要です。これが「1モデル複数ワード」の実用的な価値です。ウェイクワードを変える自由が、工場ではなくあなたの手に残ります。
誤検知はどうする?
ワードが増えるほど誤検知の面も広がります。守りは2層です:
- 学習側:全ウェイクワードが1つのモデル内で共学習され、各ワードが他のワードの負例として機能するため、ワード間がきれいに分離します。R1誤検知最適化を1回行うだけで、毎時数百回の誤検知が1桁まで減少(平均約95%削減)した実測があります。
- 推論側:オープンソースのランタイムには、切替可能な5層の誤検知防止機構(連続フレームフィルタ、クールダウン、エネルギー跳変ゲートなど)が組み込まれています。
マルチウェイクワードが合うシーン
| シーン | ウェイクワード例 | ワード数 |
|---|---|---|
| スマートスピーカー / 家庭 | 家族ごとの呼び方 | 2〜4 |
| 複数SKU製品ライン | 型番ごとのブランドワード | 3〜6 |
| 玩具 / 教育ハード | キャラ名 + ニックネーム | 3〜8 |
| 車載 | ブランドワード(2言語) | 2〜4 |
| ロボット | 名前 + 名前の繰り返し | 2〜5 |
モデルの入手方法
Voicute でマルチキーワードプランを選び、ウェイクワードをカンマ区切りで入力します。プラットフォームが学習用音声を自動合成し、約15〜25分でONNXモデルを届けます。2〜10ワードを1モデルに。料金は語数ごとの段階制:3語 $85、5語 $99、8語 $125、10語 $149。支払いは1回、デプロイ台数は無制限です。
モデルは標準ONNX形式。オープンソースの onnx-wakeword ランタイム で、Android / Linux / Windows / Web / ESP32 上で完全オフライン動作します。「再生」「停止」など動作コマンドが必要な場合は マルチキーワードWake Word検出(英語) を参照してください。
マルチウェイクワードモデルを作成 →