Files
esh-pfi-infrastructure/stacks/omnivoice/compose.yaml
T
vh 984b72757f feat(omnivoice): new TTS stack — k2-fsa/OmniVoice on irv-ml1 3090
Zero-shot, massively-multilingual (600+ language) voice-cloning + voice-design
TTS (diffusion-LM, Apache-2.0). No official image, so a thin CUDA container
around the pip package running upstream's own Gradio demo (no FastAPI wrapper).
Pinned to GPU 0 (3090) — the A6000 is ComfyUI-exclusive — port 8199. Built +
verified live on irv-ml1 (Gradio 200, container healthy). Surface is the Gradio
UI + Gradio API, NOT OpenAI-compat /v1/audio/speech (wrap later if asset-engine
should consume it). deploy-omnivoice.yaml builds local + verifies.
2026-06-18 22:25:54 -07:00

49 lines
1.9 KiB
YAML

# 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}