kevinwang676 commited on
Commit
9ce5d47
·
1 Parent(s): 39b6e8b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -0
app.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ import consts
4
+ from utils_base import get_dataset_list, get_model_list
5
+ from utils_label import auto_label, delete_dataset
6
+ from utils_sambert import train, infer, delete_model
7
+
8
+ def refresh():
9
+ return gr.update(choices=get_dataset_list()), gr.update(choices=get_model_list())
10
+
11
+ # gradio server ---------------------------
12
+ with gr.Blocks() as server:
13
+ # 面板说明
14
+ gr.Markdown("# <center>🌊💕🎶 Sambert UI 声音克隆</center>")
15
+ gr.Markdown("## <center>🌟 - 训练5分钟,通话不限时!AI真实拟声,支持中英双语! </center>")
16
+ gr.Markdown("### <center>🍻 - 更多精彩应用,尽在[滔滔AI](http://www.talktalkai.com);滔滔AI,为爱滔滔!💕</center>")
17
+
18
+ # 标记
19
+ gr.Markdown('## 数据标注')
20
+ with gr.Row():
21
+ label_audio_input = gr.Audio(type='filepath', label='请上传一段长音频(一分钟左右即可)')
22
+ label_name_input = gr.Textbox(label='角色命名')
23
+ label_status_output = gr.Textbox(label='标注状态')
24
+ label_btn = gr.Button('开始标注', variant='primary')
25
+
26
+ # 训练
27
+ gr.Markdown('## 训练')
28
+ with gr.Row():
29
+ train_dataset_input = gr.Radio(label='角色选择', choices=get_dataset_list())
30
+ train_name_input = label_name_input
31
+ train_steps_input = gr.Number(label='训练步数, 需要为20的整数倍')
32
+ train_status_output = gr.Text(label='训练状态')
33
+ train_btn = gr.Button('开始训练')
34
+ dataset_delete_btn = gr.Button('删除数据集', variant='stop')
35
+
36
+ # 推理
37
+ # 参考 https://mdnice.com/writing/a40f4bcd3b3e40d8931512186982b711
38
+ # 使用 gr.update 实现对应的联动效果
39
+ gr.Markdown('## 生成')
40
+ with gr.Row():
41
+ infer_name_input = gr.Radio(label='推理模型选择', choices=get_model_list())
42
+ infer_txt_input = gr.Textbox(label='文本', lines=3)
43
+ infer_audio_output = gr.Audio(type='filepath', label='为您合成的音频')
44
+ infer_btn = gr.Button('开始语音合成', variant='primary')
45
+ model_delete_btn = gr.Button('删除模型', variant='stop')
46
+
47
+ # 逻辑部分
48
+ label_btn.click(
49
+ auto_label,
50
+ inputs=[label_audio_input, label_name_input],
51
+ outputs=[label_status_output, train_dataset_input]
52
+ )
53
+
54
+ dataset_delete_btn.click(
55
+ delete_dataset,
56
+ inputs=train_dataset_input,
57
+ outputs=[train_dataset_input]
58
+ )
59
+
60
+ train_btn.click(
61
+ train,
62
+ inputs=[train_name_input, train_steps_input, train_dataset_input],
63
+ outputs=[train_status_output, infer_name_input]
64
+ )
65
+
66
+ infer_btn.click(
67
+ infer,
68
+ inputs=[infer_name_input, infer_txt_input],
69
+ outputs=[infer_audio_output]
70
+ )
71
+
72
+ model_delete_btn.click(
73
+ delete_model,
74
+ inputs=infer_name_input,
75
+ outputs=[infer_name_input]
76
+ )
77
+
78
+ server.load(
79
+ refresh,
80
+ inputs=[],
81
+ outputs=[train_dataset_input, infer_name_input]
82
+ )
83
+
84
+
85
+ server.launch(share=True, show_error=True)