Skip to main content

simple FastAPI server to host TTS plugins as a service

Project description

OpenVoiceOS TTS Server

Turn any OVOS TTS plugin into a microservice — a small, stateless FastAPI app that exposes a TTS plugin over HTTP.

Install

pip install ovos-tts-server

# Optional: enable non-WAV output (mp3, ogg, flac, ...) via pydub
pip install "ovos-tts-server[audio]"

Companion plugin

Use in your voice assistant via the companion TTS plugin.

Configuration

The plugin is configured the same way as if it were running inside the assistant — through mycroft.conf:

{
  "tts": {
    "module": "ovos-tts-plugin-piper",
    "ovos-tts-plugin-piper": {
      "model": "alan-low"
    }
  }
}

Usage

ovos-tts-server --help
usage: ovos-tts-server [-h] [--engine ENGINE] [--port PORT] [--host HOST] [--cache]

options:
  -h, --help       show this help message and exit
  --engine ENGINE  tts plugin to be used
  --port PORT      port number (default: 9666)
  --host HOST      host (default: 0.0.0.0)
  --cache          save every synth to disk

Example — serve the Piper plugin:

ovos-tts-server --engine ovos-tts-plugin-piper --cache

Then GET http://localhost:9666/synthesize/hello.

Endpoints

Method Path Description
GET /status Plugin name, supported languages, default voice/model
GET /v2/synthesize?utterance=<text>[&lang=...][&voice=...] Primary synthesis endpoint — returns WAV audio
GET /synthesize/<utterance> Legacy path-based synthesis endpoint

CORS is enabled for all origins.

Third-party API compatibility

The server can additionally expose its underlying TTS plugin behind drop-in compatibility endpoints for popular cloud TTS APIs — MaryTTS, ElevenLabs, OpenAI, Coqui, Google Cloud TTS, Amazon Polly, Azure, and Piper. Each vendor lives under its own URL prefix so multiple compat layers coexist with no path collisions. Auth tokens are accepted and silently ignored — wrap behind a reverse proxy if you need real auth.

See docs/api-compatibility.md for the full reference.

Documentation

Docker

Build a small image that serves any plugin:

FROM python:3.11-slim

RUN pip install --no-cache-dir "ovos-tts-server[audio]" {PLUGIN_HERE}

ENTRYPOINT ["ovos-tts-server", "--engine", "{PLUGIN_HERE}", "--cache"]
docker build . -t my_ovos_tts_plugin
docker run -p 8080:9666 my_ovos_tts_plugin

Then GET http://localhost:8080/synthesize/hello.

Each plugin can ship its own Dockerfile in its repository using ovos-tts-server.

Development

pip install -e ".[audio,test]"
pytest test/ -v

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

ovos_tts_server-1.7.0a3.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

ovos_tts_server-1.7.0a3-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file ovos_tts_server-1.7.0a3.tar.gz.

File metadata

  • Download URL: ovos_tts_server-1.7.0a3.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ovos_tts_server-1.7.0a3.tar.gz
Algorithm Hash digest
SHA256 2f92213ee5937ee67d34449fb35f304963011890bf7cd5eaca7863840407d70b
MD5 1ee02510f3e25677f98afef6ecf15918
BLAKE2b-256 9723f9c5415cbae2578c559fc07e528b5b1a20134ad42a25021066e736c8fe35

See more details on using hashes here.

File details

Details for the file ovos_tts_server-1.7.0a3-py3-none-any.whl.

File metadata

File hashes

Hashes for ovos_tts_server-1.7.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 55b5535305b57a32d8b9000b5937d9502f998ea797c826b6b14960dd1d717790
MD5 374c032e7cac08a6922c46dfb0b75bcd
BLAKE2b-256 1b13302984d2fea39895bb5bd1bd0e9263258e63155a407fce255d6565c612e3

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