From cac381a114442be3d6611c1b6bac3c78f78b2bd4 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Sun, 2 Aug 2026 13:14:12 -0700 Subject: [PATCH] memory: donut voice expanded with onyx-58 clips (16.3s->52s ref) Folded the onyx-58 Booth bundle (seg101/seg110/seg148, all Princess Donut per operator-confirmed misdiarization of seg148) into the Zonos gateway donut voice reference alongside the original 65-frost seg000. New ref = 52.0s @ 44.1kHz mono s16, deployed to irv-ml1 live bind-mount + build-source tree; old ref backed up. A/B audition in booth donut-onyx58. --- persistent-memory.d/2026-08-02-mimir-inbox-arc.md | 2 +- persistent-memory.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/persistent-memory.d/2026-08-02-mimir-inbox-arc.md b/persistent-memory.d/2026-08-02-mimir-inbox-arc.md index df961ef..9b3e484 100644 --- a/persistent-memory.d/2026-08-02-mimir-inbox-arc.md +++ b/persistent-memory.d/2026-08-02-mimir-inbox-arc.md @@ -19,7 +19,7 @@ The browser-facing half of the #377 Muninn ingestion arc, end to end: mimir-inbo Rebuilt `muninn-gate` off `vh/muninn-gate` main `bc04c4c` (dispatch 0.1.4→0.1.5) so the gate serves the new `concept_schema`/`concept_schema_source` row fields (computed gate-side). Gate version unchanged 0.0.14 (dual-tag the SHA). Build needs the vh gitea token as a BuildKit secret (`--secret id=gitea_pw`, UV_INDEX_GITEA_USERNAME=vh, drop+shred). Recreate with `compose up -d` (NOT bare restart — needs the new image). Verified: P&P job serves `concept_schema='fiction'`, `concept_schema_source=null` (null correct — pre-b164 job). Registry tags by commit SHA — `v1.0.0bNNN` docker tags don't resolve; use the deployed SHA (confirm `--reindex` present before using an image for a data-op). ## donut voice (65-frost → Zonos gateway) -Operator: "pick up 65-frost, use that bundle as a voice for a character named donut." 65-frost = a **Booth id** (`~/booth-data/65-frost/`) holding a curated yt-voice-clipper dataset (`dataset-…-curated.zip`: 4 clips + manifest, all SPEAKER_02 = Princess Donut). **Zonos gateway voice registry = a filesystem drop:** `.wav` in the voices dir (44.1kHz mono s16 PCM) auto-registers as `voice:""` on **startup** (needs a restart). The LIVE dir is the bind mount `/opt/docker/compose/zonos-gateway/voices/` (lkraven-writable), NOT the working tree. Built `Donut.wav` from seg000 (best clip), dropped it, restarted → `voice:"donut"` live in the gateway AND the Asset Engine's make form. Also copied to the build-source tree `~/zonos-gateway/voices/` for rebuild-durability (true canonical = the gitea repo, not yet CI-wired). Auditioned in booth `donut-voice`. +Operator: "pick up 65-frost, use that bundle as a voice for a character named donut." 65-frost = a **Booth id** (`~/booth-data/65-frost/`) holding a curated yt-voice-clipper dataset (`dataset-…-curated.zip`: 4 clips + manifest, all SPEAKER_02 = Princess Donut). **Zonos gateway voice registry = a filesystem drop:** `.wav` in the voices dir (44.1kHz mono s16 PCM) auto-registers as `voice:""` on **startup** (needs a restart). The LIVE dir is the bind mount `/opt/docker/compose/zonos-gateway/voices/` (lkraven-writable), NOT the working tree. Built `Donut.wav` from seg000 (best clip), dropped it, restarted → `voice:"donut"` live in the gateway AND the Asset Engine's make form. Also copied to the build-source tree `~/zonos-gateway/voices/` for rebuild-durability (true canonical = the gitea repo, not yet CI-wired). Auditioned in booth `donut-voice`. **Expanded 2026-08-02 (onyx-58 bundle):** operator curated a 2nd Booth bundle `onyx-58` (`dataset-467d2cf8…curated.zip`, 3 Donut clips) as additions. Rebuilt the reference = **seg000 (65-frost) + seg101/seg110/seg148 (onyx-58)** ffmpeg-concat + resampled 24k→44.1k mono s16 = **52.0s**. `seg148` was diarized SPEAKER_03 but is Donut (operator-confirmed misdiarize → included). Assembly is NOT `assemble_voice.py` (that `-c copy` can't resample + caps ~15s); used a manual `aresample=44100,aformat=…,concat=n=4` filter. Backed up old ref → `irv-ml1:~/Donut.wav.pre-onyx58`; dropped to live bind-mount + build-source tree; `docker compose restart` (healthy 2s, `voice:"donut"` still 1 of 9). A/B booth `donut-onyx58` (A=old 16.3s ref, B=new 52s ref, same line). Longer ref is fine: gateway passes it as `speaker_audio_base64` → speaker *embedding*, not an audio prefix, so more clean same-source audio = more robust embedding. ## Zonos streaming (no gateway change needed) ratatoskr wanted play-as-it-arrives. `/v1/audio/speech` ALREADY streams — chunked `StreamingResponse`, opens native `/tts/generate` with `stream=True`, wraps as a streaming int16 WAV with `0xFFFFFFFF` placeholder sizes (meant for progressive `