OHF-Voice/wyoming
Peer-to-peer protocol for voice assistants
Wyoming プロトコル – 音声アシスタントコンポーネント向けの軽量でオープンソースなワイヤーフォーマット
概要 – JSON-lines 制御メッセージと生の PCM オーディオをやり取りする、TCP ベースの小さなプロトコルです。Home Assistant サーバーが、マイク入力、ウェイクワード検出、音声認識、テキスト読み上げ、インテント解析などを処理する別々のプログラムと通信できるようにします。
重要性 – メッセージレイアウト(1行の JSON ヘッダー、その後にオプションの UTF-8 データとバイナリペイロード)を標準化することで、統合コードを書き直すことなく各コンポーネントを交換できます。このプロトコルは意図的に認証なし・暗号化なしで設計されているため、信頼できるローカルネットワーク上でのみ安全です。これは、ほとんどのスマートホームハブが動作する環境とまさに一致します。
主要な概念
- ヘッダー –
type、オプションのdata、および長さフィールド(data_length、payload_length)。 - ペイロード – 通常は PCM オーディオですが、任意のバイナリデータが許可されます。
- イベントフロー – クライアントは
describeリクエストを送信し、利用可能なサービスを説明するinfoレスポンスを受信し、オプションでselect-programでプログラムを選択し、その後、ドメイン固有のイベント(transcribe、synthesize、detectなど)を交換します。
主要なイベントファミリー
- オーディオ –
audio-start/stopとaudio-chunkで生のオーディオをストリーミングします。 - 音声認識 –
transcribe→transcript(またはストリーミングtranscript-start/chunk/stop)。 - テキスト読み上げ –
synthesize→ オーディオストリーム(またはストリーミングsynthesize-start/chunk/stop)。 - ウェイクワード –
detect→detection/not-detected。 - インテント処理 –
recognize→intent(または複数のインテント用にintents-start/stop)と、実行結果用のhandled/not-handled。 - サテライト制御 – リモート音声サテライトデバイス用のイベント(
run-satellite、run-pipelineなど)。
使用方法 – Home Assistant には組み込みの統合(wyoming)が含まれており、別々のプログラム(例:ASR 用の wyoming-faster-whisper、TTS 用の wyoming-piper)と通信します。これらの各プログラムは同じプロトコルを実装しているため、モデルとバックエンドを簡単に組み合わせて使用できます。
セキュリティに関する注意 – 暗号化や認証はありません。LAN 内またはコンテナネットワーク内に留めてください。リポジトリには、脅威モデルを説明する SECURITY.md へのリンクがあります。
関連プロジェクト – README には、すべて Wyoming を話すコンパニオン実装(マイク、VAD、Whisper、Piper など)のコレクションがリストされています。
結論 – Wyoming は、Home Assistant や類似のエコシステムでモジュール式で交換可能な音声アシスタントサービスを可能にする、オープンスタンダードで低オーバーヘッドなプロトコルです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト