Yamawine’s blog

ホームオートメーション奮闘記

miniPCでHome AssistantをAI化するプロジェクトの総括

昨年12月に買ったminiPC(Ryzen 7 6800H、8コア(16 H/Wスレッド)、メモリ16GB、SSD 512GB)でHome Assistant(HA)とAIに関わるおよそ全てを動かしています。以下、16H/Wスレッドの割り振りです。

  • HA(+ VOICEVOX addon):2 H/Wスレッド(VM)
  • Frigate:6 H/Wスレッド(コンテナ)
  • Ollama:6 H/Wスレッド(コンテナ)
  • Wyoming系:2 H/Wスレッド(コンテナ)

PROXMOXで見る限りminiPC全体でのCPUの稼働率は概ね10%を切っています。メモリの使用率はおよそ80%、ディスクの使用率はおよそ90%です。このように書くともうパンパンな状態のように見えますが、各コンテナへのメモリやディスクの割り当てを適当にやっていたので、見直せばもう少し余裕が出ると思います。

Frigateは風が強い日など、動きがある時には負荷が高くなる傾向にありますが、それでもコンテナでのCPU負荷は20-30%程度です。OllamaやWyoming系(Wyoming-satellite、wake word検出のPorcupine、Wyoming-fatser-whisper)は音声アシスタントが動けばCPU稼働率は100%に跳ね上がりますが、瞬間的で、ほとんどの時間はアイドル状態です。Wyoming-satelliteは常時マイクからの入力を受け付けているはずですし、Porcupineもwake wordの検出で常時動いているはずなのですが、CPU稼働率を見る限りたいした負荷ではありません。まあFrigate(カメラ3台)による画像処理(+簡単な画像認識)に比べればそんなものなのかもしれません。
VOICEVOXは当初からHAにインテグレーションとaddon(現在ではApp)を入れていたので、HAと同居しています。これもText-to-Speechが始まるとCPUをほぼ100%使いますが、これも瞬間的なので平均で見ればたいしたことはないです。VOICEVOXインテグレーションは、今回のAI導入でVOICEVOXエンジン(addon)を直接叩くようになって、現在使っていません。

音声アシスタントが始まると、Wyoming系→Ollama→VOICEVOXと負荷が移っていくのですが、文単位でのパイプライン処理があるので、OllamaとVICEVOXの負荷ピークはある程度重なっています。またWyoming系が走っているコンテナでパイプラインの制御をしています。Ollamaの挙動をLinuxのtopコマンドで観察してみると、最初は全CPUがフル稼働するのですが、応答文章が出始めると稼働率はかなり落ち着くようです。なので、実質的にはOllamaとVOICEVOXの負荷はほぼ重なっていないとみて良いでしょう。

このminiPCも簡易UPSとしているポータブル電源に繋いでいるのですが、そこで目視による計測では20ワット程度の消費電力です。現在の使用状況でファンがうるさく回るようなことはありません。

音声アシスタントの実行時間をオートメーションのtrace timelineを使って簡単に測ってみました。Speech-to-Textからの文字列を受け取ってから、全部をWAVに変換し、MPDのプレイリストに入れるまでの時間です。なので、このオートメーション終了後も発話は続きます。

  • 定型文句の場合(AIなし)で約10秒
  • ローカルAIで定型文句を選別した場合(clsのみ)で約18秒
  • ローカルAIでチャットした場合で約12秒
  • Geminiに教えてもらった場合で約4秒

なぜかローカルAIのチャットよりも定型文句を選別した方が長い時間かかってしまいました。計測は1回だけなのでばらつきのせいかもしれません。一方、クラウドGeminiは流石に早いです。これらの時間にはSpeech-to-Textの時間は含まれていませんが、応答音声の出始めはパイプライン処理のおかげでこの時間よりも早いため、差し引きこれらの時間がほぼ応答開始時間と考えて良いかと思います。全般的に、20秒程度の応答時間なので、まあ早くはないですが、耐えられない程遅くはないです。とはいえ、家人はわざわざアレクサと比べて「アレクサは早いねぇ」なんて言ったりするのです。悔しー!

これでアレクサはお役御免になるかとも思ったりするのですが、キッチンにあるアレクサはキッチンタイマーとして重宝してますし、朝はニュースを流しています。アレクサのタイマー機能はなかなか優れもので、キャンセル、延長、繰り返しなどができるようになってますし、チャッピー君よりも応答が早いので、秒単位のタイマー設定も可能です。なので、当分はチャッピー君とアレクサの両方を使い続けていくことになります。

このAIプロジェクトを始める前は、HA用のダッシュボードディスプレイが欲しいとずーっと考えていたのですが、このAIが出来上がると、別にダッシュボードなくても良いかな、と思うようになりました。なぜなんでしょう?それより、別途追加のサテライトを購入し、別な部屋からも音声アシスタントが使えるようにしたいと思うようになりました。

現在はHAのセンサーの値、天気予報、カレンダーの予定などを音声アシスタントで問い合わせるているだけです。エアコンやテレビのコントロールもやればできるのですが、誤動作が怖くてあえてやっていません。ChatGPTに「HAでライトとかカーテンを音声で動かしている動画がYouTubeにいっぱいあるけど、誤動作しないの?」と聞いたら「誤動作した動画は上げてないだけ」との答えが返ってきました。続けて「誤動作を予防して機器を安全にコントロールする良い方法はある?」と聞いたら、1)「本当にXXの電源を入れますか?」と復唱してyes/noを聞く、2) 復唱まで同じだけどyes/noだと不安なので全く関係ない合言葉、例えば「テレビの電源をONにしたいなら『みかん』と言ってください」とする、3) 毎回スマホからyes/noを入力する、という3つの方法が提案されました。どれもイマイチです。特に最後のスマホによる確認方法ですが、そんなことをするのなら、最初からスマホのHAコンパニオンアプリから直接制御した方がよっぽど簡単で早いですし、間違いもありません。結局、機器のコントロールは諦めました。

現在AIは大流行で、社会にも大きな影響を与えています。ChatGPTやGeminiに代表されるクラウドAIは今後も発展、普及するでしょう。同時に、エッジ/ローカルAIもどんどん発展/普及するものと思われます。今私が使っているようなPCよりもっとコスパに優れてローカルAIに向いたPCが入手できるようになるでしょうし、AIモデルももっと性能の良いものが出てくるでしょう。そして家電等への組み込みも進むでしょう。果たして私が作り上げたこのAI環境は後何年ぐらい使えるのでしょうか。買い換える時にはもっと簡単でコスパの良い環境が構築できるようになっていて欲しいなぁー。