Anonymous commited on
Commit
87bf86d
·
1 Parent(s): 2e90754

Add paralinguistic cue demo task

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. index.html +65 -18
  2. static/css/index.css +37 -0
  3. static/task/paral/MiMo-v2.5/manifest.jsonl +13 -0
  4. static/task/paral/MiMo-v2.5/samples/para_v2_ai_002.wav +3 -0
  5. static/task/paral/MiMo-v2.5/samples/para_v2_en_004.wav +3 -0
  6. static/task/paral/MiMo-v2.5/samples/para_v2_haha_002.wav +3 -0
  7. static/task/paral/MiMo-v2.5/samples/para_v2_hahaha_004.wav +3 -0
  8. static/task/paral/MiMo-v2.5/samples/para_v2_he_002.wav +3 -0
  9. static/task/paral/MiMo-v2.5/samples/para_v2_hehe_004.wav +3 -0
  10. static/task/paral/MiMo-v2.5/samples/para_v2_hei_001.wav +3 -0
  11. static/task/paral/MiMo-v2.5/samples/para_v2_heng_002.wav +3 -0
  12. static/task/paral/MiMo-v2.5/samples/para_v2_hu_001.wav +3 -0
  13. static/task/paral/MiMo-v2.5/samples/para_v2_hu_002.wav +3 -0
  14. static/task/paral/MiMo-v2.5/samples/para_v2_keke_001.wav +3 -0
  15. static/task/paral/MiMo-v2.5/samples/para_v2_keke_002.wav +3 -0
  16. static/task/paral/MiMo-v2.5/samples/para_v2_ze_004.wav +3 -0
  17. static/task/paral/Qwen3/manifest.jsonl +13 -0
  18. static/task/paral/Qwen3/samples/para_v2_ai_002.wav +3 -0
  19. static/task/paral/Qwen3/samples/para_v2_en_004.wav +3 -0
  20. static/task/paral/Qwen3/samples/para_v2_haha_002.wav +3 -0
  21. static/task/paral/Qwen3/samples/para_v2_hahaha_004.wav +3 -0
  22. static/task/paral/Qwen3/samples/para_v2_he_002.wav +3 -0
  23. static/task/paral/Qwen3/samples/para_v2_hehe_004.wav +3 -0
  24. static/task/paral/Qwen3/samples/para_v2_hei_001.wav +3 -0
  25. static/task/paral/Qwen3/samples/para_v2_heng_002.wav +3 -0
  26. static/task/paral/Qwen3/samples/para_v2_hu_001.wav +3 -0
  27. static/task/paral/Qwen3/samples/para_v2_hu_002.wav +3 -0
  28. static/task/paral/Qwen3/samples/para_v2_keke_001.wav +3 -0
  29. static/task/paral/Qwen3/samples/para_v2_keke_002.wav +3 -0
  30. static/task/paral/Qwen3/samples/para_v2_ze_004.wav +3 -0
  31. static/task/paral/SoulX-Podcast/manifest.jsonl +13 -0
  32. static/task/paral/SoulX-Podcast/samples/para_v2_ai_002.wav +3 -0
  33. static/task/paral/SoulX-Podcast/samples/para_v2_en_004.wav +3 -0
  34. static/task/paral/SoulX-Podcast/samples/para_v2_haha_002.wav +3 -0
  35. static/task/paral/SoulX-Podcast/samples/para_v2_hahaha_004.wav +3 -0
  36. static/task/paral/SoulX-Podcast/samples/para_v2_he_002.wav +3 -0
  37. static/task/paral/SoulX-Podcast/samples/para_v2_hehe_004.wav +3 -0
  38. static/task/paral/SoulX-Podcast/samples/para_v2_hei_001.wav +3 -0
  39. static/task/paral/SoulX-Podcast/samples/para_v2_heng_002.wav +3 -0
  40. static/task/paral/SoulX-Podcast/samples/para_v2_hu_001.wav +3 -0
  41. static/task/paral/SoulX-Podcast/samples/para_v2_hu_002.wav +3 -0
  42. static/task/paral/SoulX-Podcast/samples/para_v2_keke_001.wav +3 -0
  43. static/task/paral/SoulX-Podcast/samples/para_v2_keke_002.wav +3 -0
  44. static/task/paral/SoulX-Podcast/samples/para_v2_ze_004.wav +3 -0
  45. static/task/paral/cosyvoice3/manifest.jsonl +13 -0
  46. static/task/paral/cosyvoice3/samples/para_v2_ai_002.wav +3 -0
  47. static/task/paral/cosyvoice3/samples/para_v2_en_004.wav +3 -0
  48. static/task/paral/cosyvoice3/samples/para_v2_haha_002.wav +3 -0
  49. static/task/paral/cosyvoice3/samples/para_v2_hahaha_004.wav +3 -0
  50. static/task/paral/cosyvoice3/samples/para_v2_he_002.wav +3 -0
