Settings

Configure backend URLs, API keys, voice folders, and playback preferences.

General

Interface preferences.

Switch between light and dark interface. Saved instantly.

Connections

Service URLs for each backend. Change these first when setting up.

Local stack
TTS — Text to Speech Qwen3 engines: clone, design, custom, streaming · Kokoro FastAPI
Uploaded/cloned WAV voices. Expected: POST /v1/audio/speech.
Prompt-designed voices and vd_... virtual voices.
Style over configured speakers such as Ryan, Vivian, Serena.
Progressive low-latency WAV playback.
OpenAI-compatible TTS. Built-in voices: af_bella, bf_emma, am_adam… ~300 MB RAM.
Simple text-in audio-out TTS. POST /tts with {"text":"..."}.
XTTS v2 via daswer123/xtts-api-server. Supports GET /speakers and POST /v1/audio/speech.
NVIDIA speech stack router, Magpie TTS, Parakeet ASR, clone NIM
OpenAI-compatible base URL for the NVIDIA speech router.
Direct Magpie endpoint. Fixed speakers, not WAV cloning.
Direct Parakeet endpoint for transcription.
Magpie Zeroshot clone endpoint with audio_prompt.
Magpie Flow clone endpoint with audio_prompt and transcript.
STT — Speech to Text Whisper, faster-whisper, whisper.cpp, Groq, Parakeet, NVIDIA router
Default recognition endpoint. Expected: POST /v1/audio/transcriptions.
GPU-accelerated Whisper via CTranslate2. ~70× RT · 1.5 GB VRAM.
Lightweight C++ Whisper server. ~8–15× RT CPU · ~1 GB RAM.
Used for Groq Whisper STT and LLM. Free: 2 000 req/day.

Playback

Controls how previews play and how OpenAI-compatible requests are shaped.

Buffered keeps Save WAV available. Streaming starts sooner.
Controls payload shape for the normal TTS API URL.

Captures

Default behaviour for STT transcription, LLM text refinement, and playback.

Transcription Default language and preferred STT backend
Language hint passed to the STT backend. Auto-detect works well in most cases.
Overrides the active STT URL for STT-TTS panel captures.
LLM server Base URL for persona rewrite, text refinement, and other local LLM features
OpenAI-compatible endpoint. Used for persona rewrites, voice design, and auto-refine.
LLM refinement defaults Automatic text cleanup after transcription
When on, the LLM refinement runs immediately after each capture.
Model name sent to the LLM URL. Leave empty to use the app's current default.
Default playback voice Pre-selected voice in the STT-TTS panel
Pre-selects this voice in the STT-TTS panel on load.

Payloads

Extra JSON fields sent alongside each backend request. Usually only needed for advanced tuning.

Extra fields for the 8020 WAV voice clone/base model.
Extra fields for the 8023 streaming model.
Extra fields for the CustomVoice backend.
Extra fields for Voice Design and virtual vd_... voices.
Usually empty. Magpie accepts fixed speakers: sofia, aria, jason, leo, john.
Optional multipart fields. The app supplies text, language, audio_prompt.
Optional multipart fields. The app also sends the saved reference transcript.
Extra JSON fields for Kokoro. Usually empty — voice is selected from the dropdown.
Extra JSON fields for VibeVoice. Usually empty — service only requires text.

Storage

Container paths for voice files. Match these to your Portainer volume mounts.

Contains active_voices, hidden_voices, sounds, and metadata.
New cloned/exported voices are saved here.

API Keys

Usually empty for local containers. Set a dummy value like sk-local if a backend requires an Authorization header.

Backup & restore

Export all voices and settings as a ZIP for backup or migration. API keys are excluded from exports.

Export voices

Logs

Recent server activity. Useful for debugging backend connections and API errors.

Click Refresh to load logs

About

TTS Voice Creator

Clone, design, and deploy custom voices using local AI backends. Compatible with Qwen3-TTS, Kokoro FastAPI, NVIDIA Magpie, and any OpenAI-compatible TTS/STT endpoint.

FastAPI Vanilla JS WaveSurfer.js v7 MDI v7.4.47
MCP Server Expose voice tools to Claude Code, Cursor, and other MCP-aware agents
http://localhost:7890/mcp Streamable HTTP (JSON-RPC 2.0). Tools: speak, transcribe, list_captures, list_profiles.
claude mcp add voice-creator --transport http --url http://localhost:7890/mcp --header "X-Voice-Creator-Client-Id: claude-code"
{"mcpServers":{"voice-creator":{"url":"http://localhost:7890/mcp","headers":{"X-Voice-Creator-Client-Id":"my-agent"}}}}
/speak REST endpoint Generate audio from any app or script without routing rules
curl -X POST http://localhost:7890/speak \
  -H "Content-Type: application/json" \
  -H "X-Voice-Creator-Client-Id: my-script" \
  -d '{"text":"Hello world","voice":"EN_F_Anna"}' \
  --output speech.wav
curl -X PUT http://localhost:7890/speak/bindings/my-script \
  -H "Content-Type: application/json" \
  -d '{"voice":"EN_F_Anna"}'
Global hotkey daemon Push-to-talk transcription that types into any focused window
pip install pynput sounddevice soundfile pyperclip requests
python hotkey_daemon.py --server http://localhost:7890
Hold Ctrl+Shift+Space to record, release to transcribe and type. Linux: install xdotool for direct key injection.