This release is a pre-release and may not be stable for production use.
Wyoming OVOS STT Bridge
Expose any OpenVoiceOS STT plugin as a Wyoming protocol ASR server for use with Home Assistant, Rhasspy, and other Wyoming-compatible voice pipelines.
┌──────────────────────────────────────┐
Wyoming client │ wyoming-ovos-stt │
(Home Assistant, │ │
Rhasspy, etc.) │ ┌────────────────────────────────┐ │
│ │ STTAPIEventHandler │ │
Transcribe ───────────►│ │ │ │
AudioChunk* ──────────►│ │ AudioChunkConverter │ │
│ │ (→ 16kHz/16-bit/mono) │ │
AudioStop ───────────►│ │ asyncio.to_thread() ──────────►│ OVOSSTTFactory
│ │ STT.execute(AudioData) │ └──> STT plugin
Transcript ◄───────────│ │ │
Describe ─────────────►│ │ Info(asr=[AsrProgram(...)]) │
Info ◄─────────────────│ │ │
│ └────────────────────────────────┘ │
└──────────────────────────────────────┘
Features
- Single
Transcriptresponse: OVOS STT plugins are non-streaming, so the bridge returns the full text in oneTranscript(matching thewyoming-faster-whisperreference). - Automatic audio conversion:
AudioChunkConverterconverts all incoming audio to 16 kHz / 16-bit / mono PCM. - Thread-safe:
asyncio.to_thread()offloads the blockingstt.execute()call so the event loop stays responsive. - Language propagation: The bridge reads
languagefrom theTranscribeevent and sets it on theTranscript. - Error reporting: The bridge sends failures back as Wyoming
Errorevents. - Signal handling: The bridge shuts down gracefully on SIGINT/SIGTERM.
Installation
From PyPI
pip install wyoming-ovos-stt
You also need to install the OVOS STT plugin you intend to bridge, e.g.:
pip install ovos-stt-plugin-server
pip install ovos-stt-plugin-whisper
pip install ovos-stt-plugin-vosk
From source
git clone https://github.com/OpenVoiceOS/wyoming-ovos-stt.git
cd wyoming-ovos-stt
pip install -e .
Configuration
Plugin configuration is read from mycroft.conf under stt.<plugin-name>:
{
"lang": "en-US",
"stt": {
"ovos-stt-plugin-server": {
"url": "https://stt.openvoiceos.com/stt"
},
"ovos-stt-plugin-whisper": {
"model": "base",
"language": "en"
},
"ovos-stt-plugin-vosk": {
"model": "vosk-model-small-en-us-0.15"
}
}
}
The language is taken from stt.<plugin-name>.lang if set, otherwise from lang at the root level.
Usage
# TCP server using public OVOS STT servers
wyoming-ovos-stt --uri tcp://0.0.0.0:7891 \
--plugin-name ovos-stt-plugin-server \
--debug
# Local Whisper STT
wyoming-ovos-stt --uri tcp://0.0.0.0:7891 \
--plugin-name ovos-stt-plugin-whisper
# Unix socket
wyoming-ovos-stt --uri unix:///run/wyoming-stt.sock \
--plugin-name ovos-stt-plugin-vosk
CLI Reference
| Argument | Required | Default | Description |
|---|---|---|---|
--plugin-name |
Yes | none | OVOS STT plugin module name (e.g. ovos-stt-plugin-server) |
--uri |
Yes | none | tcp://HOST:PORT or unix:///path |
--debug |
No | False |
Enable DEBUG-level logging |
--log-format |
No | %(levelname)s:%(name)s:%(message)s |
Python log format string |
--version |
No | none | Print version and exit |
Note:
--uriis required (unlike the TTS and wake-word bridges which default tostdio://) because the STT bridge is designed for persistent TCP connections.
Wyoming Protocol
Transcription flow
Client → Describe
Server → Info(asr=[AsrProgram(name="ovos-stt-plugin-server", ...)])
Client → Transcribe(language="en-US")
Client → AudioStart(rate=16000, width=2, channels=1)
→ AudioChunk (PCM bytes)
→ AudioChunk ...
→ AudioStop
Server → Transcript(text="hello world", language="en-US")
The connection closes after each transcription (single-use handler pattern, matching the upstream wyoming-faster-whisper reference). Audio must be 16 kHz / 16-bit / mono PCM. The bridge converts it automatically.
Supported Plugin Types
Any OVOS STT plugin implementing STT from ovos_plugin_manager.templates.stt:
ovos-stt-plugin-server: proxy to remote STT serversovos-stt-plugin-whisper: OpenAI Whisper (local)ovos-stt-plugin-vosk: Vosk offline speech recognitionovos-stt-plugin-chromium: Chrome/Chromium's Web Speech APIovos-stt-plugin-pocketsphinx: CMU PocketSphinxovos-stt-plugin-whispercpp: Whisper.cpp bindingovos-stt-plugin-fasterwhisper: CTranslate2-accelerated Whisperovos-stt-plugin-google: Google Cloud Speech-to-Textovos-stt-plugin-azure: Microsoft Azure Speechovos-stt-plugin-amazon: Amazon Transcribe
Documentation
Detailed docs live in docs/:
Related projects
- wyoming-ovos-tts: the matching Wyoming bridge for OVOS TTS plugins.
- wyoming-ovos-wakeword: the matching Wyoming bridge for OVOS wake-word plugins.
- ovos-wyoming-docker: Docker images that bundle these bridges.
- ovos-plugin-manager: loads and manages the OVOS STT plugins this bridge exposes.
Credits
Developed by TigreGótico for OpenVoiceOS.
This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429.
Metadata
Release files for wyoming-ovos-stt 0.2.1a3
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_ovos_stt-0.2.1a3.tar.gz | 12.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wyoming_ovos_stt-0.2.1a3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.6 kB
Release files / wyoming_ovos_stt-0.2.1a3.tar.gz
| Download URL | wyoming_ovos_stt-0.2.1a3.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3be0e22f5673811bee22822ffdb07897da0fbbe3180d843ab4c8b7ad645c50a9
|
|
BLAKE2b-256 checksum How to use checksums |
59e1b71b9c065f694630460145a9aaf32aa20009d707cfa76e8e59cc0c3c2980
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / wyoming_ovos_stt-0.2.1a3-py3-none-any.whl
| Download URL | wyoming_ovos_stt-0.2.1a3-py3-none-any.whl |
|---|---|
| Size | 8.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd60edb8a7c79e692e132617361b77413d476cc58a417b30f47d9d0c2456a873
|
|
BLAKE2b-256 checksum How to use checksums |
b419f92c488093d110bdd9f331d15c5d4ac4aeb7a89fdffd2de7bb0a77488bc7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|