Captures this session's durable state: the RP-voice rebuild (chatterbox->dots v0.22.2, config-driven voices + two-voice dialogue/narration split v0.22.3) and the personal WT :8081 deadlock recovery + root-cause routing to worldtree-dev (WT #401). New substrate foot-guns: dots :8198 is a fleet switchboard, dots' language validator is an alias-mapper, per-origin TTS toggle, WT hang signature, dots-streaming-pcm-not-headerless. Three detail files added under persistent-memory.d/.
1.5 KiB
[2026-08-11] TTS migrated chatterbox-fast → dots-tts (v0.22.2, 38b78d8).
Operator-directed after an infra-ops A/B win ("very good"). dots-tts = rednote-hilab
dots.tts-soar on irv-ml1, replacing chatterbox-fast. tts.py stays the single swap seam.
Deltas (everything else — streaming placeholder-header WAV shape, browser Web-Audio PCM
decode, POST /api/tts, the DEC-5 serialize lock, INV-TTS-1..4 — unchanged):
- Gateway body OpenAI-shaped:
{input, voice, response_format:"wav", stream:true}—inputnot chatterbox'stext,response_formatnotformat. Closer to the Zonos-era client.DOTS_TTS_URL = http://10.100.79.3:8198/v1/audio/speechreplacedCHATTERBOX_TTS_URL. - Sample rate 24000 → 48000 Hz (browser
SR = 48000inindex.html, else ~2× too fast). - Default voice
glados_25s→glados(dots voices: donut/glados/emmie/miranda). donut carries over. - Serialized single-consumer — dots renders one generation at a time; satisfied by the existing DEC-5 lock, no code change.
- Affect stays dropped (DEC-7): dots has no emotion knob, same as chatterbox — NOT a fresh loss.
Live-verified end-to-end on :8765 (RIFF/WAVE 48kHz mono s16le through /api/tts); 520 tests
green. Contract donut_voiced_interview.contract.md amended (migration banner + DEC-1/3/8/9a +
FN blocks). chatterbox-fast :8197 kept as rollback, then reclaimed by infra-ops once
operator ear-confirmed. Superseded next day by config-driven voices (see
2026-08-12-config-voices-two-voice).