Joysw909 commited on
Commit
143bb6d
·
1 Parent(s): 0e10c52

Add application file

Browse files
Files changed (4) hide show
  1. app.py +102 -0
  2. audios/001_en_i_C4.wav +0 -0
  3. audios/001_en_i_raw.wav +0 -0
  4. requirements.txt +1 -0
app.py ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import json
3
+ import os
4
+ import datetime
5
+
6
+ # 模拟数据库或配置:路径与模型的对应关系
7
+ # 在实际使用中,你可以根据文件名或文件夹来自动判断模型名称
8
+ AUDIO_METADATA = {
9
+ "./audios/001_en_i_C4.wav": "phraseLDM",
10
+ "./ audios/001_en_i_raw.wav": "baseline_v1"
11
+ }
12
+
13
+ def load_random_audios():
14
+ # 实际开发中这里应该是随机逻辑
15
+ path_a = "./audios/001_en_i_C4.wav"
16
+ path_b = "./audios/001_en_i_raw.wav"
17
+
18
+ # 获取对应的模型名称,如果没有匹配则显示 unknown
19
+ meta_a = {"model": AUDIO_METADATA.get(path_a, "unknown"), "path": path_a}
20
+ meta_b = {"model": AUDIO_METADATA.get(path_b, "unknown"), "path": path_b}
21
+
22
+ return path_a, path_b, meta_a, meta_b
23
+
24
+ def submit_evaluation(preference, a_harm, a_nat, a_crea, a_mus, b_harm, b_nat, b_crea, b_mus, state_a, state_b):
25
+ # 构造你要求的 JSON 格式
26
+ result_entry = {
27
+ "timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
28
+ "audio_A": {
29
+ "model": state_a["model"],
30
+ "audio_path": state_a["path"],
31
+ "Harmonious": a_harm,
32
+ "Naturalness": a_nat,
33
+ "Creativity": a_crea,
34
+ "Musicality": a_mus
35
+ },
36
+ "audio_B": {
37
+ "model": state_b["model"],
38
+ "audio_path": state_b["path"],
39
+ "Harmonious": b_harm,
40
+ "Naturalness": b_nat,
41
+ "Creativity": b_crea,
42
+ "Musicality": b_mus
43
+ },
44
+ "better": "A" if "Audio A" in preference else ("B" if "Audio B" in preference else "Equal/Neither")
45
+ }
46
+
47
+ # 持久化保存到 JSONL 文件 (每行一条记录,方便追加)
48
+ save_path = "eval_results.json"
49
+ with open(save_path, "a", encoding="utf-8") as f:
50
+ f.write(json.dumps(result_entry, ensure_ascii=False) + "\n")
51
+
52
+ return f"✅ 评估已保存至 {save_path}!您可以刷新页面进行下一组测试。"
53
+
54
+ with gr.Blocks(title="音频生成质量评估", theme=gr.themes.Soft()) as demo:
55
+ # 使用 gr.State 存储不显示在 UI 上的元数据
56
+ state_a = gr.State()
57
+ state_b = gr.State()
58
+
59
+ gr.Markdown("<h2 style='text-align: center;'>🎶 PhraseLDM 歌曲合成主观听感测试</h2>")
60
+
61
+ with gr.Row():
62
+ with gr.Column():
63
+ gr.Markdown("### Audio A")
64
+ audio_a = gr.Audio(interactive=False)
65
+ with gr.Column():
66
+ gr.Markdown("### Audio B")
67
+ audio_b = gr.Audio(interactive=False)
68
+
69
+ gr.HTML("<hr>")
70
+ preference = gr.Radio(choices=["Audio A", "Audio B", "Both Equal", "Neither"], label="你更喜欢哪个 audio?")
71
+ gr.HTML("<hr>")
72
+
73
+ with gr.Row():
74
+ with gr.Column():
75
+ gr.Markdown("#### 对音频 A 的打分")
76
+ a_harm = gr.Slider(1, 5, step=0.01, value=3, label="Harmonious")
77
+ a_nat = gr.Slider(1, 5, step=0.01, value=3, label="Naturalness")
78
+ a_crea = gr.Slider(1, 5, step=0.01, value=3, label="Creativity")
79
+ a_mus = gr.Slider(1, 5, step=0.01, value=3, label="Musicality (Overall)")
80
+
81
+ with gr.Column():
82
+ gr.Markdown("#### 对音频 B 的打分")
83
+ b_harm = gr.Slider(1, 5, step=0.01, value=3, label="Harmonious")
84
+ b_nat = gr.Slider(1, 5, step=0.01, value=3, label="Naturalness")
85
+ b_crea = gr.Slider(1, 5, step=0.01, value=3, label="Creativity")
86
+ b_mus = gr.Slider(1, 5, step=0.01, value=3, label="Musicality (Overall)")
87
+
88
+ submit_btn = gr.Button("提交评估结果", variant="primary")
89
+ status_output = gr.Textbox(label="系统状态", interactive=False)
90
+
91
+ # 提交时传入 state
92
+ submit_btn.click(
93
+ fn=submit_evaluation,
94
+ inputs=[preference, a_harm, a_nat, a_crea, a_mus, b_harm, b_nat, b_crea, b_mus, state_a, state_b],
95
+ outputs=status_output
96
+ )
97
+
98
+ # 初始化加载
99
+ demo.load(fn=load_random_audios, outputs=[audio_a, audio_b, state_a, state_b])
100
+
101
+ if __name__ == "__main__":
102
+ demo.launch()
audios/001_en_i_C4.wav ADDED
Binary file (22.6 kB). View file
 
audios/001_en_i_raw.wav ADDED
Binary file (22.6 kB). View file
 
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio