Phonon-TTS
Docker app from Aurial Phonon's Repository
Overview
Readme
View on GitHubPhonon TTS for Unraid
An Unraid Community Applications template for ptts-openai-server,
the official speech server for Phonon, Gradium's open-weight on-device text-to-speech
models. It serves an OpenAI-compatible API (POST /v1/audio/speech) and the Wyoming protocol, so it plugs into
Open WebUI, SillyTavern, Home Assistant and anything else with an "OpenAI TTS" setting — fully local, CPU-only, and
fast enough to speak faster than real time even on a Raspberry Pi.
Report template or Unraid problems in this repository's issues, and problems with the server itself to the xn-ptts project.
Install
Search for Phonon TTS in the Apps tab. The defaults work out of the box:
- API port
8880— point any OpenAI-TTS client athttp://<tower>:8880/v1 - Language
en— text normalization and the catalog voices; must match the model's language - Model and voices cache — under about 1 GB, downloaded on first start and kept across restarts and updates
The first start downloads the default model and voices and logs little until they load — watch the log. Later starts go straight to serving.
The server has no authentication on any port. Run it on a trusted network; never expose it to the internet.
Home Assistant
Set Wyoming address to 0.0.0.0:10200 and map the Wyoming port too (both under Advanced). Then in Home
Assistant add the Wyoming Protocol integration with this server's address and port 10200: Phonon appears as a
text-to-speech engine you can pick for your voice assistant. It streams — speech starts at the first sentence of a
reply, not the last.
Models and voices
- Default: leave Model empty — the server ships a built-in default model.
- Other models:
hf://owner/name(add@commit_shato pin the version). The Phonon 40M models are gated: accept their terms on Hugging Face first, then set an HF token. - Voices: the public catalog (
gradium/phonon-voices) is cached for your language;GET /v1/audio/voiceslists what the running server speaks. OpenAI voice names and Voice aliases make clients with fixed voice lists (they sendalloy,nova, …) work unchanged. - Ignore speed is on by default: OpenAI clients always send a
speedparameter; the server accepts it and speaks at the normal rate.
Updates
The template follows latest, which Gradium moves with each release; Unraid shows the update on the Docker tab.
Pick a pinned tag (such as 0.5.0) under Branch at install to stay on one release.
Credits and licence
Phonon and the xn-ptts server are by Gradium and contributors, Apache-2.0. The models themselves carry their own licences on Hugging Face (the 31M models are Apache-2.0; the 40M models are gated — check their model cards). The icon in this repository is an original work by the template maintainer, MIT. The template files are MIT licensed; see LICENSE.
Requirements
No authentication — the API ports are open to anything that can reach them; run on a trusted network only. The first start downloads the model and voices (well under 1 GB) into the cache folder, which must persist. CPU only: no GPU or driver plugin needed; quantized weights (q8) do not use a GPU even when one is present.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/gradium-ai/ptts-openai-server:latestRuntime arguments
- Network
bridge- Shell
sh- Privileged
- false
Template configuration
The OpenAI-compatible speech API (POST /v1/audio/speech, GET /v1/audio/voices, GET /health). No authentication — do not expose this port beyond your network.
- Target
- 8880
- Default
- 8880
- Value
- 8880
Home Assistant's Wyoming protocol. Only used when PTTS_WYOMING_ADDR is set below; leave this port empty if you do not use Home Assistant.
- Target
- 10200
- Default
- 10200
Where the model, voices and any HF downloads live (under about 1 GB). Persists across restarts, template edits and updates; deleting it means re-downloading on the next start.
- Target
- /home/phonon/.cache/huggingface
- Default
- /mnt/user/appdata/phonon-tts
- Value
- /mnt/user/appdata/phonon-tts
Required. Spelling out of numbers and symbols, and which catalog voices are served. Must match the checkpoint's language: en, fr, es, de, pt for the Phonon checkpoints, plus more normalization-only codes (see the README). In YAML contexts nb is the safe code for Norwegian.
- Target
- PTTS_LANG
- Default
- en
- Value
- en
true: accept the speed parameter that OpenAI clients always send, and speak at the normal rate anyway. Keep it true unless your client needs real speed control.
- Target
- PTTS_IGNORE_SPEED
- Default
- true
- Value
- true
Empty: the built-in default model. Or a Hugging Face repo as hf://owner/name — add @commit_sha to pin the version (without it, the repo's main branch is used and updates flow in). Phonon 40M models are gated: accept their Hugging Face terms first and set the HF token below.
- Target
- PTTS_MODEL
Only for gated or private Hugging Face repos (the Phonon 40M models). Get one at huggingface.co/settings/tokens.
- Target
- HF_TOKEN
Checkpoint weight format. q8 is the recommended CPU default and runs on the CPU even when a GPU is present.
- Target
- PTTS_QUANT
- Default
- q8
- Value
- q8
Set to default (or one of your voices) to also accept OpenAI's own voice names (alloy, nova, ...) — handy for clients with a fixed voice list. Empty: only this server's real voices.
- Target
- PTTS_OPENAI_VOICES
Extra names, comma-separated, like nova=VOICE. The named voice must exist or the server does not start.
- Target
- PTTS_VOICE_ALIAS
Set to 0.0.0.0:10200 to also serve Home Assistant's Wyoming protocol (map the Wyoming port above). Home Assistant then lists Phonon as a text-to-speech engine.
- Target
- PTTS_WYOMING_ADDR
Empty: Gradium's public voice catalog (gradium/phonon-voices) for your language. Set to hf://owner/name[@revision], or a path inside the container to your own voices.jsonl, to use different voices.
- Target
- PTTS_VOICE_CATALOG