# OmniVoice (k2-fsa/OmniVoice) — zero-shot, massively-multilingual (600+ # language) voice-cloning + voice-design TTS, diffusion-LM, Apache-2.0. # Served via upstream's own Gradio demo. NOTE: this exposes the Gradio UI # + Gradio API, NOT an OpenAI-compatible /v1/audio/speech endpoint — wrap # it later (à la stacks/index-tts/app.py) if asset-engine integration is # wanted. For now it's a "stand it up and try it" UI. # # Build: local image from the Dockerfile in this dir. Weights download # from HF (k2-fsa/OmniVoice) on first boot into ${OMNIVOICE_CACHE_DIR}. # # Pinned to the 3090 (device 0) on irv-ml1 — the A6000 (device 1) is # ComfyUI-exclusive after the 2026-06-18 VRAM consolidation. OmniVoice # runs in well under 5 GB; the 3090 had ~18 GB free. # # All tunables live in .env — edit that, not this file. services: omnivoice: image: local/omnivoice:${OMNIVOICE_TAG:-latest} build: context: . dockerfile: Dockerfile args: OMNIVOICE_VERSION: ${OMNIVOICE_VERSION:-} container_name: omnivoice restart: unless-stopped runtime: nvidia ports: - "${OMNIVOICE_BIND:-0.0.0.0}:${OMNIVOICE_PORT}:8001" environment: - NVIDIA_VISIBLE_DEVICES=${OMNIVOICE_GPU_DEVICES:-0} - HF_HOME=/app/hf_cache volumes: - ${OMNIVOICE_CACHE_DIR}:/app/hf_cache - ${OMNIVOICE_VOICES_DIR}:/app/voices healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:8001/ || exit 1"] interval: 30s timeout: 10s retries: 3 # First boot: weight pre-warm download (entrypoint) + CUDA warmup. start_period: 900s labels: - homepage.group=AI Systems - homepage.name=OmniVoice - homepage.icon=mdi-account-voice - homepage.description=Zero-shot multilingual voice-cloning TTS (irv-ml1, 3090) - homepage.href=http://10.100.79.3:${OMNIVOICE_PORT}