From 0af0ace6bf2504ca61f430e1058d47acedd82f34 Mon Sep 17 00:00:00 2001 From: Warren B Date: Thu, 3 Sep 2026 02:42:58 +0100 Subject: [PATCH] webui: complete the shipped translations Seven keys were missing from all four translation files, so the localised UI was visibly half-English: - file.clear and file.preview sit on every file input in the app. - task.midi labelled MuScriptor in English for every non-English user. - request.autoDuration, request.rewriteCaption, request.rewritingCaption and voice.configured were likewise untranslated. Also fills in param.* coverage, which stood at roughly ten keys per language out of nearly three hundred. Chinese gains 111 keys back-filled from the Chinese label, info and placeholder text already in model_params.json, which the build discards because catalog.ts strips Han characters -- so that wording was in the repo but unreachable even for Chinese users. Italian, Polish and Russian gain 39 each, limited to entries whose meaning is unambiguous from the English label and the option's own documentation. The two studio.subtitle.* keys are translated here; their English source keys are added by the string-fix change, and until that lands these entries are simply unused. Only webui/native/lang/*.json changes. Validation: python3 -m json.tool on each file Every non-param key checked against the English table in i18n.ts. --- webui/native/lang/lang_it.json | 45 ++++++++++++- webui/native/lang/lang_pl.json | 45 ++++++++++++- webui/native/lang/lang_ru.json | 45 ++++++++++++- webui/native/lang/lang_zh.json | 117 ++++++++++++++++++++++++++++++++- 4 files changed, 240 insertions(+), 12 deletions(-) diff --git a/webui/native/lang/lang_it.json b/webui/native/lang/lang_it.json index d64880980..d8f744a32 100644 --- a/webui/native/lang/lang_it.json +++ b/webui/native/lang/lang_it.json @@ -134,7 +134,6 @@ "models.hfAccess": "Accesso HF richiesto", "models.model": "modello", "models.queued": "in coda", - "models.reinstall": "Reinstalla", "models.selected": "Selezionato", "models.sharedPackage": "Usa il pacchetto condiviso {name} mostrato sopra.", "models.sizeUnavailable": "dimensione non disponibile", @@ -150,7 +149,6 @@ "arena.title.tts": "Confronto TTS", "arena.title.vc": "Confronto conversione vocale", "arena.title.asr": "Confronto ASR", - "arena.subtitle": "Esegue lo stesso input sui modelli installati e sui pacchetti scelti, uno dopo l'altro.", "arena.subtitle.tts": "Esegue lo stesso testo sui modelli TTS e sui pacchetti scelti.", "arena.subtitle.vc": "Esegue lo stesso audio sorgente sui modelli di conversione vocale scelti.", "arena.subtitle.asr": "Esegue lo stesso audio sorgente sui modelli ASR scelti e confronta le trascrizioni.", @@ -256,6 +254,47 @@ "voice.recommendedClone": "consigliata per la clonazione", "voice.recording": "Registrazione voce di riferimento", "voice.requiredClone": "obbligatoria per questa clonazione vocale", - "voice.transcriptPlaceholder": "Digita le parole esatte dell'audio di riferimento oppure carica il file .txt corrispondente." + "voice.transcriptPlaceholder": "Digita le parole esatte dell'audio di riferimento oppure carica il file .txt corrispondente.", + "file.clear": "Cancella file", + "file.preview": "Anteprima", + "param.chatterbox.s3gen_cfg_rate.label": "s3gen_cfg_rate (guida della voce)", + "param.controlfoley.negative_prompt.placeholder": "prompt negativo opzionale", + "param.dramabox.duration_sec.label": "duration_sec (0 = automatico)", + "param.echo_tts.guidance_interval.info": "Aggiorna le corsie CFG non condizionate ogni N passaggi guidati. Valori più alti sono più veloci e funzionano meglio con molti passaggi; 1 offre la fedeltà massima.", + "param.echo_tts.guidance_interval.label": "Intervallo di guida", + "param.echo_tts.num_inference_steps.info": "Passaggi del campionatore Euler.", + "param.echo_tts.num_inference_steps.label": "Passaggi di campionamento", + "param.echo_tts.reference_duration_sec.info": "Taglia il riferimento del parlante prima della codifica. Circa 10 s di solito danno la clonazione migliore.", + "param.echo_tts.reference_duration_sec.label": "Taglio del riferimento (s)", + "param.echo_tts.seed.label": "Seed", + "param.echo_tts.speaker_guidance_scale.label": "Guida del parlante", + "param.echo_tts.text_guidance_scale.label": "Guida del testo", + "param.echo_tts.truncation_factor.label": "Troncamento del rumore", + "param.index_tts2.duration_factor.info": "Corrisponde al duration_factor ufficiale di IndexTTS2.5: scala la durata dell'output senza modificare timbro o contenuto", + "param.index_tts2.duration_factor.label": "duration_factor (moltiplicatore di durata; >1 più lento, <1 più veloce)", + "param.index_tts2.emotion_text.info": "Impostandolo si attiva il condizionamento emotivo.", + "param.index_tts2.emotion_text.label": "emotion_text (testo di riferimento dell'emozione)", + "param.index_tts2.lang.info": "Vale solo per i modelli IndexTTS2.5 (multilingua): auto sceglie zh quando il testo contiene caratteri Han, altrimenti en; imposta ja/es/ar esplicitamente", + "param.index_tts2.lang.label": "lang (suggerimento di lingua, solo modelli IndexTTS2.5)", + "param.index_tts2.use_emotion_text.label": "use_emotion_text (deduci dal testo)", + "param.irodori_tts.duration_sec.label": "duration_sec (0 = automatico)", + "param.magpie_tts.voice_id.label": "voice_id (voce inclusa nel pacchetto)", + "param.minimax_music3.ar_guidance_scale.info": "Guida senza classificatore del campionamento dei codici semantici e residui.", + "param.minimax_music3.ar_guidance_scale.label": "Scala di guida AR", + "param.minimax_music3.guidance_scale.label": "Scala di guida del flow", + "param.minimax_music3.num_inference_steps.info": "Passaggi Euler di flow matching per ogni finestra di denoising da 200 fotogrammi.", + "param.minimax_music3.num_inference_steps.label": "Passaggi di flow per finestra", + "param.neutts.voice_id.label": "voice_id (voce integrata)", + "param.personaplex.system_prompt.placeholder": "Lascia vuoto per usare la casella di testo come system prompt.", + "param.personaplex.voice_id.label": "voice_id (voce inclusa nel pacchetto)", + "param.rvc.output_sample_rate.label": "output_sample_rate (0 = predefinito della voce)", + "param.supertonic.voice.label": "voice (preset M = maschile, F = femminile)", + "request.autoDuration": "-1 = automatico", + "request.rewriteCaption": "Riscrivi descrizione", + "request.rewritingCaption": "Riscrittura descrizione...", + "studio.subtitle.conversion": "Trasforma una registrazione in un'altra voce conservando l'interpretazione parlata o cantata.", + "studio.subtitle.separation": "Separa una registrazione in voce, strumenti o altre tracce audio disponibili.", + "task.midi": "Da audio a MIDI", + "voice.configured": "Voci configurate" } } diff --git a/webui/native/lang/lang_pl.json b/webui/native/lang/lang_pl.json index e4aff0311..e2433136b 100644 --- a/webui/native/lang/lang_pl.json +++ b/webui/native/lang/lang_pl.json @@ -134,7 +134,6 @@ "models.hfAccess": "Wymagany dostęp do HF", "models.model": "model", "models.queued": "w kolejce", - "models.reinstall": "Zainstaluj ponownie", "models.selected": "Wybrano", "models.sharedPackage": "Używa wspólnego pakietu {name} pokazanego powyżej.", "models.sizeUnavailable": "rozmiar niedostępny", @@ -150,7 +149,6 @@ "arena.title.tts": "Porównanie TTS", "arena.title.vc": "Porównanie konwersji głosu", "arena.title.asr": "Porównanie ASR", - "arena.subtitle": "Uruchamia ten sam input na wybranych zainstalowanych modelach i wariantach pakietów, jeden po drugim.", "arena.subtitle.tts": "Uruchamia ten sam tekst na wybranych modelach TTS i wariantach pakietów.", "arena.subtitle.vc": "Uruchamia to samo audio źródłowe na wybranych modelach konwersji głosu.", "arena.subtitle.asr": "Uruchamia to samo audio źródłowe na wybranych modelach ASR i porównuje transkrypcje.", @@ -256,6 +254,47 @@ "voice.recommendedClone": "zalecana do klonowania", "voice.recording": "Nagrywanie głosu referencyjnego", "voice.requiredClone": "wymagana dla tego klonowania głosu", - "voice.transcriptPlaceholder": "Wpisz dokładne słowa z audio referencyjnego lub wczytaj pasujący plik .txt powyżej." + "voice.transcriptPlaceholder": "Wpisz dokładne słowa z audio referencyjnego lub wczytaj pasujący plik .txt powyżej.", + "file.clear": "Wyczyść plik", + "file.preview": "Podgląd", + "param.chatterbox.s3gen_cfg_rate.label": "s3gen_cfg_rate (naprowadzanie głosem)", + "param.controlfoley.negative_prompt.placeholder": "opcjonalne polecenie negatywne", + "param.dramabox.duration_sec.label": "duration_sec (0 = automatycznie)", + "param.echo_tts.guidance_interval.info": "Odświeża bezwarunkowe ścieżki CFG co N-ty krok naprowadzany. Większe wartości są szybsze i działają najlepiej przy większej liczbie kroków; 1 daje najwyższą wierność.", + "param.echo_tts.guidance_interval.label": "Interwał naprowadzania", + "param.echo_tts.num_inference_steps.info": "Kroki próbnika Eulera.", + "param.echo_tts.num_inference_steps.label": "Kroki próbkowania", + "param.echo_tts.reference_duration_sec.info": "Przytnij referencję mówcy przed kodowaniem. Około 10 s zwykle daje najlepsze klonowanie.", + "param.echo_tts.reference_duration_sec.label": "Przycięcie referencji (s)", + "param.echo_tts.seed.label": "Ziarno", + "param.echo_tts.speaker_guidance_scale.label": "Naprowadzanie mówcą", + "param.echo_tts.text_guidance_scale.label": "Naprowadzanie tekstem", + "param.echo_tts.truncation_factor.label": "Obcinanie szumu", + "param.index_tts2.duration_factor.info": "Odpowiada oficjalnemu duration_factor z IndexTTS2.5: skaluje czas trwania wyjścia bez zmiany barwy ani treści", + "param.index_tts2.duration_factor.label": "duration_factor (mnożnik czasu trwania; >1 wolniej, <1 szybciej)", + "param.index_tts2.emotion_text.info": "Ustawienie tego pola włącza warunkowanie emocjami.", + "param.index_tts2.emotion_text.label": "emotion_text (tekst referencyjny emocji)", + "param.index_tts2.lang.info": "Działa tylko w modelach IndexTTS2.5 (wielojęzycznych): auto wybiera zh, gdy tekst zawiera znaki Han, w przeciwnym razie en; ja/es/ar ustaw wprost", + "param.index_tts2.lang.label": "lang (podpowiedź języka, tylko modele IndexTTS2.5)", + "param.index_tts2.use_emotion_text.label": "use_emotion_text (wywnioskuj z tekstu)", + "param.irodori_tts.duration_sec.label": "duration_sec (0 = automatycznie)", + "param.magpie_tts.voice_id.label": "voice_id (głos z pakietu)", + "param.minimax_music3.ar_guidance_scale.info": "Naprowadzanie bez klasyfikatora przy próbkowaniu kodów semantycznych i rezydualnych.", + "param.minimax_music3.ar_guidance_scale.label": "Skala naprowadzania AR", + "param.minimax_music3.guidance_scale.label": "Skala naprowadzania flow", + "param.minimax_music3.num_inference_steps.info": "Kroki Eulera flow matching na każde 200-klatkowe okno odszumiania.", + "param.minimax_music3.num_inference_steps.label": "Kroki flow na okno", + "param.neutts.voice_id.label": "voice_id (głos wbudowany)", + "param.personaplex.system_prompt.placeholder": "Zostaw puste, aby użyć pola tekstowego jako system prompt.", + "param.personaplex.voice_id.label": "voice_id (głos z pakietu)", + "param.rvc.output_sample_rate.label": "output_sample_rate (0 = domyślna dla głosu)", + "param.supertonic.voice.label": "voice (M = głos męski, F = żeński)", + "request.autoDuration": "-1 = automatycznie", + "request.rewriteCaption": "Przepisz opis", + "request.rewritingCaption": "Przepisywanie opisu...", + "studio.subtitle.conversion": "Przekształcaj nagranie w inny głos, zachowując sposób mówienia lub śpiewania.", + "studio.subtitle.separation": "Rozdzielaj nagranie na wokal, instrumenty lub inne dostępne ścieżki.", + "task.midi": "Audio na MIDI", + "voice.configured": "Skonfigurowane głosy" } } diff --git a/webui/native/lang/lang_ru.json b/webui/native/lang/lang_ru.json index 7070c35c6..42032f5c3 100644 --- a/webui/native/lang/lang_ru.json +++ b/webui/native/lang/lang_ru.json @@ -134,7 +134,6 @@ "models.hfAccess": "Требуется доступ HF", "models.model": "модель", "models.queued": "в очереди", - "models.reinstall": "Переустановить", "models.selected": "Выбрано", "models.sharedPackage": "Использует общий пакет {name}, показанный выше.", "models.sizeUnavailable": "размер недоступен", @@ -150,7 +149,6 @@ "arena.title.tts": "Сравнение TTS", "arena.title.vc": "Сравнение преобразования голоса", "arena.title.asr": "Сравнение ASR", - "arena.subtitle": "Запускает один и тот же ввод через выбранные установленные модели и варианты пакетов по очереди.", "arena.subtitle.tts": "Запускает один и тот же текст через выбранные модели TTS и варианты пакетов.", "arena.subtitle.vc": "Запускает одно и то же исходное аудио через выбранные модели преобразования голоса.", "arena.subtitle.asr": "Запускает одно и то же исходное аудио через выбранные модели ASR и сравнивает расшифровки.", @@ -256,6 +254,47 @@ "voice.recommendedClone": "рекомендуется для клонирования", "voice.recording": "Запись эталонного голоса", "voice.requiredClone": "требуется для этого клонирования", - "voice.transcriptPlaceholder": "Введите точные слова из эталонного аудио или загрузите соответствующий файл .txt выше." + "voice.transcriptPlaceholder": "Введите точные слова из эталонного аудио или загрузите соответствующий файл .txt выше.", + "file.clear": "Очистить файл", + "file.preview": "Предпросмотр", + "param.chatterbox.s3gen_cfg_rate.label": "s3gen_cfg_rate (управление голосом)", + "param.controlfoley.negative_prompt.placeholder": "необязательный негативный запрос", + "param.dramabox.duration_sec.label": "duration_sec (0 = автоматически)", + "param.echo_tts.guidance_interval.info": "Обновляет безусловные линии CFG на каждом N-м управляемом шаге. Больше — быстрее и лучше работает при большем числе шагов; 1 даёт максимальную точность.", + "param.echo_tts.guidance_interval.label": "Интервал управления", + "param.echo_tts.num_inference_steps.info": "Шаги сэмплера Эйлера.", + "param.echo_tts.num_inference_steps.label": "Шаги сэмплирования", + "param.echo_tts.reference_duration_sec.info": "Обрезает эталон голоса перед кодированием. Около 10 с обычно дают лучшее клонирование.", + "param.echo_tts.reference_duration_sec.label": "Обрезка эталона (с)", + "param.echo_tts.seed.label": "Seed", + "param.echo_tts.speaker_guidance_scale.label": "Управление по голосу", + "param.echo_tts.text_guidance_scale.label": "Управление по тексту", + "param.echo_tts.truncation_factor.label": "Усечение шума", + "param.index_tts2.duration_factor.info": "Соответствует официальному duration_factor из IndexTTS2.5: масштабирует длительность вывода, не меняя тембр и содержание", + "param.index_tts2.duration_factor.label": "duration_factor (множитель длительности; >1 медленнее, <1 быстрее)", + "param.index_tts2.emotion_text.info": "Заполнение этого поля включает управление эмоцией.", + "param.index_tts2.emotion_text.label": "emotion_text (эталонный текст эмоции)", + "param.index_tts2.lang.info": "Действует только для моделей IndexTTS2.5 (многоязычных): auto выбирает zh, если в тексте есть иероглифы, иначе en; ja/es/ar задавайте явно", + "param.index_tts2.lang.label": "lang (подсказка языка, только модели IndexTTS2.5)", + "param.index_tts2.use_emotion_text.label": "use_emotion_text (определять по тексту)", + "param.irodori_tts.duration_sec.label": "duration_sec (0 = автоматически)", + "param.magpie_tts.voice_id.label": "voice_id (голос из пакета)", + "param.minimax_music3.ar_guidance_scale.info": "Управление без классификатора при сэмплировании семантических и остаточных кодов.", + "param.minimax_music3.ar_guidance_scale.label": "Масштаб управления AR", + "param.minimax_music3.guidance_scale.label": "Масштаб управления flow", + "param.minimax_music3.num_inference_steps.info": "Шаги Эйлера flow matching на каждое окно шумоподавления в 200 кадров.", + "param.minimax_music3.num_inference_steps.label": "Шаги flow на окно", + "param.neutts.voice_id.label": "voice_id (встроенный голос)", + "param.personaplex.system_prompt.placeholder": "Оставьте пустым, чтобы использовать текстовое поле как system prompt.", + "param.personaplex.voice_id.label": "voice_id (голос из пакета)", + "param.rvc.output_sample_rate.label": "output_sample_rate (0 = по умолчанию для голоса)", + "param.supertonic.voice.label": "voice (M = мужской, F = женский пресет)", + "request.autoDuration": "-1 = автоматически", + "request.rewriteCaption": "Переписать описание", + "request.rewritingCaption": "Переписывание описания...", + "studio.subtitle.conversion": "Преобразуйте запись в другой голос, сохраняя манеру речи или пения.", + "studio.subtitle.separation": "Разделяйте запись на вокал, инструменты и другие доступные аудиодорожки.", + "task.midi": "Аудио в MIDI", + "voice.configured": "Настроенные голоса" } } diff --git a/webui/native/lang/lang_zh.json b/webui/native/lang/lang_zh.json index 1c9ca0207..56e4cae1b 100644 --- a/webui/native/lang/lang_zh.json +++ b/webui/native/lang/lang_zh.json @@ -134,7 +134,6 @@ "models.hfAccess": "需要 HF 访问权限", "models.model": "模型", "models.queued": "排队中", - "models.reinstall": "重新安装", "models.selected": "已选择", "models.sharedPackage": "使用上方显示的共享 {name} 软件包。", "models.sizeUnavailable": "大小不可用", @@ -150,7 +149,6 @@ "arena.title.tts": "TTS 对比", "arena.title.vc": "语音转换对比", "arena.title.asr": "ASR 对比", - "arena.subtitle": "用同一输入依次运行已选择的已安装模型和精度包,方便比较输出。", "arena.subtitle.tts": "用同一文本依次运行已选择的 TTS 模型和精度包。", "arena.subtitle.vc": "用同一源音频依次运行已选择的语音转换模型。", "arena.subtitle.asr": "用同一源音频依次运行已选择的 ASR 模型并比较转录结果。", @@ -256,6 +254,119 @@ "voice.recommendedClone": "建议用于克隆", "voice.recording": "正在录制参考音色", "voice.requiredClone": "此声音克隆必需", - "voice.transcriptPlaceholder": "输入参考音频中的准确文字,或加载上方匹配的 .txt 文件。" + "voice.transcriptPlaceholder": "输入参考音频中的准确文字,或加载上方匹配的 .txt 文件。", + "file.clear": "清除文件", + "file.preview": "预览", + "param.ace_step.audio_cover_strength.info": "1=贴近原曲,0=自由发挥;建议 0.5", + "param.ace_step.bpm.info": "0=不指定", + "param.ace_step.bpm.label": "【曲谱】BPM", + "param.ace_step.cover_noise_strength.info": "保旋律强度;推荐 0.1~0.25", + "param.ace_step.flow_edit_n_avg.info": "每步多次采样取平均(remix 默认 2);1=最快", + "param.ace_step.flow_edit_n_max.info": "唱不出新歌词时降到 0.7~0.9", + "param.ace_step.flow_edit_n_min.info": "调大更保源曲、换词更弱", + "param.ace_step.keyscale.label": "【曲谱】keyscale", + "param.ace_step.keyscale.placeholder": "如 F major", + "param.ace_step.num_inference_steps.info": "扩散步数(turbo 上限 20);remix 路由不填时默认 16,其他路由默认 8", + "param.ace_step.route.info": "cover/remix=换词翻唱,非 text2music 需上传源音频;详见 webui/README.md", + "param.ace_step.route.label": "route(操作类型)", + "param.ace_step.shift.info": "原版 turbo 默认 3.0;1.0 会明显劣化 remix 换词咬字", + "param.ace_step.shift.label": "shift(时间步弯曲)", + "param.ace_step.source_caption.placeholder": "源歌曲描述;『🔍 分析』自动填", + "param.ace_step.source_lyrics.placeholder": "源歌曲原歌词;『🔍 分析』自动填", + "param.ace_step.timesignature.label": "【曲谱】timesignature", + "param.ace_step.timesignature.placeholder": "如 4", + "param.chatterbox.exaggeration.info": "改动后需重新『加载模型』才生效", + "param.chatterbox.guidance_scale.info": "改动后需重新『加载模型』才生效", + "param.chatterbox.num_inference_steps.label": "num_inference_steps(生成步数)", + "param.chatterbox.s3gen_cfg_rate.label": "s3gen_cfg_rate(音色引导强度)", + "param.dramabox.audio_chunk_duration_sec.label": "audio_chunk_duration_sec(长文本分段目标时长)", + "param.dramabox.audio_chunk_threshold_sec.label": "audio_chunk_threshold_sec(长文本阈值)", + "param.dramabox.cross_fade_duration_sec.label": "cross_fade_duration_sec(分段交叉淡化)", + "param.dramabox.duration_scale.label": "duration_scale(自动估时倍率)", + "param.dramabox.duration_sec.label": "duration_sec(0=自动估时)", + "param.dramabox.guidance_rescale.placeholder": "auto 或数值", + "param.dramabox.negative_prompt.label": "negative_prompt(负向提示)", + "param.dramabox.negative_prompt.placeholder": "留空=模型内置质量提示", + "param.dramabox.reference_duration_sec.label": "reference_duration_sec(参考音频裁剪/重复秒数)", + "param.heartmula.infinite_mode.label": "infinite_mode(长输出分段生成)", + "param.heartmula.num_inference_steps.label": "num_inference_steps(codec 步数)", + "param.heartmula.tags.info": "风格/情绪/乐器/人声标签,模型必需", + "param.heartmula.tags.label": "tags(必填,逗号分隔)", + "param.index_tts2.duration_factor.info": "对齐官方 IndexTTS2.5 的 duration_factor:缩放输出时长,不改变音色/内容", + "param.index_tts2.duration_factor.label": "duration_factor(语速/时长倍率,>1 更慢,<1 更快)", + "param.index_tts2.emotion_alpha.label": "emotion_alpha(情感强度)", + "param.index_tts2.emotion_text.info": "填写后自动开启情感条件(use_emotion_text)", + "param.index_tts2.emotion_text.label": "emotion_text(情绪参考文本)", + "param.index_tts2.emotion_text.placeholder": "例:你吓死我了!你是鬼吗?", + "param.index_tts2.interval_silence_ms.label": "interval_silence_ms(分段间静音)", + "param.index_tts2.lang.info": "仅对 IndexTTS2.5(多语种)模型生效:auto 含汉字按中文,否则按英文;日/西/阿建议显式选择", + "param.index_tts2.lang.label": "lang(语种提示, 仅 IndexTTS2.5 模型)", + "param.index_tts2.use_emotion_text.label": "use_emotion_text(从朗读文本推断情感)", + "param.index_tts2.use_random_emotion.label": "use_random_emotion(随机情感)", + "param.inflect_v2.speaking_rate.label": "speaking_rate(语速倍率)", + "param.inflect_v2.text_chunk_size.label": "text_chunk_size(长文本分段字符数)", + "param.inflect_v2.variation.label": "variation(音色变化)", + "param.irodori_tts.duration_scale.label": "duration_scale(语速倒数,越大越慢)", + "param.irodori_tts.duration_sec.label": "duration_sec(0=模型自动预测时长)", + "param.irodori_tts.num_inference_steps.label": "num_inference_steps(RF 扩散步数)", + "param.magpie_tts.voice_id.label": "voice_id(打包音色)", + "param.miotts.best_of_n.label": "best_of_n(候选数,>1 自动开启)", + "param.neutts.emotion.label": "emotion(情绪)", + "param.neutts.voice_id.label": "voice_id(内置音色)", + "param.omnivoice.instruct.label": "instruct(风格/音色指令)", + "param.omnivoice.instruct.placeholder": "如:以轻快的语气朗读", + "param.personaplex.voice_id.label": "voice_id(打包音色)", + "param.pocket_tts.frames_after_eos.label": "frames_after_eos(-1=自动)", + "param.qwen3_tts.instruct.label": "instruct(仅 VoiceDesign/CustomVoice)", + "param.qwen3_tts.instruct.placeholder": "风格/音色指令,Base 版忽略", + "param.qwen3_tts.speaker.label": "speaker(仅 CustomVoice)", + "param.qwen3_tts.speaker.placeholder": "内置音色名,其它版忽略", + "param.rvc.output_sample_rate.label": "output_sample_rate(0=跟随音色)", + "param.rvc.retrieval_index_path.placeholder": "可选 .index 路径", + "param.rvc.semitone_shift.label": "semitone_shift(半音变调)", + "param.rvc.voice_id.label": "voice_id(打包音色)", + "param.rvc.voice_model_path.label": "voice_model_path(自定义 RVC .pth/.pt)", + "param.rvc.voice_model_path.placeholder": "留空=使用打包音色", + "param.seed_vc.inference_cfg_rate.label": "inference_cfg_rate(仅 v1 路径)", + "param.seed_vc.intelligibility_cfg_rate.label": "intelligibility_cfg_rate(仅 v2_vc)", + "param.seed_vc.length_adjust.label": "length_adjust(时长伸缩)", + "param.seed_vc.num_inference_steps.info": "CFM 扩散步数", + "param.seed_vc.route.info": "留空=按任务默认", + "param.seed_vc.route.label": "route(转换路径)", + "param.seed_vc.similarity_cfg_rate.label": "similarity_cfg_rate(仅 v2_vc)", + "param.sense_asr.enable_itn.label": "enable_itn(逆文本规范化)", + "param.sense_asr.keep_tags.label": "keep_tags(保留语言/情绪/事件标签)", + "param.stable_audio.audio_input_kind.label": "audio_input_kind(仅上传源音频时生效)", + "param.stable_audio.init_noise_level.label": "init_noise_level(init_audio 强度)", + "param.stable_audio.num_inference_steps.info": "RF 扩散步数", + "param.supertonic.num_inference_steps.label": "num_inference_steps(流匹配步数)", + "param.supertonic.speaking_rate.label": "speaking_rate(语速倍率)", + "param.supertonic.voice.label": "voice(预置音色:M 男声 / F 女声)", + "param.vevo2.num_inference_steps.info": "流匹配步数", + "param.vevo2.route.info": "留空=按任务默认;详见 webui/README.md", + "param.vevo2.route.label": "route(任务路线)", + "param.vevo2.temperature.info": "默认取自模型 generation_config.json", + "param.vevo2.temperature.label": "temperature(AR 路线用)", + "param.vevo2.top_k.info": "默认取自模型 generation_config.json", + "param.vevo2.top_k.label": "top_k(AR 路线用)", + "param.vevo2.top_p.label": "top_p(AR 路线用)", + "param.vevo2.use_pitch_shift.info": "留空=按路线默认", + "param.vevo2.use_pitch_shift.label": "use_pitch_shift(自动音高对齐)", + "param.vibevoice.guidance_scale.info": "CFG 引导强度", + "param.vibevoice.max_length_times.info": "最大输出长度倍数", + "param.vibevoice.num_inference_steps.info": "扩散步数(官方默认 10),越大越慢越稳", + "param.vibevoice.voice_samples.label": "voice_samples(多说话人,逗号分隔 wav,≤4)", + "param.vibevoice.voice_samples.placeholder": "D:/a.wav,D:/b.wav — 用此项时勿再上传参考音色", + "param.voxcpm1.num_inference_steps.info": "CFM/DiT 步数", + "param.voxcpm1.retry_badcase.label": "retry_badcase(自动重试异常输出)", + "param.voxcpm2.num_inference_steps.info": "CFM/DiT 步数", + "param.voxcpm2.retry_badcase.label": "retry_badcase(自动重试异常输出)", + "request.autoDuration": "-1 = 自动", + "request.rewriteCaption": "重写描述", + "request.rewritingCaption": "正在重写描述...", + "studio.subtitle.conversion": "将录音转换为另一种声音,同时保留原有的说话或演唱表现。", + "studio.subtitle.separation": "将录音分离为人声、乐器或其他可用音轨。", + "task.midi": "音频转 MIDI", + "voice.configured": "已配置音色" } }