fix(webui): preview IndexTTS 2.5 text segments (#777)

This commit is contained in:
david-bowiegxw
2026-08-18 15:43:57 +09:00
committed by GitHub
parent 4f8792ff12
commit 82c2a6eaa1
+23 -6
View File
@@ -1047,12 +1047,22 @@ with gr.Blocks(
outputs=example_outputs
)
def on_input_text_change(text, max_text_tokens_per_segment):
def on_input_text_change(text, max_text_tokens_per_segment, lang_choice):
if text and len(text) > 0:
if IS_V25:
# v2.5 uses tiktoken encoder, no split_segments; show token count only
tokens = tts.tokenizer.encode(text, allowed_special='all')
data = [[0, text, len(tokens)]]
lang_prefix = f'<|{(lang_choice or "ZH").lower()}|> '
segments = tts.split_text_by_tokens(
text,
int(max_text_tokens_per_segment),
lang_prefix,
)
data = []
for i, segment_str in enumerate(segments):
tokens_count = len(tts.tokenizer.encode(
lang_prefix + segment_str,
allowed_special='all',
))
data.append([i, segment_str, tokens_count])
else:
text_tokens_list = tts.tokenizer.tokenize(text)
segments = tts.tokenizer.split_segments(text_tokens_list, max_text_tokens_per_segment=int(max_text_tokens_per_segment))
@@ -1186,16 +1196,23 @@ with gr.Blocks(
input_text_single.change(
on_input_text_change,
inputs=[input_text_single, max_text_tokens_per_segment],
inputs=[input_text_single, max_text_tokens_per_segment, lang_dropdown],
outputs=[segments_preview]
)
max_text_tokens_per_segment.change(
on_input_text_change,
inputs=[input_text_single, max_text_tokens_per_segment],
inputs=[input_text_single, max_text_tokens_per_segment, lang_dropdown],
outputs=[segments_preview]
)
if IS_V25:
lang_dropdown.change(
on_input_text_change,
inputs=[input_text_single, max_text_tokens_per_segment, lang_dropdown],
outputs=[segments_preview]
)
prompt_audio.upload(update_prompt_audio,
inputs=[],
outputs=[gen_button])