Skip to content
Commit 49543895 authored by Stefy Lanza (nextime / spora )'s avatar Stefy Lanza (nextime / spora )
Browse files

say what a voice can speak



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
parent 14d34003
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment