Skip to content

Dependency Conflict with wyoming-satellite & Error Running Standalone Client via --uri on Python 3.11 #42

Open
@stc-dayman

Description

@stc-dayman

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions