ローカル音声認識・音声合成
最終更新
Home Assistantの音声サテライト:家の中だけで聞いて答えるローカル音声構成
コマンドだけを理解するモデルは1秒未満、すべてを文字起こしするモデルは機器によって8秒かかります。
Assistの音声往復はウェイクワード、文字起こし、処理、合成の4段階です。文字起こしエンジンの選択が体感遅延を最も大きく変え、合成はPiperが担います。サテライトの配置と遅延を抑える条件を順に扱います。
サテライトは音だけをやり取りします
音声サテライトはマイクで音を受け、スピーカーで答えを出す機器です。ウェイクワードを自分で検知してHome Assistantへの接続を開き、音声をストリームで送ります。判断と保存はHome Assistantが行い、サテライトは音だけをやり取りします。
そのため、サテライトを複数置いてもパイプライン1は1つで動きます。部屋ごとにサテライトを置き、同じ文字起こし・合成サービスを共有すれば、部屋を移っても同じように話せます。

文字起こしエンジンを選ぶ基準
Home Assistantが用意するローカル文字起こしは2つです。コマンドだけを理解するSpeech-to-Phraseと、すべてを文字起こしするWhisperです。速度と範囲が正反対に分かれます。
家の操作だけならSpeech-to-Phraseが有利です。リストにない文は理解できませんが、GreenやPi 4でも1秒未満で終わります。逆に書き起こした文を他の用途に使うならWhisperが必要で、その分速い機器が要ります。
左右にスクロールして各項目を比較できます。
| エンジン | 転写の遅延 | 理解できる範囲 | 向く機器 |
|---|---|---|---|
| Speech-to-Phrase | 1秒未満(Green・Pi 4) | 家の操作コマンド中心。リストやタイマー名のような自由な文は制限 | Green・Pi 4 |
| Whisper | Pi 4で約8秒、NUCで1秒未満 | 自由な文の転写、他アプリへの文字渡し | Intel NUC・ミニPC・Mac |
声はPiperが作ります
合成はPiperが担います。Pi 4でも1秒で1.6秒分の音声を作るローカルなニューラル音声合成です。答えが短ければ合成時間も短く、音声の往復で占める割合は大きくありません。
声の品質は言語とモデルで大きく変わります。韓国語なら韓国語のモデルを選び、同じ文を何度か聞いて発音と速さを確認します。
導入手順
1)Home AssistantにWhisperとPiperのアプリを入れます。2)Wyoming2連携がサービスを自動で見つけます。見つからない場合はアドレスとポートを手入力します。3)音声アシスタントで新しいパイプラインを作り、ウェイクワード、文字起こし、合成、会話エージェントを選びます。
4)サテライトを追加し、そのパイプラインを指定します。5)照明を1つ音声で点けて、応答時間と聞き間違えた文を記録します。アプリを別の機器に入れたなら、Wyoming連携にその機器のアドレスを入れます。

遅延を減らす条件
最大の変数は文字起こしの機器です。Pi 4で8秒かかった転写がIntel NUCでは1秒未満になります。サテライトとHome Assistantを有線でつなぎ、文字起こしサーバーも同じスイッチに置くとネットワーク待ちが減ります。
会話モデルを足すとモデル応答時間が加わります。短く答えるよう指示し、モデルを文字起こしサーバーと同じ機器に置くと往復が1回減ります。
限界と確認
Speech-to-Phraseはリストにない言葉を理解できません。買い物リストへの追加やタイマーへの名前付けにはWhisperが必要です。逆にWhisperだけだと、遅い機器では8秒待つことになります。
韓国語の品質はモデルごとに違うので、同じ文を3回言って聞き間違いが多いならモデルを替えるほうが早いです。クラウド音声で一時的に動かして差を比べるのも手です。

用語の注釈
よくある質問
- この記事で最初に確認すべきことは何ですか?
- Assistの音声往復はウェイクワード、文字起こし、処理、合成の4段階です。文字起こしエンジンの選択が体感遅延を最も大きく変え、合成はPiperが担います。サテライトの配置と遅延を抑える条件を順に扱います。
