Spaces:
Running on Zero
Running on Zero
app.py
CHANGED
|
@@ -316,6 +316,59 @@ def build_ui():
|
|
| 316 |
prompt_audio_out = gr.Audio(label="生成音频", type="numpy")
|
| 317 |
prompt_status = gr.Textbox(label="状态", interactive=False)
|
| 318 |
prompt_btn.click(generate_voice_clone_from_prompt_file, inputs=[prompt_file, prompt_target_text, prompt_language], outputs=[prompt_audio_out, prompt_status])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 319 |
return demo
|
| 320 |
|
| 321 |
if __name__ == "__main__":
|
|
|
|
| 316 |
prompt_audio_out = gr.Audio(label="生成音频", type="numpy")
|
| 317 |
prompt_status = gr.Textbox(label="状态", interactive=False)
|
| 318 |
prompt_btn.click(generate_voice_clone_from_prompt_file, inputs=[prompt_file, prompt_target_text, prompt_language], outputs=[prompt_audio_out, prompt_status])
|
| 319 |
+
gr.Markdown("---")
|
| 320 |
+
|
| 321 |
+
# Section 3: Traditional Voice Clone (Original)
|
| 322 |
+
gr.Markdown("### 3. 传统音色克隆(直接使用参考音频)")
|
| 323 |
+
gr.Markdown("直接上传参考音频生成语音(每次都需要提取特征)。")
|
| 324 |
+
with gr.Row():
|
| 325 |
+
with gr.Column(scale=2):
|
| 326 |
+
clone_ref_audio = gr.Audio(
|
| 327 |
+
label="参考音频",
|
| 328 |
+
type="numpy",
|
| 329 |
+
)
|
| 330 |
+
clone_ref_text = gr.Textbox(
|
| 331 |
+
label="参考文本",
|
| 332 |
+
lines=2,
|
| 333 |
+
placeholder="输入参考音频中的确切文字...",
|
| 334 |
+
)
|
| 335 |
+
clone_xvector = gr.Checkbox(
|
| 336 |
+
label="仅使用 x-vector",
|
| 337 |
+
value=False,
|
| 338 |
+
)
|
| 339 |
+
|
| 340 |
+
with gr.Column(scale=2):
|
| 341 |
+
clone_target_text = gr.Textbox(
|
| 342 |
+
label="目标文本",
|
| 343 |
+
lines=4,
|
| 344 |
+
placeholder="输入要让克隆音色说话的文字...",
|
| 345 |
+
)
|
| 346 |
+
with gr.Row():
|
| 347 |
+
clone_language = gr.Dropdown(
|
| 348 |
+
label="语言",
|
| 349 |
+
choices=LANGUAGES,
|
| 350 |
+
value="Auto",
|
| 351 |
+
interactive=True,
|
| 352 |
+
)
|
| 353 |
+
clone_model_size = gr.Dropdown(
|
| 354 |
+
label="模型大小",
|
| 355 |
+
choices=MODEL_SIZES,
|
| 356 |
+
value="1.7B",
|
| 357 |
+
interactive=True,
|
| 358 |
+
)
|
| 359 |
+
clone_btn = gr.Button("克隆并生成", variant="primary")
|
| 360 |
+
|
| 361 |
+
with gr.Row():
|
| 362 |
+
clone_audio_out = gr.Audio(label="生成的音频", type="numpy")
|
| 363 |
+
clone_status = gr.Textbox(label="状态", lines=2, interactive=False)
|
| 364 |
+
|
| 365 |
+
clone_btn.click(
|
| 366 |
+
generate_voice_clone,
|
| 367 |
+
inputs=[clone_ref_audio, clone_ref_text, clone_target_text, clone_language, clone_xvector, clone_model_size],
|
| 368 |
+
outputs=[clone_audio_out, clone_status],
|
| 369 |
+
api_name="generate_voice_clone"
|
| 370 |
+
)
|
| 371 |
+
|
| 372 |
return demo
|
| 373 |
|
| 374 |
if __name__ == "__main__":
|