# ───────────────────────────────────────────────────────────────────────────── # Qwen3-TTS GPU Stack # # Ports: # 8020 -> Voice clone, OpenAI-compatible /v1/audio/speech # 8021 -> VoiceDesign model for prompt-designed voices # 8022 -> CustomVoice model # 8023 -> Low-latency streaming voice clone endpoint # # Voice files: # The voice clone and streaming services scan active voices from: # /home/sparky/Projekte/TTS_Voices/active_voices # # Portainer note: # Set HF_TOKEN in the stack environment if the models ever need Hugging Face access. # ───────────────────────────────────────────────────────────────────────────── services: # Standard voice cloning backend used by TTS Voice Creator and other OpenAI-compatible clients. faster-qwen3-tts-voiceclone: image: faster-qwen3-tts-dgx-spark:v4 container_name: faster-qwen3-tts-voiceclone restart: unless-stopped runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - HF_TOKEN=${HF_TOKEN} ports: - "8020:8000" volumes: - /home/sparky/LLMs/vllm/Alibaba/Qwen3-TTS-12Hz-1.7B-Base:/models/Qwen3-TTS:ro - /home/sparky/Docker/faster-qwen3-tts/config:/config:rw - /home/sparky/Projekte/TTS_Voices/active_voices:/voices:ro command: > /bin/bash -c " python3 /config/generate_voices.py && python3 /config/run_server.py --model /models/Qwen3-TTS --voices /config/voices.json --port 8000 --max-seq-len 2048 " deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] networks: - dgx_net # VoiceDesign backend: creates speech from a descriptive voice prompt instead of a reference clip. faster-qwen3-tts-voicedesign: image: faster-qwen3-tts-dgx-spark:v4 container_name: faster-qwen3-tts-voicedesign restart: unless-stopped runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - HF_TOKEN=${HF_TOKEN} ports: - "8021:8000" volumes: - /home/sparky/LLMs/vllm/Alibaba/Qwen3-TTS-12Hz-1.7B-VoiceDesign:/models/Qwen3-TTS-VoiceDesign:ro - /home/sparky/Docker/faster-qwen3-tts/config:/config:rw command: > /bin/bash -c " python3 /config/run_voicedesign_server.py --model /models/Qwen3-TTS-VoiceDesign --voices /config/voicedesign_voices.json --port 8000 --max-seq-len 2048 " deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] networks: - dgx_net # CustomVoice backend: keeps the separate CustomVoice model available on port 8022. faster-qwen3-tts-customvoice: image: faster-qwen3-tts-dgx-spark:v4 container_name: faster-qwen3-tts-customvoice restart: unless-stopped runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - HF_TOKEN=${HF_TOKEN} ports: - "8022:8000" volumes: - /home/sparky/LLMs/vllm/Alibaba/Qwen3-TTS-12Hz-1.7B-CustomVoice:/models/Qwen3-TTS-CustomVoice:ro - /home/sparky/Docker/faster-qwen3-tts/config:/config:rw command: > /bin/bash -c " python3 /config/run_customvoice_server.py --model /models/Qwen3-TTS-CustomVoice --voices /config/customvoice_voices.json --port 8000 --max-seq-len 2048 " deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] networks: - dgx_net # Streaming voice clone backend: same active voices as 8020, but streams WAV chunks while generating. faster-qwen3-tts-streaming: image: qwen3-tts-streaming-dgx-spark:latest container_name: faster-qwen3-tts-streaming restart: unless-stopped runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,utility - HF_TOKEN=${HF_TOKEN} - PYTHONUNBUFFERED=1 - QWEN_TTS_MODEL=/models/Qwen3-TTS - QWEN_TTS_VOICES=/config/voices.json - QWEN_TTS_MAX_SEQ_LEN=4096 ports: - "8023:8000" volumes: - /home/sparky/LLMs/vllm/Alibaba/Qwen3-TTS-12Hz-1.7B-Base:/models/Qwen3-TTS:ro - /home/sparky/Docker/faster-qwen3-tts/config:/config:rw - /home/sparky/Projekte/TTS_Voices/active_voices:/voices:ro command: > /bin/bash -c " python3 /config/generate_voices.py && python3 /config/run_server.py --model /models/Qwen3-TTS --voices /config/voices.json --port 8000 --max-seq-len 4096 " deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] networks: - dgx_net networks: dgx_net: external: true