Add XTTS primary voice with Piper fallback

This commit is contained in:
Mikei386
2026-08-23 12:22:59 +02:00
parent 16a6288a4d
commit f90fc93f9c
18 changed files with 715 additions and 28 deletions
+75 -1
View File
@@ -529,7 +529,11 @@ services:
CHAT_IMAGE_ALLOW_REMOTE_URLS: "false"
ENABLE_IMAGE_GENERATION: "true"
ENABLE_TTS: "true"
TTS_WORKER_URL: http://piper:8085
# Stable OpenAI compatibility names remain piper/alloy because an
# existing Open WebUI database persists those values. The gateway maps
# alloy to XTTS speaker Annmarie Nele and automatically falls back to
# Piper if XTTS is unavailable, busy or returns an error.
TTS_WORKER_URL: http://tts-gateway:8085
TTS_MODEL: piper
TTS_VOICES: alloy
TTS_DEFAULT_VOICE: alloy
@@ -555,6 +559,8 @@ services:
condition: service_healthy
piper:
condition: service_healthy
tts-gateway:
condition: service_healthy
flux-worker:
build:
@@ -622,6 +628,74 @@ services:
retries: 30
start_period: 120s
xtts:
image: ${XTTS_IMAGE:-ghcr.io/coqui-ai/xtts-streaming-server:latest-cuda121@sha256:f7fb3b1f9d4bc88af94da1b5959d8002f1e0b003c97557164034eb8a29f01b90}
container_name: mike-ai-xtts
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids:
- ${XTTS_GPU_DEVICE:-GPU-4834d9d7-5b61-3004-1fb3-4ae49d482d4b}
capabilities: [gpu]
read_only: true
shm_size: 1g
tmpfs:
- /tmp:size=1g,mode=1777
- /root/.cache:size=2g,mode=0700
volumes:
- "${XTTS_CACHE_DIR:-/data/models/xtts-v2-cache}:/root/.local/share/tts"
environment:
COQUI_TOS_AGREED: "1"
NVIDIA_VISIBLE_DEVICES: ${XTTS_GPU_DEVICE:-GPU-4834d9d7-5b61-3004-1fb3-4ae49d482d4b}
NVIDIA_DRIVER_CAPABILITIES: compute,utility
CUDA_VISIBLE_DEVICES: "0"
NUM_THREADS: "4"
networks: [frontend]
security_opt: ["no-new-privileges:true"]
cap_drop: [ALL]
healthcheck:
test: [CMD, curl, -fsS, "http://127.0.0.1/languages"]
interval: 10s
timeout: 5s
retries: 36
start_period: 240s
tts-gateway:
build:
context: platform/docker/tts-gateway
image: mike-ai/tts-gateway:local
container_name: mike-ai-tts-gateway
restart: unless-stopped
read_only: true
tmpfs:
- /tmp:size=256m,mode=1777
environment:
TTS_GATEWAY_HOST: 0.0.0.0
TTS_GATEWAY_PORT: "8085"
XTTS_URL: http://xtts:80
PIPER_URL: http://piper:8085
TTS_VOICE_ALIAS: alloy
XTTS_SPEAKER: Annmarie Nele
TTS_DEFAULT_LANGUAGE: de
XTTS_QUEUE_TIMEOUT: "15"
XTTS_TIMEOUT: "120"
PIPER_TIMEOUT: "120"
networks: [frontend]
depends_on:
piper:
condition: service_healthy
security_opt: ["no-new-privileges:true"]
cap_drop: [ALL]
healthcheck:
test: [CMD, curl, -fsS, "http://127.0.0.1:8085/status"]
interval: 10s
timeout: 5s
retries: 12
start_period: 10s
open-webui:
image: ${OPENWEBUI_IMAGE:-ghcr.io/open-webui/open-webui:v0.9.5}
container_name: mike-ai-open-webui