Palabra × Wyoming (Home Assistant / Rhasspy)
A Wyoming protocol server exposing Palabra Realtime STT and TTS as a speech provider for Home Assistant voice assistants (and any other Wyoming client, e.g. Rhasspy 3).
- ASR —
transcribe+audio-start/audio-chunk/audio-stop. Audio is forwarded to Palabra as it arrives, at the rate Home Assistant records at (no resampling; other sample widths and channel counts are converted to 16-bit mono).audio-stopsendsfinalize; the final transcript is returned astranscript. - TTS —
synthesize→audio-start,audio-chunk… (pcm_s16le 24 kHz mono, streamed as generated),audio-stop. Home Assistant's streaming synthesis (synthesize-start/synthesize-chunk/synthesize-stop) is supported: completed sentences are synthesized while the LLM is still writing. - Discovery —
describereturns the ASR model (13 languages) and the voices.
Run
pip install wyoming-palabra
export PALABRA_API_KEY=plbr_...
wyoming-palabra --uri tcp://0.0.0.0:10300
docker run -e PALABRA_API_KEY=plbr_... -p 10300:10300 wyoming-palabra
Options: --language (TTS language when the request does not say; default en), --default-voice
(default_low), --voice <id> (repeatable — advertise additional voices, e.g. ones cloned through the
Palabra Voices API), --log-level. Environment equivalents: WYOMING_URI, PALABRA_LANGUAGE,
PALABRA_VOICE_ID, LOG_LEVEL, plus PALABRA_REGION.
Home Assistant
Settings → Devices & services → Add integration → Wyoming Protocol → host and port of the server (10300). Palabra then appears as a Speech-to-text and Text-to-speech engine under Settings → Voice assistants.
Voices are advertised per language as <lang>-<voice> (en-default_low, de-default_high, …) because a
Wyoming synthesize request carries either a voice name or a language, never both. Home Assistant shows
only the voices matching the assistant's language; the server derives the synthesis language from the
chosen voice, falling back to the language of the last transcribe, then --language.
Tests
pip install -e ".[dev]"
pytest -m "not live" # offline: a real Wyoming client against the server with a fake Palabra
PALABRA_API_KEY=plbr_... pytest -m live -s # describe -> synthesize -> transcribe round trip against the API
Status
Checked against wyoming 1.10 (required Info / Artifact fields, optional Synthesize.voice, one handler
per connection) and exercised end-to-end with wyoming.client.AsyncTcpClient — the class Home Assistant
uses — against the Palabra API. Not yet run inside a live Home Assistant. Each connection opens its own
Palabra STT session with the same API Key, so voice commands from several satellites are transcribed in
parallel.
Metadata
Release files for wyoming-palabra 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wyoming_palabra-0.1.0.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wyoming_palabra-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.5 kB
Release files / wyoming_palabra-0.1.0.tar.gz
| Download URL | wyoming_palabra-0.1.0.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
32d2a30798625f850e93316a145039b99d9b817548de2473c6128eaa315de8af
|
|
BLAKE2b-256 checksum How to use checksums |
22c5789baefd1ceb88a2d2322e68d8e8a5f769d2f514734f690a7bd3a0b1a78a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Release files / wyoming_palabra-0.1.0-py3-none-any.whl
| Download URL | wyoming_palabra-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5b2eac6a520a07ebbbecf2dd7343b6f359a2d4a5f3348227d9e98fb746ab9244
|
|
BLAKE2b-256 checksum How to use checksums |
9c8b3ab1cda920764095c4f69cae7c3381e4b25f63382864604fabbdc7b3d084
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|