|
|
@@ -66,7 +66,7 @@ def change_instruction(mode_checkbox_group):
|
|
|
|
|
|
|
|
|
def generate_audio(tts_text, mode_checkbox_group, sft_dropdown, prompt_text, prompt_wav_upload, prompt_wav_record, instruct_text,
|
|
|
- seed, stream, speed_factor):
|
|
|
+ seed, stream, speed):
|
|
|
if prompt_wav_upload is not None:
|
|
|
prompt_wav = prompt_wav_upload
|
|
|
elif prompt_wav_record is not None:
|
|
|
@@ -117,24 +117,24 @@ def generate_audio(tts_text, mode_checkbox_group, sft_dropdown, prompt_text, pro
|
|
|
if mode_checkbox_group == '预训练音色':
|
|
|
logging.info('get sft inference request')
|
|
|
set_all_random_seed(seed)
|
|
|
- for i in cosyvoice.inference_sft(tts_text, sft_dropdown, stream=stream):
|
|
|
+ for i in cosyvoice.inference_sft(tts_text, sft_dropdown, stream=stream, speed=speed):
|
|
|
yield (target_sr, i['tts_speech'].numpy().flatten())
|
|
|
elif mode_checkbox_group == '3s极速复刻':
|
|
|
logging.info('get zero_shot inference request')
|
|
|
prompt_speech_16k = postprocess(load_wav(prompt_wav, prompt_sr))
|
|
|
set_all_random_seed(seed)
|
|
|
- for i in cosyvoice.inference_zero_shot(tts_text, prompt_text, prompt_speech_16k, stream=stream):
|
|
|
+ for i in cosyvoice.inference_zero_shot(tts_text, prompt_text, prompt_speech_16k, stream=stream, speed=speed):
|
|
|
yield (target_sr, i['tts_speech'].numpy().flatten())
|
|
|
elif mode_checkbox_group == '跨语种复刻':
|
|
|
logging.info('get cross_lingual inference request')
|
|
|
prompt_speech_16k = postprocess(load_wav(prompt_wav, prompt_sr))
|
|
|
set_all_random_seed(seed)
|
|
|
- for i in cosyvoice.inference_cross_lingual(tts_text, prompt_speech_16k, stream=stream):
|
|
|
+ for i in cosyvoice.inference_cross_lingual(tts_text, prompt_speech_16k, stream=stream, speed=speed):
|
|
|
yield (target_sr, i['tts_speech'].numpy().flatten())
|
|
|
else:
|
|
|
logging.info('get instruct inference request')
|
|
|
set_all_random_seed(seed)
|
|
|
- for i in cosyvoice.inference_instruct(tts_text, sft_dropdown, instruct_text, stream=stream):
|
|
|
+ for i in cosyvoice.inference_instruct(tts_text, sft_dropdown, instruct_text, stream=stream, speed=speed):
|
|
|
yield (target_sr, i['tts_speech'].numpy().flatten())
|
|
|
|
|
|
|
|
|
@@ -147,12 +147,12 @@ def main():
|
|
|
gr.Markdown("#### 请输入需要合成的文本,选择推理模式,并按照提示步骤进行操作")
|
|
|
|
|
|
tts_text = gr.Textbox(label="输入合成文本", lines=1, value="我是通义实验室语音团队全新推出的生成式语音大模型,提供舒适自然的语音合成能力。")
|
|
|
- speed_factor = gr.Slider(minimum=0.25, maximum=4, step=0.05, label="语速调节", value=1.0, interactive=True)
|
|
|
with gr.Row():
|
|
|
mode_checkbox_group = gr.Radio(choices=inference_mode_list, label='选择推理模式', value=inference_mode_list[0])
|
|
|
instruction_text = gr.Text(label="操作步骤", value=instruct_dict[inference_mode_list[0]], scale=0.5)
|
|
|
sft_dropdown = gr.Dropdown(choices=sft_spk, label='选择预训练音色', value=sft_spk[0], scale=0.25)
|
|
|
stream = gr.Radio(choices=stream_mode_list, label='是否流式推理', value=stream_mode_list[0][1])
|
|
|
+ speed = gr.Number(value=1, label="速度调节(仅支持非流式推理)", minimum=0.5, maximum=2.0, step=0.1)
|
|
|
with gr.Column(scale=0.25):
|
|
|
seed_button = gr.Button(value="\U0001F3B2")
|
|
|
seed = gr.Number(value=0, label="随机推理种子")
|
|
|
@@ -170,7 +170,7 @@ def main():
|
|
|
seed_button.click(generate_seed, inputs=[], outputs=seed)
|
|
|
generate_button.click(generate_audio,
|
|
|
inputs=[tts_text, mode_checkbox_group, sft_dropdown, prompt_text, prompt_wav_upload, prompt_wav_record, instruct_text,
|
|
|
- seed, stream, speed_factor],
|
|
|
+ seed, stream, speed],
|
|
|
outputs=[audio_output])
|
|
|
mode_checkbox_group.change(fn=change_instruction, inputs=[mode_checkbox_group], outputs=[instruction_text])
|
|
|
demo.queue(max_size=4, default_concurrency_limit=2)
|