Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Wyoming OVOS STT Bridge

MIT License Python Wyoming OVOS

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 Transcript response: OVOS STT plugins are non-streaming, so the bridge returns the full text in one Transcript (matching the wyoming-faster-whisper reference).
  • Automatic audio conversion: AudioChunkConverter converts all incoming audio to 16 kHz / 16-bit / mono PCM.
  • Thread-safe: asyncio.to_thread() offloads the blocking stt.execute() call so the event loop stays responsive.
  • Language propagation: The bridge reads language from the Transcribe event and sets it on the Transcript.
  • Error reporting: The bridge sends failures back as Wyoming Error events.
  • 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: --uri is required (unlike the TTS and wake-word bridges which default to stdio://) 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 servers
  • ovos-stt-plugin-whisper: OpenAI Whisper (local)
  • ovos-stt-plugin-vosk: Vosk offline speech recognition
  • ovos-stt-plugin-chromium: Chrome/Chromium's Web Speech API
  • ovos-stt-plugin-pocketsphinx: CMU PocketSphinx
  • ovos-stt-plugin-whispercpp: Whisper.cpp binding
  • ovos-stt-plugin-fasterwhisper: CTranslate2-accelerated Whisper
  • ovos-stt-plugin-google: Google Cloud Speech-to-Text
  • ovos-stt-plugin-azure: Microsoft Azure Speech
  • ovos-stt-plugin-amazon: Amazon Transcribe

Documentation

Detailed docs live in docs/:

Credits

Developed by TigreGótico for OpenVoiceOS.

NGI0 Commons Fund

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.1a2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wyoming-ovos-stt 0.2.1a2
File Size Uploaded
wyoming_ovos_stt-0.2.1a2.tar.gz 12.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wyoming-ovos-stt 0.2.1a2
File Interpreter ABI Platform
wyoming_ovos_stt-0.2.1a2-py3-none-any.whl Python 3 none any Details

Total release size: 20.6 kB

Release files / wyoming_ovos_stt-0.2.1a2.tar.gz

Download URL wyoming_ovos_stt-0.2.1a2.tar.gz
Size 12.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d97ec9865fbaa32debd49d11b2454b6ebffa103797d5d545204e2a2f107bfda1
BLAKE2b-256 checksum
How to use checksums
fb28c3ee6687fc3d7b20288ec0000fbc32a11d76ea89651789556490bfe668f0
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.1a2-py3-none-any.whl

Download URL wyoming_ovos_stt-0.2.1a2-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c897c2329403f0b993ecb53cb2e799d7b03b2f88d6c22b4cd009c50d6a0832e6
BLAKE2b-256 checksum
How to use checksums
e83320f48b9d8043e5901f8ed1a69e01fc30d18fd4c4a1002e5569aa6c73830f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page