Voice-over phase 1: VoxCPM2 GGUF TTS server on Dankclaw CPU + voice-registry shim + omp speech role #3

Closed
opened 2026-10-17 22:34:31 -07:00 by dank · 1 comment
Owner

Research 2026-10-17 (scouts SpeachesDeploy + TtsLandscape2026, live fleet census).

Goal

Custom (cloned) voice for the omp tts tool, fully local, zero production impact.

Why not the alternatives

  • Upstream Speaches: Kokoro+Piper only, no cloning (stalled since v0.9.0-rc.3). openedai-speech archived 2026-01-04; XTTS-v2 = 920 Elo graveyard + CPML non-commercial weights.
  • GPU slots measured empty: 3090 22752/24576 MiB (frank-zealot); 2× R9700 ~33.9/34.2 GB each (frank-archon). Qwen3-TTS 1.7B + vLLM-Omni (the only true /v1/audio/voices clone registry) is the GPU endgame when a card frees.
  • llama.cpp-omni llama-tts-server DOES expose OpenAI /v1/audio/speech but voice= is reserved; cloning needs per-request reference_audio (base64 WAV) — invisible to the omp tts schema → needs a ~30-line voice-registry shim (voice name → stored ref wav → inject reference_audio).

Scope

  1. Build llama.cpp-omni (llama-tts-server target) on Dankclaw; GGUFs from openbmb/VoxCPM2 (Apache-2.0): BaseLM-F16 ~3 GB (Q8_0 ~1.5 GB) + Acoustic-F16 1.83 GB.
  2. Quadlet podman service :8880 on Dankclaw (CPU; unified memory, ~19 Gi available + reclaimable cache, 439 GB disk free).
  3. Voice shim :8890: voice=<name> → reference_audio from voices/<name>.wav; clone registration = drop a WAV.
  4. models.yml: provider api: openai-speech, auth: none, baseUrl http://192.168.0.143:8890/v1; modelRoles.speech → it; retry.fallbackChains.speech keeps local/kokoro.
  5. Measure RTF on the Ryzen AI Max+ 395 CPU (4090 published 0.25–0.38; CPU unmeasured).

Acceptance

omp tts call with voice=frank returns a WAV audibly resembling the reference; stock kokoro fallback still resolves.

Refs: full landscape report tts-landscape-report.md (session memory dir).

Research 2026-10-17 (scouts SpeachesDeploy + TtsLandscape2026, live fleet census). ## Goal Custom (cloned) voice for the omp `tts` tool, fully local, zero production impact. ## Why not the alternatives - Upstream Speaches: Kokoro+Piper only, **no cloning** (stalled since v0.9.0-rc.3). `openedai-speech` archived 2026-01-04; XTTS-v2 = 920 Elo graveyard + CPML non-commercial weights. - GPU slots measured empty: 3090 22752/24576 MiB (frank-zealot); 2× R9700 ~33.9/34.2 GB each (frank-archon). Qwen3-TTS 1.7B + vLLM-Omni (the only true `/v1/audio/voices` clone registry) is the GPU endgame when a card frees. - `llama.cpp-omni` `llama-tts-server` DOES expose OpenAI `/v1/audio/speech` but `voice=` is reserved; cloning needs per-request `reference_audio` (base64 WAV) — invisible to the omp tts schema → needs a ~30-line voice-registry shim (voice name → stored ref wav → inject `reference_audio`). ## Scope 1. Build llama.cpp-omni (`llama-tts-server` target) on Dankclaw; GGUFs from openbmb/VoxCPM2 (Apache-2.0): BaseLM-F16 ~3 GB (Q8_0 ~1.5 GB) + Acoustic-F16 1.83 GB. 2. Quadlet podman service `:8880` on Dankclaw (CPU; unified memory, ~19 Gi available + reclaimable cache, 439 GB disk free). 3. Voice shim `:8890`: `voice=<name>` → `reference_audio` from `voices/<name>.wav`; clone registration = drop a WAV. 4. `models.yml`: provider `api: openai-speech`, `auth: none`, baseUrl `http://192.168.0.143:8890/v1`; `modelRoles.speech` → it; `retry.fallbackChains.speech` keeps `local/kokoro`. 5. Measure RTF on the Ryzen AI Max+ 395 CPU (4090 published 0.25–0.38; CPU unmeasured). ## Acceptance omp `tts` call with `voice=frank` returns a WAV audibly resembling the reference; stock kokoro fallback still resolves. Refs: full landscape report `tts-landscape-report.md` (session memory dir).
Author
Owner

Moved to dank/serverAppConfigs#2 — fleet infrastructure belongs in serverAppConfigs, not agent config.

Moved to dank/serverAppConfigs#2 — fleet infrastructure belongs in serverAppConfigs, not agent config.
dank closed this issue 2026-10-17 22:51:38 -07:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dank/command-center#3