Files
esh-pfi-infrastructure/stacks/cosyvoice/compose.yaml
T
vh e0d1c44137 chore(fleet): repoint stale irv-ml1 refs (10.100.79.3 -> irv-ml1.nh3.internal)
The 2026-09-06 headscale cutover retired irv-ml1's wg0 tunnel IP 10.100.79.3
(now 10.6.110.50). Repointed all LIVE canonical refs to the DNS NAME so the next
move can't re-break them: homepage.href/siteMonitor labels across 25 stack
composes, load-bearing env defaults (asset-engine INFERENCE_HOST, open-webui
AUDIO_TTS_OPENAI_API_BASE_URL, skaldsong SKALDSONG_TTS_BASE_URL, zonos-gateway
ZONOS_URL, dia), homepage services.yaml manual cards (Voice Design Studio,
IRV-ML1), and servers/irv-ml1/ssh-target. Updated the stale 'WG tunnel' comment
to the mesh reality.

Left as-is: README curl-examples and .env.example comments (docs), and historical
mentions in CLAUDE.md/persistent-memory. NOTE: applying the label repoints to the
RUNNING irv-ml1 containers needs a recreate per service (labels read at creation);
deployed .env values are separate from these canonical defaults.
2026-09-07 15:08:56 -07:00

61 lines
2.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CosyVoice — multilingual expressive TTS with voice cloning.
#
# Ships the Fun-CosyVoice3-0.5B-2512 model from FunAudioLLM (latest
# as of 2026-04). Streaming PCM chunks with ~150 ms TTFB. Emotional
# control via either XML tags (<angry>text</angry>) or instruction
# prompts (`You are a helpful assistant. <|endofprompt|>` syntax).
#
# Runs on irv-ml1 (dual GPU). Both GPUs exposed via
# NVIDIA_VISIBLE_DEVICES=all; image reads CUDA_VISIBLE_DEVICES if
# you later want to pin.
#
# Path split:
# /worktank/cosyvoice/voices → /data/voices cloned speaker profiles
# /worktank/cosyvoice/input → /data/input scratch for uploaded source audio
# /worktank/cosyvoice/output → /data/output synthesized clips
#
# Models (~23 GB) download on first run into the image's internal
# pretrained_models/ path. Not bind-mounted (the image expects an
# exact layout we don't have authoritative docs for); recreating the
# container without the cached image will re-download. Cached image
# layer persists through `compose up -d` recreates.
#
# API routes (OpenAI-compatible where marked):
# POST /v1/audio/speech — OpenAI drop-in for TTS
# POST /v1/voices/create — voice cloning (reference audio in)
# GET /v1/voices — list cloned voices
# GET /health — health probe
#
# All tunables live in .env — edit that, not this file.
services:
cosyvoice:
image: neosun/cosyvoice:${COSYVOICE_VERSION}
container_name: cosyvoice
restart: unless-stopped
runtime: nvidia
ports:
- "${COSYVOICE_BIND:-0.0.0.0}:${COSYVOICE_PORT}:8188"
environment:
- NVIDIA_VISIBLE_DEVICES=all
- MODEL_DIR=${COSYVOICE_MODEL_DIR:-pretrained_models/Fun-CosyVoice3-0.5B}
- PORT=8188
- GPU_IDLE_TIMEOUT=${COSYVOICE_GPU_IDLE_TIMEOUT:-600}
volumes:
- ${COSYVOICE_VOICES_DIR}:/data/voices
- ${COSYVOICE_INPUT_DIR}:/data/input
- ${COSYVOICE_OUTPUT_DIR}:/data/output
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8188/health >/dev/null || exit 1"]
interval: 30s
timeout: 10s
retries: 3
# First boot pulls ~23 GB of model weights.
start_period: 300s
labels:
- homepage.group=AI - Dormant
- homepage.name=CosyVoice
- homepage.icon=mdi-account-voice
- homepage.description=Expressive multilingual TTS + cloning (irv-ml1)
- homepage.href=http://irv-ml1.nh3.internal:${COSYVOICE_PORT}