Files
esh-pfi-infrastructure/stacks/cosyvoice/compose.yaml
T
vh 569e1af9ca feat(homepage): split AI fleet into role-based groups on a dedicated AI tab
Move the ~22-service flat "AI Systems" group off the Main tab into a new
four-tab layout (Main / AI / Infrastructure / Toolchain). The AI tab sorts
the inference fleet by function into seven groups:

  AI - Inference        gen, char-rp, char-rp-reasoning, Granite summarizer
  AI - Eval & Retrieval Selene, Skywork Reward, Qwen3 rerank/embed, image-bench
  AI - Gateways & Chat  LiteLLM, Asset Engine, Gateway Chat, Open WebUI, ...
  AI - Speech (TTS)     Chatterbox Fast, Kokoro, mOrpheus
  AI - Audio Tools      Parakeet ASR, YT Voice Clipper
  AI - Image & Media    ComfyUI, Arbo
  AI - Dormant          stopped rollback seats + retired auditions

Relabel each stack's homepage.group so canonical stacks/ matches the live
containers on ana-ml2, ana-docker, and irv-ml1. Dormant stacks were refreshed
with `docker compose up --no-start` so they carry the new label while staying
stopped (compose-start rollback preserved). settings.yaml drives tab/order/
columns; services.yaml and README updated to the new scheme.
2026-07-14 20:05:50 -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://10.100.79.3:${COSYVOICE_PORT}