Home Assistant Voice Previewは使い物にならない代物だ
原文は Shawn Wang により に公開されました。 このブログを購読する
最近、Home Assistant Voiceを手に入れた。プログラム可能なAlexaとして試すのがすごく楽しみだった。
最初の問題——HA Voiceは単体で動かない。別にHome Assistantのインスタンスが必要になる。
まあいい。多少は技術に詳しいし、何とかなるだろう。HAのインストール手順を見に行った。
Home Assistantの問題
最初にやることはHome Assistant Greenを売りつけようとしてくること。まあ、商売だからいいけど、興味はない。稼げるうちに稼げよ、って感じだ。
ところで購入ボタンが今動いてないぞ、直した方がいいんじゃないか。
Raspberry Piが届くのを待つ気にもならないので、スクロールを続けた。Macなら4台くらい転がってる。これが使えないか? お、Mac用のガイドがあるじゃないか!
MacでHome Assistant
最初に言われるのは「適切なイメージ」をダウンロードしろということ。なんでDockerイメージじゃないんだ? あるいはマウントできる何かとか。なのに必要なのはVMとかいう謎のもの? ふざけんな、後で調べることにした。(後になってVirtualBoxがVMハイパーバイザーの一種だと知ったが、当時は知らなかった。VirtualBoxのダウンロード手順くらい書いておいてくれても……)
オープンソースなんだろ? ソースから直接動かせないのか? Home Assistant Coreという別のエディションがあるみたいだ。いいね。
ん? 新しいMacにはもうapt-getなんてないんだが。
まあいい、brewを使おう。インストールはうまくいった。よし。
次のステップ:アカウントを作成する。
はぁ? これLinux用のガイドだろ? 誰かMac用にカスタマイズしたのかよ?
ていうか、全部Linux前提の書き方じゃないか。
こんなのクソくらえだ。
次にこれを試した:uvをインストール済みの場合:
# be in some folder you like
uv venv
uv pip install homeassistant==2025.1.2 --prerelease=allow
uv run hass最初にビルドしようとしたときにハマった。どうやら「sudo softwareupdate --install "Command Line Tools for Xcode-16.2"」を実行する必要があるらしい。そうしないとこのエラーが出る
Unable to find configuration. Creating default one in /Users/shawnwang/.homeassistant
2025-01-19 16:33:27.267 WARNING (MainThread) [aiohttp_fast_zlib] zlib_ng and isal are not available, falling back to zlib, performance will be degraded.
2025-01-19 16:33:36.677 ERROR (SyncWorker_4) [homeassistant.util.package] Unable to install package pyspeex-noise==1.0.2: × Failed to download and build `pyspeex-noise==1.0.2`
╰─▶ Build backend failed to build wheel through `build_wheel` (exit status: 1)
[stdout]
running bdist_wheel
running build
running build_py
building 'speex_noise_cpp' extension
clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 ...
[stderr]
/Users/shawnwang/.cache/uv/sdists-v6/pypi/pyspeex-noise/1.0.2/OiKAa5C3V4L1j77Pq6j5d/src/speex/preprocess.cc:921:14: warning: code will never be executed [-Wunreachable-code]
Compiling with an SDK that doesn't seem to exist: /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk
Please check your Xcode installation
clang++: warning: no such sysroot directory: '/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk'
ld: library 'c++' not found
clang++: error: linker command failed with exit code 1
error: command '/usr/bin/clang++' failed with exit code 1
2025-01-19 16:34:07.135 ERROR (MainThread) [homeassistant.setup] Setup failed for 'cloud': Requirements for assist_pipeline not found: ['pyspeex-noise==1.0.2'].
2025-01-19 16:34:19.493 ERROR (MainThread) [homeassistant.setup] Error during setup of component conversation
Traceback (most recent call last):
File "/Users/shawnwang/Desktop/Work/homeassistant/.venv/lib/python3.12/site-packages/homeassistant/setup.py", line 416, in _async_setup_component
result = await task
File "/Users/shawnwang/Desktop/Work/homeassistant/.venv/lib/python3.12/site-packages/homeassistant/components/conversation/__init__.py", line 246, in async_setup
from homeassistant.components.assist_pipeline import ( # pylint: disable=import-outside-toplevel
File "/Users/shawnwang/Desktop/Work/homeassistant/.venv/lib/python3.12/site-packages/homeassistant/components/assist_pipeline/pipeline.py", line 55, in <module>
from .audio_enhancer import AudioEnhancer, EnhancedAudioChunk, MicroVadSpeexEnhancer
File "/Users/shawnwang/Desktop/Work/homeassistant/.venv/lib/python3.12/site-packages/homeassistant/components/assist_pipeline/audio_enhancer.py", line 8, in <module>
from pyspeex_noise import AudioProcessor
ModuleNotFoundError: No module named 'pyspeex_noise'
2025-01-19 16:34:19.497 ERROR (MainThread) [homeassistant.setup] Unable to set up dependencies of 'assist_pipeline'. Setup failed for dependencies: ['conversation']
2025-01-19 16:34:19.497 ERROR (MainThread) [homeassistant.setup] Setup failed for 'assist_pipeline': Could not setup dependencies: conversation
2025-01-19 16:34:19.886 ERROR (MainThread) [homeassistant.setup] Setup failed for 'mobile_app': Requirements for assist_pipeline not found: ['pyspeex-noise==1.0.2'].
2025-01-19 16:34:19.886 ERROR (MainThread) [homeassistant.setup] Unable to set up dependencies of 'default_config'. Setup failed for dependencies: ['assist_pipeline', 'cloud', 'conversation', 'mobile_app']
2025-01-19 16:34:19.886 ERROR (MainThread) [homeassistant.setup] Setup failed for 'default_config': Could not setup dependencies: assist_pipeline, cloud, conversation, mobile_app
2025-01-19 16:34:19.887 WARNING (MainThread) [homeassistant.bootstrap] Support for the running Python version 3.12.7 is deprecated and will be removed in Home Assistant 2025.2; Please upgrade Python to 3.13これでかなり先までは進めた。でもHAの依存関係のせいで、結局先に進めなかった:
なのでそこで中断。ローカルインストールはいつもの行き止まりにハマったので、VM方式に戻ることにした(クソみたいなXcodeだけは意地でも入れたくない)。
Oracle VirtualBox
Oracleのサイトに行って気分が良くなるやつなんていない。VirtualBoxをインストールして、さっきダウンロードした.vdiファイルをダブルクリックしても……何も起きない
もちろんHAのページにある手順は
VirtualBoxの設定画面とは全く関係がない
ググってやっと、vdiファイルを読み込むのはここだと分かった
ネットワーク設定も必要だ
そして(画面収録とかの権限周りのダンスをこなした後)ようやく起動した:
しかし、http://homeassistant.local:8123/にアクセスしても何も起きない。電源を切ろうとしても……案の定レインボーカーソルがくるくる回るだけだ。
再起動。
ともかく、デフォルトのvdiにはよく知られたバグがある上に、読み込むはずの\EFI\BOOT\BOOTx64.efiファイル自体がそもそも入っていないことが分かった。ダウンロードできるものをここで見つけて、共有フォルダ経由でVMにインポートできることを知った。
これで少しは進展があったが……
それでも行き止まりだった。
もう少しググってこれらを見つけた:https://community.home-assistant.io/t/unable-to-boot-home-assistant-in-virtual-machine-starup-nsh-error/220267/27?page=2
DockerでHome Assistant
たまたま見かけたコメントのおかげで、このクソのためにDockerコンテナがあるかもしれないと分かった。Linuxのドキュメントの中に埋もれてたので、やってみることにした……
これでついに動いた!!
モバイルアプリをHAサーバーに接続する
https://voice-pe.home-assistant.io/getting-started/によると、HA Voiceを見つけるにはモバイルアプリを使う必要があるらしい。
もちろんネットワークが勝手に繋がる前提で書いてあるが、当然ながらクソみたいに全然繋がらない
もちろんここでNabu Cloudを売りつけてくる。
ngrokでトンネルを張ってみたが、400 Bad Requestエラーが連発するだけだった。仕方なくNabu Cloudに登録したが、全然気分は良くない。むしろ全部投げ捨てて火でもつけたくなってきた。
このリモートアクセスが有効になるのを待ってから、リンク(そう、あのUIのリンク)をコピーしてスマホに貼り付けろ
成功すればこう表示されるはずだ
そしていよいよ音声へ
https://voice-pe.home-assistant.io/getting-started/に戻る
幸い、ここは謳い文句通りに動いた。
「認証」を求められたら、写真の通りにボタンを押せという意味だ
そこでこれにぶち当たる https://github.com/esphome/home-assistant-voice-pe/issues/265
クソ。
でもそれは失敗だった。デバイスのWLAN IPを入力しなければならない。手動で別に指定していなければ、デバイスのポートは自動的に6052になる。
Vibhuに頼んでルーターのログを見てもらい、接続されたHA VoiceのIPを確認した。192.168.x.xのIPでポートは6053だった(コメントで言われてた6052じゃない)。それをESPHomeに打ち込んだら、2回目でうまくいった。
それからセットアップウィザードを進めた……が、もちろんこれで問題が終わるわけがなかった。
https://github.com/esphome/home-assistant-voice-pe/issues/288
この手順が一番直接関係ありそうだった https://community.home-assistant.io/t/home-assistant-voice-pe-tls-certificate-verification-failed/815768/3
そして1時間ほど試した末、諦めた。
記事をランダムに読む
コメント
ログインしてコメントする