Repository navigation
Full-model speaker-tagged dialogue can fail to emit its stop #32
Description
Speaker-tagged requests accepted by #28 can reach the frame cap on the pinned CUDA full-model profile. This tracks the known limitation separately so #28 can merge with it documented, as discussed in its review.
Reproduced on NVIDIA GB10, Ubuntu 24.04.5, driver 580.178.04, CUDA 13.0.88 and Zig 0.17.0, using recipe 9ec2318 and verified checkpoint revisions full e0a9218aa48888270f06ef1ed9ea67622c0e17d2 / NVFP4 494db08481db952f834b2241bce63fb3dfa72554.
Request:
{"model":"fishaudio/drama-3","input":"<|speaker:1|> Is the train here? <|speaker:15|> It arrives at seven fifteen.","voice":"dialogue","response_format":"pcm","seed":1,"temperature":1.0,"top_p":0.9,"top_k":30}Server: 1024 frames, 8192 context, one request at a time, prompt cache 0, keep-warm 0. Output is mono 44.1 kHz signed 16-bit PCM. The dialogue catalog has matching speaker 1/15 transcripts. Each profile generated its own synthetic references with seeds 42 and 43: “The small boat crossed the lake.” and “A bright bird landed near the window.” The native drama3-generate encoder prepared them with the selected profile's codec.
Five diagnostic seeds (1–5) per case:
| Profile / case | Natural stop | Frame cap | Capped seeds |
|---|---|---|---|
| Full, tagged matching catalog (1/15) | 2/5 | 3/5 | 1, 2, 4 |
| Full, tags removed, same catalog | 5/5 | 0/5 | — |
| Full, tagged built-in voice without references | 4/5 | 1/5 | 2 |
| Full, both input and references relabeled 0/1 | 3/5 | 2/5 | 3, 5 |
| NVFP4, tagged matching catalog | 5/5 | 0/5 | — |
| NVFP4, tags removed, same catalog | 5/5 | 0/5 | — |
Expected: these short requests emit their natural stop. The capped replies instead return HTTP 200, X-Finish-Reason: length, and 4,194,304 PCM bytes (47.554 seconds). The main full-model tagged case takes 35.59–35.87 seconds to render those capped replies; its two natural stops are 4.55–5.02 seconds of audio. This is a stopping diagnostic, not a performance or listening-quality claim.
Relabeling to 0/1 and removing the reference catalog do not reliably avoid it. The full profile has no CFG here; NVFP4 uses its recipe defaults, gamma 1.5 with batched guidance. Engine pins, weights and guidance differ, so this does not isolate quantization as the cause. No Metal or Python-reference result is claimed.
The full-model speaker patch changes admission of nonzero tags, not the existing prompt assembly or end-of-speech selection logic. The cause is not isolated. A useful next diagnostic is the prompt rows and selected semantic/end-of-speech tokens for full-model seeds 1, 2 and 4; the fix should address termination without silently stripping speaker roles or treating a capped reply as successful completion.
The per-seed summary and documented limitation are committed in #28 at 6cd48e6. Raw requests, PCM/WAV, reference catalogs and logs are retained privately.
Activity
gpu-checks: I compare PR #33's v1.1.9 tree against main
plotarmordev commentedon Oct 30, 2026
Measured on TensorFold v1.1.9 (PR #33 diagnostic): tagged dialogue still reaches the frame cap on 3/5 seeds, untagged 0/5, byte-identical to the previous pin with patches 0001–0015. So v1.1.9 doesn't change this; the cause is still open.