Description
Environment:
OS: Debian 12 (Bookworm), x86_64
Python: 3.11 (System default via Debian Bookworm)
Installation Method: pip within a standard venv
wyoming-openwakeword: 1.8.2 (latest on PyPI)
wyoming: 1.2.0 (as required by wyoming-openwakeword==1.8.2)
(Attempted) wyoming-satellite: 1.8.0 (latest on PyPI)
Problem Description:
I'm trying to set up a voice satellite on my Debian host machine to connect to Home Assistant (running in a KVM VM on the same host). I encountered two main issues:
1. Dependency Conflict with wyoming-satellite:
When trying to install the latest versions of both wyoming-satellite and wyoming-openwakeword together, pip fails with a ResolutionImpossible error.
Bash:
wyoming-satellite==1.8.0 requires wyoming==1.4.1.
wyoming-openwakeword==1.8.2 requires wyoming==1.2.0. This makes it impossible to install both latest versions in the same environment currently. Attempts to find compatible older versions via pinning were also unsuccessful.
2. Error Running wyoming-openwakeword as Standalone Client:
As a workaround for the dependency conflict, I tried running wyoming-openwakeword directly, intending for it to connect to my Home Assistant Wyoming integration as a client:
Bash
Environment contains wyoming==1.2.0 and wyoming-openwakeword==1.8.2
python -m wyoming_openwakeword
--uri 'tcp://<HA_VM_IP>:10700'
--model '/path/to/ok_nabu.onnx'
--debug
This fails with the following traceback and error:
INFO:root:Ready
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "/home/brian/wyoming-env/lib/python3.11/site-packages/wyoming_openwakeword/main.py", line 129, in
run()
File "/home/brian/wyoming-env/lib/python3.11/site-packages/wyoming_openwakeword/main.py", line 124, in run
asyncio.run(main())
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/brian/wyoming-env/lib/python3.11/site-packages/wyoming_openwakeword/main.py", line 99, in main
server = AsyncServer.from_uri(args.uri)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/brian/wyoming-env/lib/python3.11/site-packages/wyoming/server.py", line 74, in from_uri
raise ValueError("Only 'stdio://', 'unix://', or 'tcp://' are supported")
ValueError: Only 'stdio://', 'unix://', or 'tcp://' are supported
It appears the AsyncServer.from_uri code path used here interprets the --uri tcp://... argument as an address to bind to (like a server), rather than an address to connect to (like a client sending events to HA). This prevents using wyoming-openwakeword directly as a standalone satellite client connecting outwards via TCP.
Desired Outcome:
Ideally, users should be able to either:
a) Install wyoming-satellite and wyoming-openwakeword together using compatible versions from PyPI.
b) Run wyoming-openwakeword directly (python -m ...) as a satellite client that successfully connects out to a specified Home Assistant Wyoming URI (e.g., tcp://...).
Could you please advise if there's a known workaround for the dependency conflict, or if the main script for wyoming-openwakeword could be adjusted to support acting as an outbound client using the --uri parameter?