# VibeVoice 1.5B long-form TTS via groxaxo/VibeVoice-FastAPI1 # (fork of ncoder-ai/VibeVoice-FastAPI). Multi-speaker dialogue support # via the extended /v1/vibevoice/generate endpoint with a Speaker N: # script format. OpenAI-compat /v1/audio/speech also exposed. # # Why this stack exists alongside the other TTS: # * Long-form / podcast-quality slot — VibeVoice is Microsoft's # diffusion-based long-form TTS designed for multi-speaker output. # * Dialogue mode: feed `Speaker 0: ... \n Speaker 1: ...` and the # model handles voice switching natively. # * Trade-off: NOT streaming-friendly — generation is single-shot # latent denoising over the whole sequence, then vocode. For # low-latency English, use Kokoro or Chatterbox Turbo instead. # # Image is built locally from the upstream Dockerfile via docker # buildx git-context (no source vendored on the host). Pinned to a # SHA in .env so rebuilds are reproducible. # # Default model is VibeVoice-1.5B (~7 GB bf16 VRAM). Switch to # rsxdalv/VibeVoice-Large for the 7B variant (~18 GB) — pin to A6000 # in that case. # # All tunables live in .env — edit that, not this file. services: vibevoice: image: local/vibevoice:${VIBEVOICE_TAG} build: context: https://github.com/groxaxo/VibeVoice-FastAPI1.git#${VIBEVOICE_SHA} dockerfile: Dockerfile container_name: vibevoice restart: unless-stopped runtime: nvidia ports: - "${VIBEVOICE_BIND:-0.0.0.0}:${VIBEVOICE_PORT}:8001" environment: - NVIDIA_VISIBLE_DEVICES=${VIBEVOICE_GPU_DEVICES:-1} - VIBEVOICE_MODEL_PATH=${VIBEVOICE_MODEL:-microsoft/VibeVoice-1.5B} - VIBEVOICE_DEVICE=cuda - VIBEVOICE_INFERENCE_STEPS=${VIBEVOICE_INFERENCE_STEPS:-10} - VIBEVOICE_DTYPE=${VIBEVOICE_DTYPE:-bfloat16} - VIBEVOICE_ATTN_IMPLEMENTATION=${VIBEVOICE_ATTN:-flash_attention_2} - VIBEVOICE_QUANTIZATION=${VIBEVOICE_QUANT:-} - TORCH_COMPILE=${VIBEVOICE_TORCH_COMPILE:-false} - TORCH_COMPILE_MODE=${VIBEVOICE_TORCH_COMPILE_MODE:-default} - VOICES_DIR=/app/voices - DEFAULT_CFG_SCALE=${VIBEVOICE_CFG_SCALE:-1.8} - MAX_GENERATION_LENGTH=${VIBEVOICE_MAX_GEN_LEN:-5400} - HF_HOME=/root/.cache/huggingface volumes: - ${VIBEVOICE_VOICES_DIR}:/app/voices:ro - ${VIBEVOICE_CACHE_DIR}:/root/.cache/huggingface healthcheck: # Upstream Dockerfile exposes /health. test: ["CMD-SHELL", "curl -fsS -o /dev/null http://localhost:8001/health || exit 1"] interval: 30s timeout: 10s retries: 3 # First boot pulls VibeVoice-1.5B (~7 GB) on a cold cache and # may also build flash-attn / torch.compile JIT cache on the # first inference. Generous deadline. start_period: 900s labels: - homepage.group=AI Systems - homepage.name=VibeVoice - homepage.icon=mdi-podcast - homepage.description=Long-form / multi-speaker dialogue TTS (irv-ml1) - homepage.href=http://10.100.79.3:${VIBEVOICE_PORT}