## Settings

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

### General

Interface preferences.

Theme
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
Voice Clone / Base URL (WAV voices) Uploaded/cloned WAV voices. Expected: `POST /v1/audio/speech`.
Voice Design URL (instruction voices) Prompt-designed voices and `vd_...` virtual voices.
CustomVoice URL Style over configured speakers such as Ryan, Vivian, Serena.
Streaming URL Progressive low-latency WAV playback.
Kokoro FastAPI URL (82M · CPU-friendly) OpenAI-compatible TTS. Built-in voices: af_bella, bf_emma, am_adam… ~300 MB RAM.
VibeVoice URL (vibevoice-service) Simple text-in audio-out TTS. POST /tts with {"text":"..."}.
XTTS v2 URL (xtts-api-server) 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
NVIDIA router URL (TTS + STT) OpenAI-compatible base URL for the NVIDIA speech router.
NVIDIA Magpie TTS URL Direct Magpie endpoint. Fixed speakers, not WAV cloning.
NVIDIA Parakeet ASR URL Direct Parakeet endpoint for transcription.
NVIDIA Zeroshot NIM URL Magpie Zeroshot clone endpoint with `audio_prompt`.
NVIDIA Flow NIM URL Magpie Flow clone endpoint with `audio_prompt` and transcript.
STT — Speech to Text Whisper, faster-whisper, whisper.cpp, Groq, Parakeet, NVIDIA router
Active STT URL Default recognition endpoint. Expected: `POST /v1/audio/transcriptions`.
faster-whisper-server URL (CTranslate2 GPU) GPU-accelerated Whisper via CTranslate2. ~70× RT · 1.5 GB VRAM.
whisper.cpp URL (CPU/CUDA) Lightweight C++ Whisper server. ~8–15× RT CPU · ~1 GB RAM.
Groq API key (Groq Whisper & LLM)
Used for Groq Whisper STT and LLM. Free: 2 000 req/day.

### Playback

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

TTS preview playback
Buffered keeps Save WAV available. Streaming starts sooner.
OpenAI-compatible request style
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
Default language
Language hint passed to the STT backend. Auto-detect works well in most cases.
Preferred STT backend
Overrides the active STT URL for STT-TTS panel captures.
LLM server Base URL for persona rewrite, text refinement, and other local LLM features
LLM base URL OpenAI-compatible endpoint. Used for persona rewrites, voice design, and auto-refine.
LLM refinement defaults Automatic text cleanup after transcription
Auto-refine after transcription
When on, the LLM refinement runs immediately after each capture.
Refinement model Model name sent to the LLM URL. Leave empty to use the app's current default.
Remove filler words Strips um, uh, like, you know, sort of.
Remove repetitions Collapses repeated words and phrases.
Fix grammar & spelling Light corrections without changing meaning.
Fix punctuation Adds missing commas, periods, and sentence casing.
Default playback voice Pre-selected voice in the STT-TTS panel
Default voice
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.

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

### Storage

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

Voice scan directory Contains `active_voices`, `hidden_voices`, sounds, and metadata.
Active voices directory 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.

TTS API key (optional)
Voice Design API key (optional)
Whisper API key (optional)

### Backup & restore

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

Export voices Import voices

### Logs

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

Auto-refresh
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 transport URL `http://localhost:7890/mcp` Streamable HTTP (JSON-RPC 2.0). Tools: `speak`, `transcribe`, `list_captures`, `list_profiles`.
Claude Code one-liner `claude mcp add voice-creator --transport http --url http://localhost:7890/mcp --header "X-Voice-Creator-Client-Id: claude-code"`
Any HTTP MCP client (JSON)

    {"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
Generate speech (example)

    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

Per-client voice binding

    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
Install & run (host machine)

    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.