Skip to content
  • Stefy Lanza (nextime / spora )'s avatar
    49543895
    say what a voice can speak · 49543895
    Stefy Lanza (nextime / spora ) authored
    
    
    Every TTS model published `languages: null` on /v1/models while the STT models
    published theirs correctly. Nothing in the server restricted the languages — it
    simply never named them, so a client was told nothing about what any voice could
    say and could only discover a language by trying it. That is how XTTS-v2's
    seventeen languages got taken for English and Italian: those were the two
    somebody tried.
    
    Each set is read from the engine's own files rather than assumed — XTTS from its
    config.json, bark from its 13-language speaker bank, parler from its model card,
    and kokoro derived at call time from the accents already encoded in its voice
    ids, so adding a voice family cannot leave its language behind. An engine whose
    languages depend on the checkpoint (melo, the generic transformers fallback)
    claims nothing: a wrong list is worse than none, because a client that believes
    it sends text the voice cannot pronounce and gets noise back with no error. A
    `languages` list on the model's own card still wins.
    
    Bark's voice list was the ten English speakers, which is where "bark is English"
    literally came from; it now covers all 13 languages, English first so a client
    taking voices[0] as its default still gets an English speaker. The voices are
    published too, so a voice picker no longer needs to load a model to ask it —
    and since /v1/models is polled, the voices cache is memoised against its own
    mtime rather than re-read per model per poll.
    
    Co-Authored-By: default avatarClaude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_014T3rZozi1Ehk96NG1WesgC
    49543895
    say what a voice can speak
    Stefy Lanza (nextime / spora ) authored
    
    
    Every TTS model published `languages: null` on /v1/models while the STT models
    published theirs correctly. Nothing in the server restricted the languages — it
    simply never named them, so a client was told nothing about what any voice could
    say and could only discover a language by trying it. That is how XTTS-v2's
    seventeen languages got taken for English and Italian: those were the two
    somebody tried.
    
    Each set is read from the engine's own files rather than assumed — XTTS from its
    config.json, bark from its 13-language speaker bank, parler from its model card,
    and kokoro derived at call time from the accents already encoded in its voice
    ids, so adding a voice family cannot leave its language behind. An engine whose
    languages depend on the checkpoint (melo, the generic transformers fallback)
    claims nothing: a wrong list is worse than none, because a client that believes
    it sends text the voice cannot pronounce and gets noise back with no error. A
    `languages` list on the model's own card still wins.
    
    Bark's voice list was the ten English speakers, which is where "bark is English"
    literally came from; it now covers all 13 languages, English first so a client
    taking voices[0] as its default still gets an English speaker. The voices are
    published too, so a voice picker no longer needs to load a model to ask it —
    and since /v1/models is polled, the voices cache is memoised against its own
    mtime rather than re-read per model per poll.
    
    Co-Authored-By: default avatarClaude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_014T3rZozi1Ehk96NG1WesgC
Loading