Files
gluttony-10 e6417cb6c3 fix: stop Vietnamese texts from tripping the audio quality gate
Task 2109550952129454082: Vietnamese TTS died with 'implausibly short
audio' after two identical attempts even though the model finished the
text (normal EOS at ~7% of its decode budget).

Root causes, both in the plugin-side quality gate:
- _LATIN_WORD only matched ASCII [A-Za-z0-9], so every diacritic letter
  split a Vietnamese word into several tokens (chào->2, người->3),
  inflating the counted word count 1.5-2.5x.
- The latin_words/5.0 duration floor is English-calibrated; Vietnamese
  orthographic words are single syllables spoken at up to ~7 syl/s.

Fixes:
- Unicode-aware word regex so diacritic words count once.
- Vietnamese-diacritic texts (>=3 Vietnamese-specific letters) use a
  7 words/s floor; English/other Latin stays at 5, CJK unchanged.
- Error message now reports the applied latin_rate.

Also fix the silent voice-LoRA loss: _resolve_lora_path only searched
voxcpm_lora folders, so a LoRA synced into the shared loras/ directory
never loaded (loading without LoRA). Falls back to the generic 'loras'
folder type by exact filename, and _list_lora_files surfaces
voxcpm-named weights from there so the dropdown and resolution agree.

Verified e2e on a production-class instance: 148-word diacritic
Vietnamese text produced a complete 29.44s read (5.0 words/s), zero
gate trips, LoRA loaded rank=32 with 384 parameters; unit suite 23/23.
2026-10-12 17:20:31 +08:00
..