mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-10-02 16:45:15 -07:00
- New ChatterboxTurboTTSBackend wrapping ChatterboxTurboTTS (ResembleAI/chatterbox-turbo) - English-only 350M model with paralinguistic tag support ([laugh], [cough], [chuckle]) - Bypasses upstream token=True bug by calling snapshot_download(token=None) + from_local() - Same CPU-on-macOS forcing and torch.load monkey-patching as multilingual backend - Full engine integration: generate, stream, model status/download/delete endpoints - Language dropdown now shows only languages supported by the selected engine - Per-engine language maps: Qwen (10), LuxTTS (en), Chatterbox (23), Turbo (en) - Auto-switches to English when selecting English-only engines - Backend language regex expanded to accept all 23 Chatterbox languages
87 lines
1.8 KiB
TypeScript
87 lines
1.8 KiB
TypeScript
/**
|
|
* Supported languages for voice generation, per engine.
|
|
*
|
|
* Qwen3-TTS supports 10 languages.
|
|
* LuxTTS is English-only.
|
|
* Chatterbox Multilingual supports 23 languages.
|
|
* Chatterbox Turbo is English-only.
|
|
*/
|
|
|
|
/** All languages that any engine supports. */
|
|
export const ALL_LANGUAGES = {
|
|
ar: 'Arabic',
|
|
da: 'Danish',
|
|
de: 'German',
|
|
el: 'Greek',
|
|
en: 'English',
|
|
es: 'Spanish',
|
|
fi: 'Finnish',
|
|
fr: 'French',
|
|
he: 'Hebrew',
|
|
hi: 'Hindi',
|
|
it: 'Italian',
|
|
ja: 'Japanese',
|
|
ko: 'Korean',
|
|
ms: 'Malay',
|
|
nl: 'Dutch',
|
|
no: 'Norwegian',
|
|
pl: 'Polish',
|
|
pt: 'Portuguese',
|
|
ru: 'Russian',
|
|
sv: 'Swedish',
|
|
sw: 'Swahili',
|
|
tr: 'Turkish',
|
|
zh: 'Chinese',
|
|
} as const;
|
|
|
|
export type LanguageCode = keyof typeof ALL_LANGUAGES;
|
|
|
|
/** Per-engine supported language codes. */
|
|
export const ENGINE_LANGUAGES: Record<string, readonly LanguageCode[]> = {
|
|
qwen: ['zh', 'en', 'ja', 'ko', 'de', 'fr', 'ru', 'pt', 'es', 'it'],
|
|
luxtts: ['en'],
|
|
chatterbox: [
|
|
'ar',
|
|
'da',
|
|
'de',
|
|
'el',
|
|
'en',
|
|
'es',
|
|
'fi',
|
|
'fr',
|
|
'he',
|
|
'hi',
|
|
'it',
|
|
'ja',
|
|
'ko',
|
|
'ms',
|
|
'nl',
|
|
'no',
|
|
'pl',
|
|
'pt',
|
|
'ru',
|
|
'sv',
|
|
'sw',
|
|
'tr',
|
|
'zh',
|
|
],
|
|
chatterbox_turbo: ['en'],
|
|
} as const;
|
|
|
|
/** Helper: get language options for a given engine. */
|
|
export function getLanguageOptionsForEngine(engine: string) {
|
|
const codes = ENGINE_LANGUAGES[engine] ?? ENGINE_LANGUAGES.qwen;
|
|
return codes.map((code) => ({
|
|
value: code,
|
|
label: ALL_LANGUAGES[code],
|
|
}));
|
|
}
|
|
|
|
// ── Backwards-compatible exports used elsewhere ──────────────────────
|
|
export const SUPPORTED_LANGUAGES = ALL_LANGUAGES;
|
|
export const LANGUAGE_CODES = Object.keys(ALL_LANGUAGES) as LanguageCode[];
|
|
export const LANGUAGE_OPTIONS = LANGUAGE_CODES.map((code) => ({
|
|
value: code,
|
|
label: ALL_LANGUAGES[code],
|
|
}));
|