Spaces:
Runtime error
Runtime error
Commit ·
9ce5d47
1
Parent(s): 39b6e8b
Create app.py
Browse files
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)
|