sw-voice/swamiji-artifact-abc-grid
Where does the end-of-clip artifact come from? Reported symptom: short polite replies "mess up at the end", and a "huge high" is audible after the words finish — sometimes even when the sentence ends in a full stop. Three candidate causes: the model, the streaming, or the Opus codec. Each phrase here is generated twice — ending in ! and ending in . — and each generation is rendered three ways, so exactly one variable moves at a time. Six players per row. rendering what it… See the full description on the dataset page: https://huggingface.co/datasets/sw-voice/swamiji-artifact-abc-grid.
Where does the end-of-clip artifact come from?
Reported symptom: short polite replies "mess up at the end", and a "huge high" is audible after the words finish — sometimes even when the sentence ends in a full stop. Three candidate causes: the model, the streaming, or the Opus codec.
Each phrase here is generated twice — ending in ! and ending in . — and each generation is rendered three ways, so exactly one variable moves at a time. Six players per row.
The TTS tab sends raw PCM and never touches Opus; the Conversation tab is Opus. So direct vs opus is exactly the difference between the two tabs.
Model: sw-voice/swamiji-voxcpm2-ft-src0-lr0.0001-10ep-deva (src0), cfg_value=1.5, inference_timesteps=10, non-fp16.
Verdict
1. Streaming is not the cause. Every generation came back stream_identical = True with zero scheduler gaps. The engine runs at RTF ~0.13, far ahead of realtime, so chunks always arrive before their slot.
2. Opus is not the cause either. It raises the noise floor in the trailing silence — worst tail peak -43.7 dBFS direct vs -40.2 dBFS through Opus — but that is a codec ring-out down at −70 to −80 dBFS. Real, and far too quiet to be a "huge high".
3. The model is the cause, and the trigger is an utterance-final `!`. Mean trailing silence is 0.61 s on the ! arm against 0.26 s on the . arm. More tellingly, the loud transient only ever appears in the ! arm, sitting inside that longer tail:
welcome_short/bang→ -43.7 dBFS in the trailing silencescope/bang→ -48.7 dBFS in the trailing silence
A transient at −44 dBFS after a second of silence is clearly audible. Their . counterparts end at about −90 dBFS, i.e. true digital silence.
It is also intermittent, not deterministic: sampling is unseeded, and a ! phrase that is clean on one draw produces the artifact on another. That matches ! appearing in only 0.1% of the fine-tune's training labels — the model has barely seen it and its behaviour there is unstable.
Note the pattern is specifically utterance-final. A ! in the middle ("You are very welcome! Jaya Guru Datta.") is harmless; the tail is clean.
Per-phrase detail
The fix this implies
Do not chase the codec. Strip or replace utterance-final ! before synthesis — the orchestrator writes these acks, so the cheapest correct fix is to normalise terminal ! to . in the text that reaches TTS. Trimming trailing silence at the engine output would also remove the transient, since it lives entirely inside the tail.
