- Google Homeから離れ、Home Assistantベースの完全ローカル音声アシスタントを構築した過程を段階的に整理した事例
- llama.cppとlocal-first構成を使い、クラウド依存なしで高速応答とプライバシー保護を実現
- さまざまなGPU・モデル・STT・TTSの組み合わせを試し、性能と品質を比較して最適構成を導出
- プロンプト設計と自動化スクリプトにより、天気・検索・音楽再生など実生活の機能を実装
- 結果として、プライバシーを保証しつつ信頼性の高いローカル音声アシスタント環境を完成
ハードウェア構成
- Home AssistantはUnRaid NASで動作し、音声サーバーにはUSB4対応Beelink MiniPCとeGPUエンクロージャを使用
- GPUはRTX 3050〜3090、RX 7900XTXなど複数モデルをテスト
- RTX 3090とRX 7900XTXは1〜2秒応答、RTX 3050は約3秒応答
- 音声ハードウェアはHA Voice Preview Satellite、Satellite1 Small Squircle Enclosure 2台、Pixel 7aで構成
モデルと性能
- GGML GPT-OSS:20B、Unsloth Qwen3シリーズ、**GLM 4.7 Flash (30B)**など複数モデルをテスト
- すべてのモデルが基本的な**ツール呼び出し(tool calling)**機能をサポート
- 評価項目は複数デバイス制御、文脈理解、誤認識コマンド処理、誤った入力を無視する能力などで構成
音声サーバーソフトウェア
- モデル実行基盤としてはllama.cppを推奨
- 音声入力(STT)
- Wyoming ONNX ASR (Nvidia Parakeet V2, OpenVINO branch): CPU推論時間は約0.3秒
- Rhasspy Faster Whisper: ONNXのCPUベースで比較的遅い
- 音声出力(TTS)
- Kokoro TTS: 複数の音声組み合わせが可能で、テキスト処理が優秀
- Piper (CPU): 多様な音声をサポートするが、数字・住所の処理は弱い
- Home Assistant LLM統合
- LLM Conversation: 基本的な会話品質を改善
- LLM Intents: Web検索、場所検索、天気予報などのツールを提供
Google Assistantからローカルアシスタントへの移行
- Google Assistantは徐々に応答精度と機能が低下しており、代替の必要性を認識
- プライバシー問題とクラウド障害時に制御できない問題も主な移行要因
初期の試行とモデル改善
- 当初はOllamaの基本モデルを使っていたが、ツール呼び出しの失敗が頻発
- HuggingFaceのGGUF高精度モデルを使うことで性能が大きく向上
- Wi‑Fiの不安定さにより音声出力を途切れなく処理するため、ストリーミング設定と専用IoTネットワークを構築
機能拡張とLLMプロンプト設計
- 音声アシスタントが天気、営業時間、一般知識、音楽再生を行えるよう構成
- llm-intents統合で機能を拡張したが、初期結果は限定的
- プロンプト設計が重要な要素として作用
- サービスごとの
#セクションと具体的な指示リストを追加し、LLMのツール呼び出し精度を向上
- 不要な感嘆文や絵文字を除去して、TTSに適した応答形式を確保
- ChatGPTを活用して反復的にプロンプトを改善
自動化による問題解決
- 音楽再生機能はLLMが直接実行できなかったため、Home Assistantの自動化スクリプトで補完
- “Play {music}”コマンドをトリガーに、要求した衛星デバイスに対応するmedia_playerで音楽を再生
- “Stop playing”コマンドで停止可能
- その後のアップデートでLLMが自然に音楽検索・再生を行えるようになったが、自動化は依然として有用なアプローチ
カスタムウェイクワード学習
- 既定のウェイクワードの代わりに**“Hey Robot”**を使用
- microWakeWord-Trainer-Nvidia-Dockerで約30分学習
- 誤検出率はGoogle Home並みで、自動ミュート機能で改善可能
最終結果
- 一般ユーザーにはやや複雑だが、細かな調整が可能なローカル音声アシスタント環境を完成
- プライバシー保護、安定した制御、ユーザーに合わせた性能調整が可能
- 完全なクラウド独立型音声アシスタントとして信頼性と楽しさの両方を確保
まだコメントはありません。