Skip to main content

Wyoming Server for OpenVoiceOS STT plugins

Project description

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 full text is returned in one Transcript (matching the wyoming-faster-whisper reference)
  • Automatic audio conversion — All incoming audio is converted to 16 kHz / 16-bit / mono PCM via AudioChunkConverter
  • Thread-safe — Blocking stt.execute() is offloaded via asyncio.to_thread() so the event loop stays responsive
  • Language propagation — Reads language from Transcribe event and populates it on Transcript
  • Error reporting — Failures are sent back as Wyoming Error events
  • Signal handling — Graceful shutdown 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 OVOS STT plugin module name (e.g. ovos-stt-plugin-server)
--uri Yes 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 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 is closed 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 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wyoming_ovos_stt-0.2.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wyoming_ovos_stt-0.2.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file wyoming_ovos_stt-0.2.0.tar.gz.

File metadata

  • Download URL: wyoming_ovos_stt-0.2.0.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wyoming_ovos_stt-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9027e6a44d80445caf2f5bf6c89b33f80b3b66b3d4fc7043fe23cd67e941d280
MD5 e6a2a4331d96747474cffe474b9f9f9d
BLAKE2b-256 392bb9985275d4696e50bb47bc195f82741874702403db9095f43dfbef4e4e0a

See more details on using hashes here.

File details

Details for the file wyoming_ovos_stt-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for wyoming_ovos_stt-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 75e959e1228dd801b202b669d198b54268241039a240f162ec22885fd1b5ca26
MD5 784f79fe2d4ea2f6432dca2a489b201f
BLAKE2b-256 1a21dcde0a61818fd98c230272713338058003c6f1713d0fac3533d56dfb1bdc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page