Phonon-TTS

Phonon-TTS

Docker app from Aurial's Repository

Overview

Phonon TTS runs Gradium's Phonon text-to-speech models and serves an OpenAI-compatible speech API (POST /v1/audio/speech), so any client with an "OpenAI TTS" setting and a custom base URL works unchanged. It can also serve the Wyoming protocol, which Home Assistant uses for local voice. It runs entirely on the CPU and is fast: Gradium's models speak faster than real time even on a Raspberry Pi. Language: PTTS_LANG is required and picks how numbers and symbols are spelled out, and which catalog voices are served; it must match the language of the checkpoint (en by default; fr for a French model, and so on). First start: downloads the default model and the voices for its language into the cache folder, and logs little until they load; watch the log. The cache folder keeps them across restarts and updates, so later starts go straight to serving. Home Assistant: set PTTS_WYOMING_ADDR to 0.0.0.0:10200 and map the Wyoming port too; then add the Wyoming Protocol integration in Home Assistant with this server's address and port 10200. Access: the API has NO authentication on either port. Use it on a network you trust; do not expose it to the internet. Other models: leave Model empty for the built-in default, or name a Hugging Face repo as hf://owner/name (add @commit for a fixed version). The Phonon 40M models are gated: accept their terms on Hugging Face first and set an HF token here. Template and Unraid problems: the Support link. Phonon and the server itself: the Project link.

Unraid Community Apps templates by Aurial

Two templates live in this repository: Strata AMD (the AMD/ROCm builds of Strata, a local LLM) and Phonon TTS (the official speech server for Gradium's Phonon text-to-speech models).

Strata AMD

An Unraid Community Applications template for the AMD (ROCm) builds of Strata, which runs the Qwen3.8-Flash-Next mixture-of-experts model on an AMD GPU plus system RAM. It serves an OpenAI- and Anthropic-compatible API, a chat page and a live monitor.

The template runs Strata's official image, ghcr.io/niko1221/strata:latest-rocm-gfx120x. Report template or Unraid problems in this repository's issues, and problems with Strata itself to the Strata project.

Why a separate listing

The Community Apps catalog already lists Strata, an NVIDIA-only template by williamkunz (CUDA images, Nvidia Driver plugin, --runtime=nvidia). That template cannot run on AMD cards. This listing covers the AMD side of the same upstream project: different image flavors (rocm-gfx120x / rocm-gfx110x / rocm-gfx1151), different host requirements (the amdgpu kernel driver Unraid already ships — no driver plugin), and device passthrough via /dev/kfd and /dev/dri instead of the NVIDIA runtime. Both templates use Strata's official image and expose the same settings.

Install

Search for Strata AMD in the Apps tab. Before installing you need:

  • an AMD card from one of the families Strata publishes images for. At install, pick your card under Branch — the template offers all three ROCm flavors as a dropdown:

    Branch shown at install Card
    latest-rocm-gfx120x (default) RX 9000 series, Radeon AI PRO R9700 (RDNA 4)
    latest-rocm-gfx110x RX 7000 series (RDNA 3)
    latest-rocm-gfx1151 Ryzen AI Max "Strix Halo" (Radeon 8060S)

    The RX 6000 series has no image yet. The host needs only the amdgpu kernel driver (Linux 6.8+), which Unraid ships as standard — no driver plugin to install.

  • 32 GB of RAM or more; more RAM allows a larger, better model (Strata's model guide)

  • room for the model on an SSD pool, mapped as a direct pool path (/mnt/cache/...), not /mnt/user

Do not set a memory limit on the container: Strata plans from the server's whole RAM. Do not pin CPUs: the engine sets its own thread affinity.

The first start downloads the model and prepares it. Later starts go straight to serving. The template's Overview explains each setting, and Strata's Docker guide covers them in full.

An API key is always on. If you leave it empty, the first start makes one; show it with:

docker exec "Strata AMD" strata launch --show-key --preset docker

(The container name contains a space, so quote it.)

Multi-GPU

The GPUs field takes the card numbers as the monitor lists them (0,1 splits the model across both by layer parallelism), or all / empty for the engine's choice. Every named card must match the Branch family. Under Advanced there is a GPU roles field for finer control (1=main,0=helper): main runs the final stage the answer comes from, helper holds a share of the model's layers, off leaves a card alone; cards you do not name are off, and Strata's automatic choice (faster card as main) is right for almost everyone. A split adds capacity more than speed — see Strata's multi-GPU guide.

Updates

The template follows latest-rocm-gfx120x, which Strata's maintainer moves to each new release when its image is published; the same holds for the other two Branch tags. Unraid shows the update on the Docker tab for whichever branch you installed. To stay on one release, change the Repository tag to a version such as 0.2.7-rocm-gfx120x.

Phonon TTS

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.

Search for Phonon TTS in the Apps tab; the defaults work out of the box: API port 8880, language en, and a model/voices cache (under about 1 GB) downloaded on first start and kept across restarts. The first start logs little until the model loads — watch the log. For Home Assistant, set Wyoming address to 0.0.0.0:10200, map the Wyoming port, then add the Wyoming Protocol integration pointing at this server. The template's Overview explains every setting, including other models (hf://owner/name), gated 40M checkpoints, voice aliases and OpenAI voice-name compatibility.

The server has no authentication on any port. Run it on a trusted network; never expose it to the internet.

The template follows latest, which Gradium moves with each release; pick a pinned tag (such as 0.5.0) under Branch at install to stay on one release.

Credits and licence

Strata and its images are by Niko1221 and the Strata contributors, under the MIT licence. The Strata icon is Strata's own. The Strata template follows the structure of the NVIDIA strata-docker template by William Kunz (MIT).

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 Phonon icon in this repository is an original work by the template maintainer, MIT.

This repository is 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.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/gradium-ai/ptts-openai-server:latest
Last Updated2026-11-02
First Seen2026-10-31

Runtime arguments

Network
bridge
Shell
sh
Privileged
false

Template configuration

API portPorttcp

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
Wyoming portPorttcp

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
Model and voices cachePathrw

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
LanguageVariable

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
Ignore speedVariable

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
ModelVariable

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
HF tokenVariable

Only for gated or private Hugging Face repos (the Phonon 40M models). Get one at huggingface.co/settings/tokens.

Target
HF_TOKEN
QuantizationVariable

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
OpenAI voice namesVariable

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
Voice aliasesVariable

Extra names, comma-separated, like nova=VOICE. The named voice must exist or the server does not start.

Target
PTTS_VOICE_ALIAS
Wyoming addressVariable

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
Voice catalogVariable

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