index.html CHANGED
@@ -37,6 +37,8 @@
37
  <p id="task-description">Loading task metadata...</p>
38
  </div>
39
 
 
 
40
  <div class="demo-table" id="demo-table" aria-live="polite">
41
  <p class="loading">Loading audio demos...</p>
42
  </div>
@@ -45,10 +47,13 @@
45
  </main>
46
 
47
  <script>
48
- const TASK_ROOT = "./static/task/multi";
 
 
 
49
 
50
  function parseTaskYaml(source) {
51
- const task = { name: "", description: "", models: [] };
52
  let listKey = "";
53
 
54
  source.split(/\r?\n/).forEach((rawLine) => {
@@ -65,7 +70,10 @@
65
 
66
  const key = match[1];
67
  const value = match[2].trim().replace(/^["']|["']$/g, "");
68
- if (Array.isArray(task[key])) {
 
 
 
69
  listKey = key;
70
  } else {
71
  task[key] = value;
@@ -103,11 +111,17 @@
103
  function createScriptCell(item) {
104
  const wrapper = document.createElement("div");
105
  wrapper.className = "script-cell";
 
 
106
 
107
- item.target_text.forEach((text, index) => {
108
  const turn = document.createElement("p");
109
- const speaker = Number(item.speaker[index]) + 1;
110
- turn.innerHTML = `<strong>[S${speaker}]</strong> ${escapeHtml(text)}`;
 
 
 
 
111
  wrapper.appendChild(turn);
112
  });
113
 
@@ -118,7 +132,8 @@
118
  const wrapper = document.createElement("div");
119
  wrapper.className = "reference-cell";
120
 
121
- item.prompt_audio.forEach((audioPath, index) => {
 
122
  const block = document.createElement("div");
123
  const label = document.createElement("span");
124
  label.textContent = `Speaker ${index + 1}`;
@@ -140,7 +155,7 @@
140
  }[char]));
141
  }
142
 
143
- function renderTable(task, manifests) {
144
  document.getElementById("task-title").textContent = task.name;
145
  document.getElementById("task-description").textContent = task.description;
146
 
@@ -148,7 +163,8 @@
148
  const thead = document.createElement("thead");
149
  const tbody = document.createElement("tbody");
150
  const header = document.createElement("tr");
151
- const columns = ["Script", "Reference", ...task.models];
 
152
 
153
  columns.forEach((column) => {
154
  const th = document.createElement("th");
@@ -162,19 +178,22 @@
162
  manifests[task.models[0]].forEach((item) => {
163
  const row = document.createElement("tr");
164
  const scriptCell = document.createElement("td");
165
- const referenceCell = document.createElement("td");
166
- const modelRoot = `${TASK_ROOT}/${task.models[0]}`;
167
 
168
  scriptCell.appendChild(createScriptCell(item));
169
- referenceCell.appendChild(createReferenceCell(item, modelRoot));
170
  row.appendChild(scriptCell);
171
- row.appendChild(referenceCell);
 
 
 
 
 
 
172
 
173
  task.models.forEach((model) => {
174
  const modelItem = manifests[model].find((entry) => entry.utt === item.utt);
175
  const td = document.createElement("td");
176
  if (modelItem) {
177
- td.appendChild(createAudio(`${TASK_ROOT}/${model}/${modelItem.output_audio}`));
178
  }
179
  row.appendChild(td);
180
  });
@@ -188,15 +207,43 @@
188
  container.replaceChildren(table);
189
  }
190
 
191
- async function initDemo() {
192
- const task = parseTaskYaml(await fetchText(`${TASK_ROOT}/task.yaml`));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  const manifests = {};
194
 
195
  await Promise.all(task.models.map(async (model) => {
196
- manifests[model] = parseJsonl(await fetchText(`${TASK_ROOT}/${model}/manifest.jsonl`));
197
  }));
198
 
199
- renderTable(task, manifests);
 
 
 
 
 
 
 
 
 
 
 
 
200
  }
201
 
202
  initDemo().catch((error) => {
 
37
  <p id="task-description">Loading task metadata...</p>
38
  </div>
39
 
40
+ <div class="task-tabs" id="task-tabs" aria-label="Audio demo tasks"></div>
41
+
42
  <div class="demo-table" id="demo-table" aria-live="polite">
43
  <p class="loading">Loading audio demos...</p>
44
  </div>
 
47
  </main>
48
 
49
  <script>
50
+ const TASKS = [
51
+ { id: "multi", root: "./static/task/multi" },
52
+ { id: "paral", root: "./static/task/paral" }
53
+ ];
54
 
55
  function parseTaskYaml(source) {
56
+ const task = { name: "", description: "", show_reference: true, models: [] };
57
  let listKey = "";
58
 
59
  source.split(/\r?\n/).forEach((rawLine) => {
 
70
 
71
  const key = match[1];
72
  const value = match[2].trim().replace(/^["']|["']$/g, "");
73
+ if (value === "true" || value === "false") {
74
+ task[key] = value === "true";
75
+ listKey = "";
76
+ } else if (Array.isArray(task[key])) {
77
  listKey = key;
78
  } else {
79
  task[key] = value;
 
111
  function createScriptCell(item) {
112
  const wrapper = document.createElement("div");
113
  wrapper.className = "script-cell";
114
+ const texts = Array.isArray(item.target_text) ? item.target_text : [item.target_text];
115
+ const speakers = Array.isArray(item.speaker) ? item.speaker : [];
116
 
117
+ texts.forEach((text, index) => {
118
  const turn = document.createElement("p");
119
+ const speaker = speakers[index];
120
+ if (speaker !== undefined && speaker !== "") {
121
+ turn.innerHTML = `<strong>[S${Number(speaker) + 1}]</strong> ${escapeHtml(text)}`;
122
+ } else {
123
+ turn.textContent = text;
124
+ }
125
  wrapper.appendChild(turn);
126
  });
127
 
 
132
  const wrapper = document.createElement("div");
133
  wrapper.className = "reference-cell";
134
 
135
+ const prompts = Array.isArray(item.prompt_audio) ? item.prompt_audio : [];
136
+ prompts.forEach((audioPath, index) => {
137
  const block = document.createElement("div");
138
  const label = document.createElement("span");
139
  label.textContent = `Speaker ${index + 1}`;
 
155
  }[char]));
156
  }
157
 
158
+ function renderTable(task, manifests, taskRoot) {
159
  document.getElementById("task-title").textContent = task.name;
160
  document.getElementById("task-description").textContent = task.description;
161
 
 
163
  const thead = document.createElement("thead");
164
  const tbody = document.createElement("tbody");
165
  const header = document.createElement("tr");
166
+ const columns = task.show_reference ? ["Script", "Reference", ...task.models] : ["Script", ...task.models];
167
+ table.className = task.show_reference ? "" : "without-reference";
168
 
169
  columns.forEach((column) => {
170
  const th = document.createElement("th");
 
178
  manifests[task.models[0]].forEach((item) => {
179
  const row = document.createElement("tr");
180
  const scriptCell = document.createElement("td");
 
 
181
 
182
  scriptCell.appendChild(createScriptCell(item));
 
183
  row.appendChild(scriptCell);
184
+
185
+ if (task.show_reference) {
186
+ const referenceCell = document.createElement("td");
187
+ const modelRoot = `${taskRoot}/${task.models[0]}`;
188
+ referenceCell.appendChild(createReferenceCell(item, modelRoot));
189
+ row.appendChild(referenceCell);
190
+ }
191
 
192
  task.models.forEach((model) => {
193
  const modelItem = manifests[model].find((entry) => entry.utt === item.utt);
194
  const td = document.createElement("td");
195
  if (modelItem) {
196
+ td.appendChild(createAudio(`${taskRoot}/${model}/${modelItem.output_audio}`));
197
  }
198
  row.appendChild(td);
199
  });
 
207
  container.replaceChildren(table);
208
  }
209
 
210
+ function renderTabs(tasks, activeId) {
211
+ const tabs = document.getElementById("task-tabs");
212
+ tabs.replaceChildren();
213
+
214
+ tasks.forEach(({ id, task }) => {
215
+ const button = document.createElement("button");
216
+ button.type = "button";
217
+ button.textContent = task.name;
218
+ button.className = id === activeId ? "active" : "";
219
+ button.addEventListener("click", () => renderTask(id));
220
+ tabs.appendChild(button);
221
+ });
222
+ }
223
+
224
+ const loadedTasks = new Map();
225
+
226
+ async function loadTask(config) {
227
+ const task = parseTaskYaml(await fetchText(`${config.root}/task.yaml`));
228
  const manifests = {};
229
 
230
  await Promise.all(task.models.map(async (model) => {
231
+ manifests[model] = parseJsonl(await fetchText(`${config.root}/${model}/manifest.jsonl`));
232
  }));
233
 
234
+ return { ...config, task, manifests };
235
+ }
236
+
237
+ function renderTask(id) {
238
+ const current = loadedTasks.get(id);
239
+ renderTabs([...loadedTasks.values()], id);
240
+ renderTable(current.task, current.manifests, current.root);
241
+ }
242
+
243
+ async function initDemo() {
244
+ const tasks = await Promise.all(TASKS.map(loadTask));
245
+ tasks.forEach((task) => loadedTasks.set(task.id, task));
246
+ renderTask(TASKS[0].id);
247
  }
248
 
249
  initDemo().catch((error) => {
static/css/index.css CHANGED
@@ -112,6 +112,29 @@ body {
112
  line-height: 1.55;
113
  }
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  .demo-table {
116
  overflow-x: auto;
117
  border: 1px solid var(--line);
@@ -149,6 +172,20 @@ body {
149
  width: 28%;
150
  }
151
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  .demo-table th:last-child,
153
  .demo-table td:last-child {
154
  border-right: 0;
 
112
  line-height: 1.55;
113
  }
114
 
115
+ .task-tabs {
116
+ display: flex;
117
+ flex-wrap: wrap;
118
+ gap: 0.45rem;
119
+ margin: 0 0 1rem;
120
+ }
121
+
122
+ .task-tabs button {
123
+ border: 1px solid var(--line);
124
+ border-radius: 4px;
125
+ padding: 0.45rem 0.75rem;
126
+ background: var(--paper);
127
+ color: var(--ink);
128
+ font: inherit;
129
+ cursor: pointer;
130
+ }
131
+
132
+ .task-tabs button.active {
133
+ border-color: var(--ink);
134
+ background: var(--ink);
135
+ color: var(--paper);
136
+ }
137
+
138
  .demo-table {
139
  overflow-x: auto;
140
  border: 1px solid var(--line);
 
172
  width: 28%;
173
  }
174
 
175
+ .demo-table table.without-reference {
176
+ min-width: 1280px;
177
+ }
178
+
179
+ .demo-table table.without-reference th:first-child,
180
+ .demo-table table.without-reference td:first-child {
181
+ width: 25%;
182
+ }
183
+
184
+ .demo-table table.without-reference th,
185
+ .demo-table table.without-reference td {
186
+ width: 15%;
187
+ }
188
+
189
  .demo-table th:last-child,
190
  .demo-table td:last-child {
191
  border-right: 0;
static/task/paral/MiMo-v2.5/manifest.jsonl ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"utt": "para_v2_ai_002", "target_text": "我不是舍不得那点银子,唉,我只是觉得这么多年情分,不该只换来一句算了。", "speaker": "冰糖", "output_audio": "samples/para_v2_ai_002.wav"}
2
+ {"utt": "para_v2_en_004", "target_text": "好吧,嗯,既然大家都同意从北门走,那我负责把马车提前牵到巷口。", "speaker": "冰糖", "output_audio": "samples/para_v2_en_004.wav"}
3
+ {"utt": "para_v2_haha_002", "target_text": "真没想到咱们两个还能在这家小店碰上,哈哈,看来这碗热汤非喝不可。", "speaker": "茉莉", "output_audio": "samples/para_v2_haha_002.wav"}
4
+ {"utt": "para_v2_hahaha_004", "target_text": "我就说这条小路能抄近道吧,哈哈哈,比他们坐马车还先到半盏茶。", "speaker": "白桦", "output_audio": "samples/para_v2_hahaha_004.wav"}
5
+ {"utt": "para_v2_he_002", "target_text": "这点小机关也想拦住我,呵,你们未免把我看得太轻了。", "speaker": "冰糖", "output_audio": "samples/para_v2_he_002.wav"}
6
+ {"utt": "para_v2_hehe_004", "target_text": "我还以为自己算得够准,呵呵,没想到最该防的人就坐在我对面喝茶。", "speaker": "苏打", "output_audio": "samples/para_v2_hehe_004.wav"}
7
+ {"utt": "para_v2_hei_001", "target_text": "嘿,我早把船票压在茶盘下面了,就等你们找累了再拿出来。", "speaker": "茉莉", "output_audio": "samples/para_v2_hei_001.wav"}
8
+ {"utt": "para_v2_heng_002", "target_text": "药放在桌上,爱喝不喝,哼,反正疼得睡不着的人又不是我。", "speaker": "冰糖", "output_audio": "samples/para_v2_heng_002.wav"}
9
+ {"utt": "para_v2_hu_001", "target_text": "呼,幸好城门还没关,我一路从码头跑过来,连鞋带散了都没敢停。", "speaker": "白桦", "output_audio": "samples/para_v2_hu_001.wav"}
10
+ {"utt": "para_v2_hu_002", "target_text": "火总算灭了,呼,大家先别进去,梁柱被烧空了,谁也不知道还能撑多久。", "speaker": "苏打", "output_audio": "samples/para_v2_hu_002.wav"}
11
+ {"utt": "para_v2_keke_001", "target_text": "咳咳,先别吵,门外还有人守着,你们真想把整条巷子都惊醒吗?", "speaker": "茉莉", "output_audio": "samples/para_v2_keke_001.wav"}
12
+ {"utt": "para_v2_keke_002", "target_text": "诸位既然都到了,咳咳,那我就直说了,今日这份账谁也别想糊弄过去。", "speaker": "苏打", "output_audio": "samples/para_v2_keke_002.wav"}
13
+ {"utt": "para_v2_ze_004", "target_text": "这手字写得倒漂亮,啧,可惜落款偏偏少了一笔。", "speaker": "苏打", "output_audio": "samples/para_v2_ze_004.wav"}
static/task/paral/MiMo-v2.5/samples/para_v2_ai_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:96b6a6ef5076ca5cf0e4528b68e9668f7c4747cf57febfd75f4095534b6b4283
3
+ size 345644
static/task/paral/MiMo-v2.5/samples/para_v2_en_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5b16e056446ecab53f97bb0245707cdd007b5edac3bee547a4fecd04cf2ba7fa
3
+ size 299564
static/task/paral/MiMo-v2.5/samples/para_v2_haha_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7e28d0de9bb0f1bec7a04944112a1f655c382b3781120585a06a937fc8a0eb95
3
+ size 307244
static/task/paral/MiMo-v2.5/samples/para_v2_hahaha_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d7bef8431fef7c03a00791885dcf9583796968e7d417c342451f8c495eeac065
3
+ size 368684
static/task/paral/MiMo-v2.5/samples/para_v2_he_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3ddd59a91ba8dd49b54e2f5d4d9995a30a97b41e936cac908baeec06a94aa2e2
3
+ size 215084
static/task/paral/MiMo-v2.5/samples/para_v2_hehe_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:12369820cca85b2fb72c74dea51f5f91ba14d6d818f8f500f5c2f333ce1c467b
3
+ size 299564
static/task/paral/MiMo-v2.5/samples/para_v2_hei_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a2942fffe062640fe4b6a611246dfc870a39c71880f4eb93e17d5a6ca182b399
3
+ size 253484
static/task/paral/MiMo-v2.5/samples/para_v2_heng_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7b3d2729f7a6e83503d958ac5e2227428d2bcfc000200672ff9e6ca728e19224
3
+ size 268844
static/task/paral/MiMo-v2.5/samples/para_v2_hu_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7c47b8bf9229d73b766f2aa5055141bb5ffd6336692b04774ad13422ea5be295
3
+ size 291884
static/task/paral/MiMo-v2.5/samples/para_v2_hu_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8b7e4081d6e1b570d1630003065075211ee6a286ec803ce81fc51db2e1c8593a
3
+ size 314924
static/task/paral/MiMo-v2.5/samples/para_v2_keke_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3130c47be5888f1f67d6924b1daeebd35baa66f99c6d1346943d7a0d9758bcc
3
+ size 291884
static/task/paral/MiMo-v2.5/samples/para_v2_keke_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8326dabf06436e6b02cccdd650e6db4438cb706d61748346fe6bb13494df869b
3
+ size 337964
static/task/paral/MiMo-v2.5/samples/para_v2_ze_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3cd35cf6a09ffa1de6dbb9f0489436e610a31a92d6851e230790738b90101bab
3
+ size 215084
static/task/paral/Qwen3/manifest.jsonl ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"utt": "para_v2_ai_002", "target_text": "我不是舍不得那点银子,唉,我只是觉得这么多年情分,不该只换来一句算了。", "speaker": "Nofish", "output_audio": "samples/para_v2_ai_002.wav"}
2
+ {"utt": "para_v2_en_004", "target_text": "好吧,嗯,既然大家都同意从北门走,那我负责把马车提前牵到巷口。", "speaker": "Ethan", "output_audio": "samples/para_v2_en_004.wav"}
3
+ {"utt": "para_v2_haha_002", "target_text": "真没想到咱们两个还能在这家小店碰上,哈哈,看来这碗热汤非喝不可。", "speaker": "Vivian", "output_audio": "samples/para_v2_haha_002.wav"}
4
+ {"utt": "para_v2_hahaha_004", "target_text": "我就说这条小路能抄近道吧,哈哈哈,比他们坐马车还先到半盏茶。", "speaker": "Momo", "output_audio": "samples/para_v2_hahaha_004.wav"}
5
+ {"utt": "para_v2_he_002", "target_text": "这点小机关也想拦住我,呵,你们未免把我看得太轻了。", "speaker": "Moon", "output_audio": "samples/para_v2_he_002.wav"}
6
+ {"utt": "para_v2_hehe_004", "target_text": "我还以为自己算得够准,呵呵,没想到最该防的人就坐在我对面喝茶。", "speaker": "Nofish", "output_audio": "samples/para_v2_hehe_004.wav"}
7
+ {"utt": "para_v2_hei_001", "target_text": "嘿,我早把船票压在茶盘下面了,就等你们找累了再拿出来。", "speaker": "Nofish", "output_audio": "samples/para_v2_hei_001.wav"}
8
+ {"utt": "para_v2_heng_002", "target_text": "药放在桌上,爱喝不喝,哼,反正疼得睡不着的人又不是我。", "speaker": "Vivian", "output_audio": "samples/para_v2_heng_002.wav"}
9
+ {"utt": "para_v2_hu_001", "target_text": "呼,幸好城门还没关,我一路从码头跑过来,连鞋带散了都没敢停。", "speaker": "Kai", "output_audio": "samples/para_v2_hu_001.wav"}
10
+ {"utt": "para_v2_hu_002", "target_text": "火总算灭了,呼,大家先别进去,梁柱被烧空了,谁也不知道还能撑多久。", "speaker": "Moon", "output_audio": "samples/para_v2_hu_002.wav"}
11
+ {"utt": "para_v2_keke_001", "target_text": "咳咳,先别吵,门外还有人守着,你们真想把整条巷子都惊醒吗?", "speaker": "Cherry", "output_audio": "samples/para_v2_keke_001.wav"}
12
+ {"utt": "para_v2_keke_002", "target_text": "诸位既然都到了,咳咳,那我就直说了,今日这份账谁也别想糊弄过去。", "speaker": "Vivian", "output_audio": "samples/para_v2_keke_002.wav"}
13
+ {"utt": "para_v2_ze_004", "target_text": "这手字写得倒漂亮,啧,可惜落款偏偏少了一笔。", "speaker": "Chelsie", "output_audio": "samples/para_v2_ze_004.wav"}
static/task/paral/Qwen3/samples/para_v2_ai_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:52d7174a06498c5ebb1809b77f6b1a7dfaa98906843147467178f58776f65b0c
3
+ size 318764
static/task/paral/Qwen3/samples/para_v2_en_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5db00e4235598d5428afb9e6414259e19160e58af2fedd122ef26590cb700d0b
3
+ size 230444
static/task/paral/Qwen3/samples/para_v2_haha_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:43a68259691ee2f7bd916111de28a55e5594224c233f2cbe821713753167fb7e
3
+ size 445484
static/task/paral/Qwen3/samples/para_v2_hahaha_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a1afc64b8055b2f02e418f0bf070e8085653bb313d6795da4264173aeff9a3e6
3
+ size 311084
static/task/paral/Qwen3/samples/para_v2_he_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c4dd169062c6861be4fc96e84fec680d6c412d4eb8cc27e567c4e373b6b811de
3
+ size 272684
static/task/paral/Qwen3/samples/para_v2_hehe_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:afcfc26fcfde35f0b729b8789c14d54b35375ee1a3c14a63826f89c0489e1957
3
+ size 303404
static/task/paral/Qwen3/samples/para_v2_hei_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c147cbedb143538f5f2c33166d1b360fd224d074cf9fe2ce0c57b47e5342e63e
3
+ size 230444
static/task/paral/Qwen3/samples/para_v2_heng_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7376cbd590a59cb7fee020f17f3e68cccc7eb7e83fa0e2414007869dfa038e3b
3
+ size 337964
static/task/paral/Qwen3/samples/para_v2_hu_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f68d3cad0548d78c2e5a08dcbc14aea6a5064b4331278c13a9a0ce461930c9b3
3
+ size 410924
static/task/paral/Qwen3/samples/para_v2_hu_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:178d51c5c626d49ea64677ad9947167ee58ada57302ed147417c88d211cc1821
3
+ size 341804
static/task/paral/Qwen3/samples/para_v2_keke_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2db13d9927abbddd1eaf10989ae1bdb258ac8b6df983e8d29d3f0e3c26367f43
3
+ size 299564
static/task/paral/Qwen3/samples/para_v2_keke_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:09d19e0f7d2029f69c4f3de89efb0bf2e382c16b6bb5b2f5f3a8e6fc78f8c0e3
3
+ size 376364
static/task/paral/Qwen3/samples/para_v2_ze_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:30db92c2fc359cfa84efca02b50e22861de9a5e357b065e7c5b9e7872e75c353
3
+ size 215084
static/task/paral/SoulX-Podcast/manifest.jsonl ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"utt": "para_v2_ai_002", "target_text": "我不是舍不得那点银子,唉,我只是觉得这么多年情分,不该只换来一句算了。", "speaker": "冰糖", "output_audio": "samples/para_v2_ai_002.wav"}
2
+ {"utt": "para_v2_en_004", "target_text": "好吧,嗯,既然大家都同意从北门走,那我负责把马车提前牵到巷口。", "speaker": "冰糖", "output_audio": "samples/para_v2_en_004.wav"}
3
+ {"utt": "para_v2_haha_002", "target_text": "真没想到咱们两个还能在这家小店碰上,哈哈,看来这碗热汤非喝不可。", "speaker": "茉莉", "output_audio": "samples/para_v2_haha_002.wav"}
4
+ {"utt": "para_v2_hahaha_004", "target_text": "我就说这条小路能抄近道吧,哈哈哈,比他们坐马车还先到半盏茶。", "speaker": "白桦", "output_audio": "samples/para_v2_hahaha_004.wav"}
5
+ {"utt": "para_v2_he_002", "target_text": "这点小机关也想拦住我,呵,你们未免把我看得太轻了。", "speaker": "冰糖", "output_audio": "samples/para_v2_he_002.wav"}
6
+ {"utt": "para_v2_hehe_004", "target_text": "我还以为自己算得够准,呵呵,没想到最该防的人就坐在我对面喝茶。", "speaker": "苏打", "output_audio": "samples/para_v2_hehe_004.wav"}
7
+ {"utt": "para_v2_hei_001", "target_text": "嘿,我早把船票压在茶盘下面了,就等你们找累了再拿出来。", "speaker": "茉莉", "output_audio": "samples/para_v2_hei_001.wav"}
8
+ {"utt": "para_v2_heng_002", "target_text": "药放在桌上,爱喝不喝,哼,反正疼得睡不着的人又不是我。", "speaker": "冰糖", "output_audio": "samples/para_v2_heng_002.wav"}
9
+ {"utt": "para_v2_hu_001", "target_text": "呼,幸好城门还没关,我一路从码头跑过来,连鞋带散了都没敢停。", "speaker": "白桦", "output_audio": "samples/para_v2_hu_001.wav"}
10
+ {"utt": "para_v2_hu_002", "target_text": "火总算灭了,呼,大家先别进去,梁柱被烧空了,谁也不知道还能撑多久。", "speaker": "苏打", "output_audio": "samples/para_v2_hu_002.wav"}
11
+ {"utt": "para_v2_keke_001", "target_text": "咳咳,先别吵,门外还有人守着,你们真想把整条巷子都惊醒吗?", "speaker": "茉莉", "output_audio": "samples/para_v2_keke_001.wav"}
12
+ {"utt": "para_v2_keke_002", "target_text": "诸位既然都到了,咳咳,那我就直说了,今日这份账谁也别想糊弄过去。", "speaker": "苏打", "output_audio": "samples/para_v2_keke_002.wav"}
13
+ {"utt": "para_v2_ze_004", "target_text": "这手字写得倒漂亮,啧,可惜落款偏偏少了一笔。", "speaker": "苏打", "output_audio": "samples/para_v2_ze_004.wav"}
static/task/paral/SoulX-Podcast/samples/para_v2_ai_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:21e6f2108af855c85b972222a246ff1f0bbc250669366d55ac5bbf40032a8b34
3
+ size 391758
static/task/paral/SoulX-Podcast/samples/para_v2_en_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca2186ab00e9f493396d0afe40bce0823f12a4d70273671ede0c3b0cf9b3755d
3
+ size 330318
static/task/paral/SoulX-Podcast/samples/para_v2_haha_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3fdaaa343304507da93ce1d393c9c53ca1a063addda9e1464827d9e408e56d26
3
+ size 468558
static/task/paral/SoulX-Podcast/samples/para_v2_hahaha_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0ff6dbd770d9df6d6e32e568c7a067c17f3dc0a1ece8f06d47ffb09adbc9306a
3
+ size 337998
static/task/paral/SoulX-Podcast/samples/para_v2_he_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5d6043380058d74ab7c790604b171321fd5ec2bb4b4e5de01ab3ec1c4fcd7ea9
3
+ size 295758
static/task/paral/SoulX-Podcast/samples/para_v2_hehe_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e698948b502d141115bbbf3d21d955cc6e037a657a8fb147b5a682d9a03a59df
3
+ size 353358
static/task/paral/SoulX-Podcast/samples/para_v2_hei_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:101351576372da48fd88d439ce0a138618149d9c5d80b5d3aa9bed7a419340bf
3
+ size 334158
static/task/paral/SoulX-Podcast/samples/para_v2_heng_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c31a784b3d73c836f3ec556ef5dcd3e06a6f6cc1d140a57847002c0a90d7b647
3
+ size 318798
static/task/paral/SoulX-Podcast/samples/para_v2_hu_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6324af09aafbf60a24cd60e39008a4e026c38a445b36316fa31f82c52765453e
3
+ size 311118
static/task/paral/SoulX-Podcast/samples/para_v2_hu_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a3208e075b4526ed628e8d194e4ed62fe647fdc1647787c60e0c80557e76dbf3
3
+ size 380238
static/task/paral/SoulX-Podcast/samples/para_v2_keke_001.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:91c599b233e84d6ad2829540aaea7359e665ae393c501a632a572f403c15caab
3
+ size 341838
static/task/paral/SoulX-Podcast/samples/para_v2_keke_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:73eba846cbecdf326fefbede57e073b1f5cb5d331f792562c593c52bb5fbec6d
3
+ size 384078
static/task/paral/SoulX-Podcast/samples/para_v2_ze_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b0edd4fa984b1dd9e73785cbca47fc29df58c071ad481e821e16b4e9dd3bec7d
3
+ size 295758
static/task/paral/cosyvoice3/manifest.jsonl ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"utt": "para_v2_ai_002", "target_text": "我不是舍不得那点银子,唉,我只是觉得这么多年情分,不该只换来一句算了。", "speaker": "", "output_audio": "samples/para_v2_ai_002.wav"}
2
+ {"utt": "para_v2_en_004", "target_text": "好吧,嗯,既然大家都同意从北门走,那我负责把马车提前牵到巷口。", "speaker": "", "output_audio": "samples/para_v2_en_004.wav"}
3
+ {"utt": "para_v2_haha_002", "target_text": "真没想到咱们两个还能在这家小店碰上,哈哈,看来这碗热汤非喝不可。", "speaker": "", "output_audio": "samples/para_v2_haha_002.wav"}
4
+ {"utt": "para_v2_hahaha_004", "target_text": "我就说这条小路能抄近道吧,哈哈哈,比他们坐马车还先到半盏茶。", "speaker": "", "output_audio": "samples/para_v2_hahaha_004.wav"}
5
+ {"utt": "para_v2_he_002", "target_text": "这点小机关也想拦住我,呵,你们未免把我看得太轻了。", "speaker": "", "output_audio": "samples/para_v2_he_002.wav"}
6
+ {"utt": "para_v2_hehe_004", "target_text": "我还以为自己算得够准,呵呵,没想到最该防的人就坐在我对面喝茶。", "speaker": "", "output_audio": "samples/para_v2_hehe_004.wav"}
7
+ {"utt": "para_v2_hei_001", "target_text": "嘿,我早把船票压在茶盘下面了,就等你们找累了再拿出来。", "speaker": "", "output_audio": "samples/para_v2_hei_001.wav"}
8
+ {"utt": "para_v2_heng_002", "target_text": "药放在桌上,爱喝不喝,哼,反正疼得睡不着的人又不是我。", "speaker": "", "output_audio": "samples/para_v2_heng_002.wav"}
9
+ {"utt": "para_v2_hu_001", "target_text": "呼,幸好城门还没关,我一路从码头跑过来,连鞋带散了都没敢停。", "speaker": "", "output_audio": "samples/para_v2_hu_001.wav"}
10
+ {"utt": "para_v2_hu_002", "target_text": "火总算灭了,呼,大家先别进去,梁柱被烧空了,谁也不知道还能撑多久。", "speaker": "", "output_audio": "samples/para_v2_hu_002.wav"}
11
+ {"utt": "para_v2_keke_001", "target_text": "咳咳,先别吵,门外还有人守着,你们真想把整条巷子都惊醒吗?", "speaker": "", "output_audio": "samples/para_v2_keke_001.wav"}
12
+ {"utt": "para_v2_keke_002", "target_text": "诸位既然都到了,咳咳,那我就直说了,今日这份账谁也别想糊弄过去。", "speaker": "", "output_audio": "samples/para_v2_keke_002.wav"}
13
+ {"utt": "para_v2_ze_004", "target_text": "这手字写得倒漂亮,啧,可惜落款偏偏少了一笔。", "speaker": "", "output_audio": "samples/para_v2_ze_004.wav"}
static/task/paral/cosyvoice3/samples/para_v2_ai_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4596510f4991f4d39df7cf1c0962644b293902b1ea42e1a5bf8a682c0586db18
3
+ size 414798
static/task/paral/cosyvoice3/samples/para_v2_en_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a4d9ea15a097c33a5f1013df8c1df5affedad93d62f5ab5b74c845f01f59b336
3
+ size 403278
static/task/paral/cosyvoice3/samples/para_v2_haha_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b670ced3578f8ca3e82db0f8e61991191525cb8ea8a44a33352a4f952a82c550
3
+ size 395598
static/task/paral/cosyvoice3/samples/para_v2_hahaha_004.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:15896ce0b63d27812fd0b6d31a2224d6c3dae390acfe557152c4fe1b20e85af2
3
+ size 418638
static/task/paral/cosyvoice3/samples/para_v2_he_002.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8162f62adbe558cd47f3835c2a41839a94530809ef2542849c5c887c01a21bd
3
+ size 364878