UncleanCode commited on
Commit
2ea57e9
·
verified ·
1 Parent(s): ac573f1

Add Listen section: 5 playable stereo demos (user left / agent right), refreshed sample logs

Browse files
.gitattributes CHANGED
@@ -37,3 +37,4 @@ samples/01_igbo_greetings_english.mp3 filter=lfs diff=lfs merge=lfs -text
37
  samples/03_pidgin_bargein.mp3 filter=lfs diff=lfs merge=lfs -text
38
  samples/04_hausa_greetings_english.mp3 filter=lfs diff=lfs merge=lfs -text
39
  samples/05_igbo_heavy.mp3 filter=lfs diff=lfs merge=lfs -text
 
 
37
  samples/03_pidgin_bargein.mp3 filter=lfs diff=lfs merge=lfs -text
38
  samples/04_hausa_greetings_english.mp3 filter=lfs diff=lfs merge=lfs -text
39
  samples/05_igbo_heavy.mp3 filter=lfs diff=lfs merge=lfs -text
40
+ samples/02_yoruba_greetings_english.mp3 filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -39,6 +39,30 @@ speaker ◄── Dynamic Accent Flash-DPO TTS (chunk streaming, code-switching
39
 
40
  **Status: research demo.** Igbo, Yoruba and Hausa beyond greetings and simple phrases are weak (the reply LLM's limit, not the voice's). Read the limitations before using it for anything.
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  ## Components and licences
43
 
44
  | stage | component | licence |
@@ -157,7 +181,7 @@ Barge-in (batch eval, n=40): user speech onset -> agent audio stopped p50 0.235
157
 
158
  ## Demos
159
 
160
- `samples/` holds four scripted conversations made with the offline driver (agent: Flash-DPO male anchor). **User turns in these samples are TTS-synthesised** (Flash female voices), not real people. Each has a JSON log with the ASR text, the target mix, the reply, the validator outcome and per-stage latency.
161
 
162
  ## Limitations (read before use)
163
 
 
39
 
40
  **Status: research demo.** Igbo, Yoruba and Hausa beyond greetings and simple phrases are weak (the reply LLM's limit, not the voice's). Read the limitations before using it for anything.
41
 
42
+ ## Listen
43
+
44
+ Five scripted conversations from the offline driver. **Stereo: the user is on the LEFT channel, the agent on the RIGHT** (headphones help). **User turns are TTS-synthesised** with Dynamic Accent Flash female voices, not real people; the agent speaks with the Flash-DPO male anchor voice. These are **cascaded** demos (ASR → reply LLM → TTS), not a native speech-to-speech model, and the reply LLM is **weak in Igbo, Yoruba and Hausa beyond greetings and short phrases**, which you will hear. Each clip has a JSON log next to it in `samples/` (ASR text, target mix, reply, validator outcome, latency). Audio samples: CC-BY-SA-4.0.
45
+
46
+ **1. Igbo greeting + English.** Mostly English with an Igbo greeting and closing ("Ndewo!" … "Daalụ!"): planning a day (bank, market, call mum). Includes a long turn with a mid-turn pause and a barge-in ("Wait, sorry, the bank closes early today"). The agent greets back in Igbo ("Ụtụtụ ọma!") and replies in English; its last line contains a garbled name.
47
+
48
+ <audio controls src="https://huggingface.co/Modularcomputing/dynamic-accent-duplex/resolve/main/samples/01_igbo_greetings_english.mp3"></audio>
49
+
50
+ **2. Yoruba greeting + English.** "Ẹ káàárọ̀!" then English: buying a phone for a sister on a ₦100k budget, closing with "Ẹ ṣé!". The English replies are fine; the Yoruba the agent adds ("Ọmọ rẹ wà?") is not appropriate here.
51
+
52
+ <audio controls src="https://huggingface.co/Modularcomputing/dynamic-accent-duplex/resolve/main/samples/02_yoruba_greetings_english.mp3"></audio>
53
+
54
+ **3. Nigerian Pidgin.** Pidgin throughout ("How far? Abeg, wetin I fit cook tonight…"), with a barge-in ("No be rice o…"). The agent stays in Pidgin the whole way.
55
+
56
+ <audio controls src="https://huggingface.co/Modularcomputing/dynamic-accent-duplex/resolve/main/samples/03_pidgin_bargein.mp3"></audio>
57
+
58
+ **4. Hausa greeting + English.** "Sannu, barka da yamma" then English about a trip to Kano and what to pack; Hausa closing "To, na gode". The English advice is fine; the agent's extra Hausa phrases are not real Hausa, and the final Hausa-only turn falls back to "Sorry, I did not catch all of that".
59
+
60
+ <audio controls src="https://huggingface.co/Modularcomputing/dynamic-accent-duplex/resolve/main/samples/04_hausa_greetings_english.mp3"></audio>
61
+
62
+ **5. Igbo-heavier.** More Igbo from the user ("Kedu? Biko, nyere m aka" … "Daalụ, ka ọ dị"): booking a taxi to the airport. Shows the weak spot: the agent mostly echoes the user's Igbo phrases rather than writing new Igbo.
63
+
64
+ <audio controls src="https://huggingface.co/Modularcomputing/dynamic-accent-duplex/resolve/main/samples/05_igbo_heavy.mp3"></audio>
65
+
66
  ## Components and licences
67
 
68
  | stage | component | licence |
 
181
 
182
  ## Demos
183
 
184
+ `samples/` holds five scripted conversations (playable in **Listen** above; stereo, user left / agent right) made with the offline driver (agent: Flash-DPO male anchor). **User turns in these samples are TTS-synthesised** (Flash female voices), not real people. Each has a JSON log with the ASR text, the target mix, the reply, the validator outcome and per-stage latency.
185
 
186
  ## Limitations (read before use)
187
 
samples/01_igbo_greetings_english.json CHANGED
@@ -1,49 +1,54 @@
1
  {
2
  "name": "01_igbo_greetings_english",
3
- "desc": "Mostly English with Igbo greetings/closing (ACE's target case). Includes a long turn (backchannel) and a barge-in. User turns are TTS-synthesized (Flash, female Igbo voice).",
4
  "user_turns": [
5
  {
6
- "label": "TTS-synthesized user turn",
7
- "voice": "waxal_ibo_5_female",
8
- "text": "<ibo>Ndewo!</ibo> <eng>Good morning. Please, can you help me plan my day? I have a lot to do.</eng>"
 
9
  },
10
  {
11
- "label": "TTS-synthesized user turn (long, mid-turn pause)",
12
- "voice": "waxal_ibo_5_female",
13
  "text_parts": [
14
  "<eng>I need to go to the bank, and then the market,</eng>",
15
  "<eng>and in the evening I also want to call my mother.</eng>"
16
  ],
17
- "inner_pause": 0.4
 
 
 
18
  },
19
  {
20
- "label": "TTS-synthesized user turn (barge-in 1.5 s into the reply)",
21
- "voice": "waxal_ibo_5_female",
22
  "text": "<eng>Wait, sorry, the bank closes early today.</eng>",
23
- "barge_at": 1.5
 
 
24
  },
25
  {
26
- "label": "TTS-synthesized user turn",
27
- "voice": "waxal_ibo_5_female",
28
- "text": "<eng>Okay, thank you so much.</eng> <ibo>Daalụ!</ibo>"
 
29
  }
30
  ],
31
  "turns": [
32
  {
33
  "turn": 0,
34
- "user_label": "TTS-synthesized user turn",
35
  "user_ref": "<ibo>Ndewo!</ibo> <eng>Good morning. Please, can you help me plan my day? I have a lot to do.</eng>",
36
  "user_start": 0.7,
37
  "user_onset": 0.762,
38
  "backchannels": [],
39
- "asr": "nde wo good morning please can you help me plan my day i have a lot to do",
40
- "asr_s": 0.073,
41
  "eot_wait_s": 0.576,
42
  "speech_end": 5.984,
43
  "target": {
44
  "mix": {
45
- "eng": 0.89,
46
- "ibo": 0.11
47
  },
48
  "matrix": "eng",
49
  "pattern": [
@@ -52,161 +57,161 @@
52
  ]
53
  },
54
  "target_desc": "Match the user's language mix: English about 90%, Igbo about 10% of the words. The main (matrix) language is English. The user greeted in Igbo: open with a short Igbo greeting.",
55
- "reply": "<ibo>Ndewo!</ibo> <eng>Of course! Let’s start with your most urgent tasks. What’s the first thing you need to do today?</eng>",
56
  "reply_mix": {
57
- "eng": 0.95,
58
- "ibo": 0.05
59
  },
60
- "tvd": 0.059,
61
  "how": "first_round",
62
  "first_cand_ok": true,
63
  "rounds": [
64
  {
65
  "round": 0,
66
- "llm_s": 0.216,
67
  "cands": [
68
  {
69
- "text": "<ibo>Ndewo!</ibo> <eng>Of course! Let’s start with your most urgent tasks. What’s the first thing you need to do today?</eng>",
70
  "ok": true,
71
  "why": [],
72
- "tvd": 0.059
73
  },
74
  {
75
- "text": "<ibo>Ndewo!</ibo> <eng>Sure, I can help. Let’s list your tasks first—what’s the most urgent thing you need to do today?</eng>",
76
  "ok": true,
77
  "why": [],
78
- "tvd": 0.059
79
  },
80
  {
81
- "text": "<ibo>Ndewo!</ibo> <eng>Of course! Let’s start with your most urgent tasks. What’s the first thing you need to do today?</eng>",
82
  "ok": true,
83
  "why": [],
84
- "tvd": 0.059
85
  }
86
  ]
87
  }
88
  ],
89
- "mix_s": 0.0124,
90
- "llm_s": 0.216,
91
- "tts_first_s": 0.781,
92
  "spec_start_s": 0.256,
93
- "compute_to_first_audio_s": 1.096,
94
  "tts_breakdown": {
95
  "fe": 0.0,
96
- "lm": 1.003,
97
- "flow_voc": 0.214,
98
- "n_tok": 60,
99
- "audio_s": 2.4
100
  },
101
  "tts_chunks_s": [
102
- 0.781,
103
- 0.69,
104
- 1.495,
105
- 1.217
106
  ],
107
- "first_audio": 7.335,
108
- "reply_end": 15.295,
109
- "latency_s": 1.351
110
  },
111
  {
112
  "turn": 1,
113
- "user_label": "TTS-synthesized user turn (long, mid-turn pause)",
114
- "user_ref": "",
115
- "user_start": 15.995,
116
- "user_onset": 16.051,
117
  "backchannels": [
118
  {
119
- "t": 22.304,
120
  "turn_s": 5.28
121
  }
122
  ],
123
- "backchannel_at": 22.304,
124
- "asr": "i need to go to the bank and then the market and in the evening i also want to call my mother",
125
- "asr_s": 0.065,
126
  "eot_wait_s": 0.576,
127
- "speech_end": 22.016,
128
  "target": {
129
  "mix": {
130
- "eng": 0.97,
131
- "ibo": 0.03
132
  },
133
  "matrix": "eng",
134
  "pattern": []
135
  },
136
  "target_desc": "Match the user's language mix: English about 95%, Igbo about 5% of the words. The main (matrix) language is English.",
137
- "reply": "<eng>Okay, I got you. Start with the bank, then the market, and save calling your mother for evening. Want me to set a reminder?</eng>",
138
  "reply_mix": {
139
  "eng": 1.0
140
  },
141
- "tvd": 0.03,
142
  "how": "first_round",
143
  "first_cand_ok": true,
144
  "rounds": [
145
  {
146
  "round": 0,
147
- "llm_s": 0.257,
148
  "cands": [
149
  {
150
- "text": "<eng>Okay, I’ll help you plan. Start with the bank—go early to avoid queues. Then the market. Call your mother after dinner, when you’re relaxed.</eng> <ibo>Ọ dị mma.</ibo>",
151
  "ok": true,
152
  "why": [],
153
- "tvd": 0.081
154
  },
155
  {
156
- "text": "<eng>Okay, I got you. Start with the bank, then the market, and save calling your mother for evening. Want me to set a reminder?</eng>",
157
  "ok": true,
158
  "why": [],
159
- "tvd": 0.03
160
  },
161
  {
162
- "text": "<eng>Okay, let’s plan that. Go to the bank first, then the market, and call your mum in the evening. Need a reminder for the call?</eng>",
163
  "ok": true,
164
  "why": [],
165
- "tvd": 0.03
166
  }
167
  ]
168
  }
169
  ],
170
- "mix_s": 0.0158,
171
- "llm_s": 0.257,
172
- "tts_first_s": 0.976,
173
  "spec_start_s": 0.256,
174
- "compute_to_first_audio_s": 1.333,
175
  "tts_breakdown": {
176
  "fe": 0.0,
177
- "lm": 0.966,
178
- "flow_voc": 0.217,
179
- "n_tok": 58,
180
- "audio_s": 2.32
181
  },
182
  "tts_chunks_s": [
183
- 0.976,
184
- 2.443,
185
- 1.183
186
  ],
187
- "first_audio": 23.605,
188
- "reply_end": 33.528,
189
- "latency_s": 1.589
190
  },
191
  {
192
  "turn": 2,
193
- "user_label": "TTS-synthesized user turn (barge-in 1.5 s into the reply)",
194
  "user_ref": "<eng>Wait, sorry, the bank closes early today.</eng>",
195
- "user_start": 25.105,
196
- "user_onset": 25.174,
197
  "backchannels": [],
198
  "barge": {
199
- "user_onset": 25.174,
200
- "detected": 25.376,
201
- "agent_stopped": 25.416,
202
- "reaction_s": 0.242,
203
  "agent_chunks_played": 1,
204
  "agent_chunks_total": 3
205
  },
206
- "asr": "wait sorry the bank closes ale today",
207
- "asr_s": 0.057,
208
  "eot_wait_s": 0.576,
209
- "speech_end": 27.488,
210
  "target": {
211
  "mix": {
212
  "eng": 0.98
@@ -215,7 +220,7 @@
215
  "pattern": []
216
  },
217
  "target_desc": "Match the user's language mix: English about 100% of the words. The main (matrix) language is English. Reply only in English.",
218
- "reply": "<eng>Okay, no problem. Let’s plan for tomorrow instead. Should we adjust your market visit or call time?</eng>",
219
  "reply_mix": {
220
  "eng": 1.0
221
  },
@@ -225,22 +230,22 @@
225
  "rounds": [
226
  {
227
  "round": 0,
228
- "llm_s": 0.246,
229
  "cands": [
230
  {
231
- "text": "<eng>Okay, no problem. Let’s plan for tomorrow instead. Should we adjust your market visit or call time?</eng>",
232
  "ok": true,
233
  "why": [],
234
  "tvd": 0.01
235
  },
236
  {
237
- "text": "<eng>Okay, no problem. Let’s adjust—go to the market first, then call your mum in the evening. Want me to set a reminder?</eng>",
238
  "ok": true,
239
  "why": [],
240
  "tvd": 0.01
241
  },
242
  {
243
- "text": "<eng>Oh no worries—let’s adjust. We can go to the market first, then call your mum, and the bank can wait till tomorrow.</eng>",
244
  "ok": true,
245
  "why": [],
246
  "tvd": 0.01
@@ -248,107 +253,96 @@
248
  ]
249
  }
250
  ],
251
- "mix_s": 0.0055,
252
- "llm_s": 0.246,
253
- "tts_first_s": 0.891,
254
  "spec_start_s": 0.256,
255
- "compute_to_first_audio_s": 1.214,
256
  "tts_breakdown": {
257
  "fe": 0.0,
258
- "lm": 1.424,
259
- "flow_voc": 0.221,
260
- "n_tok": 85,
261
- "audio_s": 3.4
262
  },
263
  "tts_chunks_s": [
264
- 0.891,
265
- 1.124,
266
- 1.645
267
  ],
268
- "first_audio": 28.958,
269
- "reply_end": 36.358,
270
- "latency_s": 1.47
271
  },
272
  {
273
  "turn": 3,
274
- "user_label": "TTS-synthesized user turn",
275
  "user_ref": "<eng>Okay, thank you so much.</eng> <ibo>Daalụ!</ibo>",
276
- "user_start": 37.058,
277
- "user_onset": 37.119,
278
  "backchannels": [],
279
- "asr": "okay thank you somuch daalo",
280
- "asr_s": 0.056,
281
  "eot_wait_s": 0.576,
282
- "speech_end": 39.488,
283
  "target": {
284
  "mix": {
285
- "eng": 0.79,
286
- "ibo": 0.2
287
  },
288
  "matrix": "eng",
289
- "pattern": [
290
- "closing:ibo",
291
- "inter-sentential"
292
- ]
293
  },
294
- "target_desc": "Match the user's language mix: English about 80%, Igbo about 20% of the words. The main (matrix) language is English. The user closed in Igbo: you may close in Igbo.",
295
- "reply": "<eng>My pleasure!</eng> <ibo>Daalụ!</ibo>",
296
  "reply_mix": {
297
- "eng": 0.67,
298
- "ibo": 0.33
299
  },
300
- "tvd": 0.127,
301
  "how": "first_round",
302
  "first_cand_ok": true,
303
  "rounds": [
304
  {
305
  "round": 0,
306
- "llm_s": 0.177,
307
  "cands": [
308
  {
309
- "text": "<eng>My pleasure!</eng> <ibo>Daalụ!</ibo>",
310
  "ok": true,
311
  "why": [],
312
- "tvd": 0.127
313
  },
314
  {
315
- "text": "<eng>Anytime, no wahala.</eng> <ibo>Daalụ ọma!</ibo>",
316
- "ok": false,
317
- "why": [
318
- "mix drift tvd=0.49"
319
- ],
320
- "tvd": 0.495
321
  },
322
  {
323
- "text": "<eng>Anytime, no wahala.</eng> <ibo>Daalụ!</ibo>",
324
- "ok": false,
325
- "why": [
326
- "mix drift tvd=0.42"
327
- ],
328
- "tvd": 0.42
329
  }
330
  ]
331
  }
332
  ],
333
  "mix_s": 0.0042,
334
- "llm_s": 0.177,
335
- "tts_first_s": 0.758,
336
  "spec_start_s": 0.256,
337
- "compute_to_first_audio_s": 1.002,
338
  "tts_breakdown": {
339
  "fe": 0.0,
340
- "lm": 0.46,
341
- "flow_voc": 0.203,
342
- "n_tok": 30,
343
- "audio_s": 1.2
344
  },
345
  "tts_chunks_s": [
346
- 0.758,
347
- 0.662
348
  ],
349
- "first_audio": 40.746,
350
- "reply_end": 43.346,
351
- "latency_s": 1.258
352
  }
353
  ]
354
  }
 
1
  {
2
  "name": "01_igbo_greetings_english",
3
+ "desc": "Mostly English with Igbo greetings/closing. Includes a long turn (backchannel) and a barge-in. User turns are TTS-synthesized (Flash, female Igbo voice).",
4
  "user_turns": [
5
  {
6
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
7
+ "text": "<ibo>Ndewo!</ibo> <eng>Good morning. Please, can you help me plan my day? I have a lot to do.</eng>",
8
+ "wav": "/scratch/duplex_v2/user_audio/01_igbo_greetings_english_turn0.wav",
9
+ "orig_label": "TTS-synthesized user turn"
10
  },
11
  {
12
+ "label": "TTS-synthesized user turn (long, mid-turn pause) [identical input audio recovered from the 2026-10-24 demo]",
 
13
  "text_parts": [
14
  "<eng>I need to go to the bank, and then the market,</eng>",
15
  "<eng>and in the evening I also want to call my mother.</eng>"
16
  ],
17
+ "inner_pause": 0.4,
18
+ "wav": "/scratch/duplex_v2/user_audio/01_igbo_greetings_english_turn1.wav",
19
+ "text": "<eng>I need to go to the bank, and then the market,</eng> <eng>and in the evening I also want to call my mother.</eng>",
20
+ "orig_label": "TTS-synthesized user turn (long, mid-turn pause)"
21
  },
22
  {
23
+ "label": "TTS-synthesized user turn (barge-in 1.5 s into the reply) [identical input audio recovered from the 2026-10-24 demo]",
 
24
  "text": "<eng>Wait, sorry, the bank closes early today.</eng>",
25
+ "barge_at": 1.5,
26
+ "wav": "/scratch/duplex_v2/user_audio/01_igbo_greetings_english_turn2.wav",
27
+ "orig_label": "TTS-synthesized user turn (barge-in 1.5 s into the reply)"
28
  },
29
  {
30
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
31
+ "text": "<eng>Okay, thank you so much.</eng> <ibo>Daalụ!</ibo>",
32
+ "wav": "/scratch/duplex_v2/user_audio/01_igbo_greetings_english_turn3.wav",
33
+ "orig_label": "TTS-synthesized user turn"
34
  }
35
  ],
36
  "turns": [
37
  {
38
  "turn": 0,
39
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
40
  "user_ref": "<ibo>Ndewo!</ibo> <eng>Good morning. Please, can you help me plan my day? I have a lot to do.</eng>",
41
  "user_start": 0.7,
42
  "user_onset": 0.762,
43
  "backchannels": [],
44
+ "asr": "nde wo good morning please can you help me plan my day i have lot to do",
45
+ "asr_s": 0.093,
46
  "eot_wait_s": 0.576,
47
  "speech_end": 5.984,
48
  "target": {
49
  "mix": {
50
+ "eng": 0.88,
51
+ "ibo": 0.12
52
  },
53
  "matrix": "eng",
54
  "pattern": [
 
57
  ]
58
  },
59
  "target_desc": "Match the user's language mix: English about 90%, Igbo about 10% of the words. The main (matrix) language is English. The user greeted in Igbo: open with a short Igbo greeting.",
60
+ "reply": "<ibo>Ụtụtụ ọma!</ibo> <eng>Of course! Let’s start with your most important tasks first. What’s the top thing you need to do today?</eng>",
61
  "reply_mix": {
62
+ "eng": 0.86,
63
+ "ibo": 0.14
64
  },
65
+ "tvd": 0.023,
66
  "how": "first_round",
67
  "first_cand_ok": true,
68
  "rounds": [
69
  {
70
  "round": 0,
71
+ "llm_s": 1.106,
72
  "cands": [
73
  {
74
+ "text": "<ibo>Ụtụtụ ọma!</ibo> <eng>Of course! Let’s start with your most important tasks first. What’s the top thing you need to do today?</eng>",
75
  "ok": true,
76
  "why": [],
77
+ "tvd": 0.023
78
  },
79
  {
80
+ "text": "<ibo>Ndewo!</ibo> <eng>Of course! Let’s start with your most urgent tasks. What’s the first thing you need to do today?</eng>",
81
  "ok": true,
82
  "why": [],
83
+ "tvd": 0.069
84
  },
85
  {
86
+ "text": "<ibo>Ndewo!</ibo> <eng>Of course! Let’s start with your most important tasks first. What’s the top thing you need to do today?</eng>",
87
  "ok": true,
88
  "why": [],
89
+ "tvd": 0.07
90
  }
91
  ]
92
  }
93
  ],
94
+ "mix_s": 0.0118,
95
+ "llm_s": 1.106,
96
+ "tts_first_s": 1.196,
97
  "spec_start_s": 0.256,
98
+ "compute_to_first_audio_s": 2.42,
99
  "tts_breakdown": {
100
  "fe": 0.0,
101
+ "lm": 1.121,
102
+ "flow_voc": 0.221,
103
+ "n_tok": 66,
104
+ "audio_s": 2.64
105
  },
106
  "tts_chunks_s": [
107
+ 1.196,
108
+ 0.707,
109
+ 3.263,
110
+ 1.342
111
  ],
112
+ "first_audio": 8.661,
113
+ "reply_end": 18.27,
114
+ "latency_s": 2.677
115
  },
116
  {
117
  "turn": 1,
118
+ "user_label": "TTS-synthesized user turn (long, mid-turn pause) [identical input audio recovered from the 2026-10-24 demo]",
119
+ "user_ref": "<eng>I need to go to the bank, and then the market,</eng> <eng>and in the evening I also want to call my mother.</eng>",
120
+ "user_start": 18.97,
121
+ "user_onset": 19.026,
122
  "backchannels": [
123
  {
124
+ "t": 25.28,
125
  "turn_s": 5.28
126
  }
127
  ],
128
+ "backchannel_at": 25.28,
129
+ "asr": "i need to go to the bank and then the market and in the evening i also want o call my mother",
130
+ "asr_s": 0.093,
131
  "eot_wait_s": 0.576,
132
+ "speech_end": 24.992,
133
  "target": {
134
  "mix": {
135
+ "eng": 0.96,
136
+ "ibo": 0.04
137
  },
138
  "matrix": "eng",
139
  "pattern": []
140
  },
141
  "target_desc": "Match the user's language mix: English about 95%, Igbo about 5% of the words. The main (matrix) language is English.",
142
+ "reply": "<eng>Okay, let’s plan that. Go to the bank early, then the market, and call your mother before dinner. Need help with timings?</eng>",
143
  "reply_mix": {
144
  "eng": 1.0
145
  },
146
+ "tvd": 0.04,
147
  "how": "first_round",
148
  "first_cand_ok": true,
149
  "rounds": [
150
  {
151
  "round": 0,
152
+ "llm_s": 0.293,
153
  "cands": [
154
  {
155
+ "text": "<eng>Okay, let’s plan that. Go to the bank early, then the market, and call your mother before dinner. Need help with timings?</eng>",
156
  "ok": true,
157
  "why": [],
158
+ "tvd": 0.04
159
  },
160
  {
161
+ "text": "<eng>Okay, let’s plan that. Go to the bank early, then the market, and call your mum after dinner. Should I set a reminder?</eng> <ibo>Ọ dị mma</ibo>",
162
  "ok": true,
163
  "why": [],
164
+ "tvd": 0.078
165
  },
166
  {
167
+ "text": "<eng>Got it. Go to the bank early, then the market, and call your mother after dinner. Should I set a reminder?</eng> <ibo>Ọ dị mma</ibo>",
168
  "ok": true,
169
  "why": [],
170
+ "tvd": 0.083
171
  }
172
  ]
173
  }
174
  ],
175
+ "mix_s": 0.0157,
176
+ "llm_s": 0.293,
177
+ "tts_first_s": 0.963,
178
  "spec_start_s": 0.256,
179
+ "compute_to_first_audio_s": 1.383,
180
  "tts_breakdown": {
181
  "fe": 0.0,
182
+ "lm": 0.801,
183
+ "flow_voc": 0.223,
184
+ "n_tok": 50,
185
+ "audio_s": 2.0
186
  },
187
  "tts_chunks_s": [
188
+ 0.963,
189
+ 4.284,
190
+ 1.024
191
  ],
192
+ "first_audio": 26.631,
193
+ "reply_end": 37.835,
194
+ "latency_s": 1.639
195
  },
196
  {
197
  "turn": 2,
198
+ "user_label": "TTS-synthesized user turn (barge-in 1.5 s into the reply) [identical input audio recovered from the 2026-10-24 demo]",
199
  "user_ref": "<eng>Wait, sorry, the bank closes early today.</eng>",
200
+ "user_start": 28.131,
201
+ "user_onset": 28.2,
202
  "backchannels": [],
203
  "barge": {
204
+ "user_onset": 28.2,
205
+ "detected": 28.384,
206
+ "agent_stopped": 28.424,
207
+ "reaction_s": 0.224,
208
  "agent_chunks_played": 1,
209
  "agent_chunks_total": 3
210
  },
211
+ "asr": "wait sorry the band closes early today",
212
+ "asr_s": 0.074,
213
  "eot_wait_s": 0.576,
214
+ "speech_end": 30.528,
215
  "target": {
216
  "mix": {
217
  "eng": 0.98
 
220
  "pattern": []
221
  },
222
  "target_desc": "Match the user's language mix: English about 100% of the words. The main (matrix) language is English. Reply only in English.",
223
+ "reply": "<eng>Okay, no problem. Let’s adjust—go to the market first, then call your mum before the bank closes.</eng>",
224
  "reply_mix": {
225
  "eng": 1.0
226
  },
 
230
  "rounds": [
231
  {
232
  "round": 0,
233
+ "llm_s": 0.208,
234
  "cands": [
235
  {
236
+ "text": "<eng>Okay, no problem. Let’s adjust—go to the market first, then call your mum before the bank closes.</eng>",
237
  "ok": true,
238
  "why": [],
239
  "tvd": 0.01
240
  },
241
  {
242
+ "text": "<eng>Okay, no problem. Let’s shift the bank visit to morning, then market, and call your mum after dinner.</eng>",
243
  "ok": true,
244
  "why": [],
245
  "tvd": 0.01
246
  },
247
  {
248
+ "text": "<eng>Okay, no problem. Let’s shift the bank trip to earlier today. What time can you make it before it closes?</eng>",
249
  "ok": true,
250
  "why": [],
251
  "tvd": 0.01
 
253
  ]
254
  }
255
  ],
256
+ "mix_s": 0.0049,
257
+ "llm_s": 0.208,
258
+ "tts_first_s": 0.908,
259
  "spec_start_s": 0.256,
260
+ "compute_to_first_audio_s": 1.209,
261
  "tts_breakdown": {
262
  "fe": 0.0,
263
+ "lm": 2.513,
264
+ "flow_voc": 0.285,
265
+ "n_tok": 130,
266
+ "audio_s": 5.2
267
  },
268
  "tts_chunks_s": [
269
+ 0.908,
270
+ 2.798
 
271
  ],
272
+ "first_audio": 31.993,
273
+ "reply_end": 39.991,
274
+ "latency_s": 1.465
275
  },
276
  {
277
  "turn": 3,
278
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
279
  "user_ref": "<eng>Okay, thank you so much.</eng> <ibo>Daalụ!</ibo>",
280
+ "user_start": 40.691,
281
+ "user_onset": 40.753,
282
  "backchannels": [],
283
+ "asr": "ok thank you so much talo",
284
+ "asr_s": 0.05,
285
  "eot_wait_s": 0.576,
286
+ "speech_end": 43.104,
287
  "target": {
288
  "mix": {
289
+ "eng": 0.99
 
290
  },
291
  "matrix": "eng",
292
+ "pattern": []
 
 
 
293
  },
294
+ "target_desc": "Match the user's language mix: English about 100% of the words. The main (matrix) language is English. Reply only in English.",
295
+ "reply": "<eng>You're very welcome, Talos!</eng>",
296
  "reply_mix": {
297
+ "eng": 1.0
 
298
  },
299
+ "tvd": 0.005,
300
  "how": "first_round",
301
  "first_cand_ok": true,
302
  "rounds": [
303
  {
304
  "round": 0,
305
+ "llm_s": 0.17,
306
  "cands": [
307
  {
308
+ "text": "<eng>You're very welcome, Talos!</eng>",
309
  "ok": true,
310
  "why": [],
311
+ "tvd": 0.005
312
  },
313
  {
314
+ "text": "<eng>You’re welcome, Talu! Have a great day—stay calm and organized.</eng>",
315
+ "ok": true,
316
+ "why": [],
317
+ "tvd": 0.005
 
 
318
  },
319
  {
320
+ "text": "<eng>You’re welcome, Tallo! Have a great day.</eng>",
321
+ "ok": true,
322
+ "why": [],
323
+ "tvd": 0.005
 
 
324
  }
325
  ]
326
  }
327
  ],
328
  "mix_s": 0.0042,
329
+ "llm_s": 0.17,
330
+ "tts_first_s": 1.361,
331
  "spec_start_s": 0.256,
332
+ "compute_to_first_audio_s": 1.593,
333
  "tts_breakdown": {
334
  "fe": 0.0,
335
+ "lm": 1.138,
336
+ "flow_voc": 0.223,
337
+ "n_tok": 67,
338
+ "audio_s": 2.68
339
  },
340
  "tts_chunks_s": [
341
+ 1.361
 
342
  ],
343
+ "first_audio": 44.953,
344
+ "reply_end": 47.633,
345
+ "latency_s": 1.849
346
  }
347
  ]
348
  }
samples/01_igbo_greetings_english.mp3 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:18f762b80bc3ab09b920201869b0a8c4070a80cb6323ad2d1be38b92ce03d9f4
3
- size 704684
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2ba5c48e1cabad48537b1121aa661e8c577edcab6b4c88c2c96d0b97099a43bc
3
+ size 579788
samples/02_yoruba_greetings_english.json ADDED
@@ -0,0 +1,251 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "02_yoruba_greetings_english",
3
+ "desc": "Yoruba greetings + English. User turns TTS-synthesized (Flash, female Yoruba voice).",
4
+ "user_turns": [
5
+ {
6
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
7
+ "text": "<yor>Ẹ káàárọ̀!</yor> <eng>I want to buy a new phone for my sister.</eng>",
8
+ "wav": "/scratch/duplex_v2/user_audio/02_yoruba_greetings_english_turn0.wav",
9
+ "orig_label": "TTS-synthesized user turn"
10
+ },
11
+ {
12
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
13
+ "text": "<eng>Her budget is about one hundred thousand naira.</eng>",
14
+ "wav": "/scratch/duplex_v2/user_audio/02_yoruba_greetings_english_turn1.wav",
15
+ "orig_label": "TTS-synthesized user turn"
16
+ },
17
+ {
18
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
19
+ "text": "<eng>Okay, that sounds good.</eng> <yor>Ẹ ṣé!</yor>",
20
+ "wav": "/scratch/duplex_v2/user_audio/02_yoruba_greetings_english_turn2.wav",
21
+ "orig_label": "TTS-synthesized user turn"
22
+ }
23
+ ],
24
+ "turns": [
25
+ {
26
+ "turn": 0,
27
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
28
+ "user_ref": "<yor>Ẹ káàárọ̀!</yor> <eng>I want to buy a new phone for my sister.</eng>",
29
+ "user_start": 0.7,
30
+ "user_onset": 0.715,
31
+ "backchannels": [],
32
+ "asr": "ẹka arọ i want to buy any phone for my sisters",
33
+ "asr_s": 0.079,
34
+ "eot_wait_s": 0.576,
35
+ "speech_end": 4.096,
36
+ "target": {
37
+ "mix": {
38
+ "eng": 0.82,
39
+ "yor": 0.18
40
+ },
41
+ "matrix": "eng",
42
+ "pattern": [
43
+ "inter-sentential"
44
+ ]
45
+ },
46
+ "target_desc": "Match the user's language mix: English about 80%, Yoruba about 20% of the words. The main (matrix) language is English.",
47
+ "reply": "<eng>Okay, I hear you. What kind of phone are you thinking for your sisters?</eng> <yor>Ọmọ rẹ wà?</yor>",
48
+ "reply_mix": {
49
+ "eng": 0.82,
50
+ "yor": 0.18
51
+ },
52
+ "tvd": 0.002,
53
+ "how": "first_round",
54
+ "first_cand_ok": true,
55
+ "rounds": [
56
+ {
57
+ "round": 0,
58
+ "llm_s": 0.851,
59
+ "cands": [
60
+ {
61
+ "text": "<eng>Okay, I understand. What kind of phone are you looking for—new or used?</eng> <yor>Àwọn àwọn àwọn àwọn?</yor>",
62
+ "ok": true,
63
+ "why": [],
64
+ "tvd": 0.048
65
+ },
66
+ {
67
+ "text": "<eng>Okay, I hear you. What kind of phone are you thinking for your sisters?</eng> <yor>Ọmọ rẹ wà?</yor>",
68
+ "ok": true,
69
+ "why": [],
70
+ "tvd": 0.002
71
+ },
72
+ {
73
+ "text": "<eng>Ẹ káàárọ̀! What kind of phone are you looking for—brand, price, or features?</eng> <yor>Ẹ káàárọ̀!</yor>",
74
+ "ok": true,
75
+ "why": [],
76
+ "tvd": 0.012
77
+ }
78
+ ]
79
+ }
80
+ ],
81
+ "mix_s": 0.0076,
82
+ "llm_s": 0.851,
83
+ "tts_first_s": 1.032,
84
+ "spec_start_s": 0.256,
85
+ "compute_to_first_audio_s": 1.984,
86
+ "tts_breakdown": {
87
+ "fe": 0.0,
88
+ "lm": 0.616,
89
+ "flow_voc": 0.22,
90
+ "n_tok": 39,
91
+ "audio_s": 1.56
92
+ },
93
+ "tts_chunks_s": [
94
+ 1.032,
95
+ 1.483,
96
+ 0.836
97
+ ],
98
+ "first_audio": 6.335,
99
+ "reply_end": 12.895,
100
+ "latency_s": 2.239
101
+ },
102
+ {
103
+ "turn": 1,
104
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
105
+ "user_ref": "<eng>Her budget is about one hundred thousand naira.</eng>",
106
+ "user_start": 13.595,
107
+ "user_onset": 13.83,
108
+ "backchannels": [],
109
+ "asr": "her budget is about 100 000 naira",
110
+ "asr_s": 0.066,
111
+ "eot_wait_s": 0.576,
112
+ "speech_end": 16.736,
113
+ "target": {
114
+ "mix": {
115
+ "eng": 0.95,
116
+ "yor": 0.05
117
+ },
118
+ "matrix": "eng",
119
+ "pattern": []
120
+ },
121
+ "target_desc": "Match the user's language mix: English about 95%, Yoruba about 5% of the words. The main (matrix) language is English.",
122
+ "reply": "<eng>Okay, with one hundred thousand naira, we can find a good smartphone for her. Any preferred brand?</eng> <yor>Ọmọ rẹ wà?</yor>",
123
+ "reply_mix": {
124
+ "eng": 0.85,
125
+ "yor": 0.15
126
+ },
127
+ "tvd": 0.1,
128
+ "how": "first_round",
129
+ "first_cand_ok": true,
130
+ "rounds": [
131
+ {
132
+ "round": 0,
133
+ "llm_s": 0.345,
134
+ "cands": [
135
+ {
136
+ "text": "<eng>Okay, with one hundred thousand naira, we can find a good smartphone for her. Any preferred brand?</eng> <yor>Ọmọ rẹ wà?</yor>",
137
+ "ok": true,
138
+ "why": [],
139
+ "tvd": 0.1
140
+ },
141
+ {
142
+ "text": "<eng>Okay, with one hundred thousand naira, we can find a good phone for her. Any brand preference?</eng> <yor>Ọmọ rẹ wà?</yor>",
143
+ "ok": true,
144
+ "why": [],
145
+ "tvd": 0.1
146
+ },
147
+ {
148
+ "text": "<eng>Okay, with a budget of one hundred thousand naira, I can suggest a few good phones. Do you want something with a good camera?</eng> <yor>Àwọn àkẹ́kẹ́ ní àwọn àwọn?</yor>",
149
+ "ok": true,
150
+ "why": [],
151
+ "tvd": 0.121
152
+ }
153
+ ]
154
+ }
155
+ ],
156
+ "mix_s": 0.0038,
157
+ "llm_s": 0.345,
158
+ "tts_first_s": 0.59,
159
+ "spec_start_s": 0.256,
160
+ "compute_to_first_audio_s": 1.021,
161
+ "tts_breakdown": {
162
+ "fe": 0.0,
163
+ "lm": 0.53,
164
+ "flow_voc": 0.221,
165
+ "n_tok": 34,
166
+ "audio_s": 1.36
167
+ },
168
+ "tts_chunks_s": [
169
+ 0.59,
170
+ 2.303,
171
+ 1.014,
172
+ 0.751
173
+ ],
174
+ "first_audio": 18.013,
175
+ "reply_end": 28.357,
176
+ "latency_s": 1.277
177
+ },
178
+ {
179
+ "turn": 2,
180
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
181
+ "user_ref": "<eng>Okay, that sounds good.</eng> <yor>Ẹ ṣé!</yor>",
182
+ "user_start": 29.057,
183
+ "user_onset": 29.312,
184
+ "backchannels": [],
185
+ "asr": "oka that sounds good she",
186
+ "asr_s": 0.077,
187
+ "eot_wait_s": 0.576,
188
+ "speech_end": 31.808,
189
+ "target": {
190
+ "mix": {
191
+ "eng": 0.97
192
+ },
193
+ "matrix": "eng",
194
+ "pattern": []
195
+ },
196
+ "target_desc": "Match the user's language mix: English about 95% of the words. The main (matrix) language is English. Reply only in English.",
197
+ "reply": "<eng>Okay, that sounds good. She has a favorite brand in mind?</eng>",
198
+ "reply_mix": {
199
+ "eng": 1.0
200
+ },
201
+ "tvd": 0.015,
202
+ "how": "first_round",
203
+ "first_cand_ok": true,
204
+ "rounds": [
205
+ {
206
+ "round": 0,
207
+ "llm_s": 0.207,
208
+ "cands": [
209
+ {
210
+ "text": "<eng>Okay, that sounds good. She has a favorite brand in mind?</eng>",
211
+ "ok": true,
212
+ "why": [],
213
+ "tvd": 0.015
214
+ },
215
+ {
216
+ "text": "<eng>Okay, that sounds good. She likes any particular brand like Samsung, iPhone, or Tecno?</eng>",
217
+ "ok": true,
218
+ "why": [],
219
+ "tvd": 0.015
220
+ },
221
+ {
222
+ "text": "<eng>Great! She’ll love it. Should we look for a phone with a good camera or long battery life?</eng>",
223
+ "ok": true,
224
+ "why": [],
225
+ "tvd": 0.015
226
+ }
227
+ ]
228
+ }
229
+ ],
230
+ "mix_s": 0.0034,
231
+ "llm_s": 0.207,
232
+ "tts_first_s": 1.217,
233
+ "spec_start_s": 0.256,
234
+ "compute_to_first_audio_s": 1.515,
235
+ "tts_breakdown": {
236
+ "fe": 0.0,
237
+ "lm": 0.887,
238
+ "flow_voc": 0.221,
239
+ "n_tok": 55,
240
+ "audio_s": 2.2
241
+ },
242
+ "tts_chunks_s": [
243
+ 1.217,
244
+ 1.109
245
+ ],
246
+ "first_audio": 33.579,
247
+ "reply_end": 38.219,
248
+ "latency_s": 1.771
249
+ }
250
+ ]
251
+ }
samples/02_yoruba_greetings_english.mp3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7172c7ba7a76c68e8d453f335ff3d474dc4a21f727829d4d3beff33fd41fb03
3
+ size 466892
samples/03_pidgin_bargein.json CHANGED
@@ -3,32 +3,35 @@
3
  "desc": "Nigerian Pidgin throughout, with a barge-in. User turns TTS-synthesized (Flash, female voice).",
4
  "user_turns": [
5
  {
6
- "label": "TTS-synthesized user turn",
7
- "voice": "waxal_yor_5_female",
8
- "text": "<pcm>How far? Abeg, wetin I fit cook tonight wey no go take long?</pcm>"
 
9
  },
10
  {
11
- "label": "TTS-synthesized user turn (barge-in 1.2 s into the reply)",
12
- "voice": "waxal_yor_5_female",
13
  "text": "<pcm>No be rice o, I no get rice for house.</pcm>",
14
- "barge_at": 1.2
 
 
15
  },
16
  {
17
- "label": "TTS-synthesized user turn",
18
- "voice": "waxal_yor_5_female",
19
- "text": "<pcm>Okay, na so. Thank you well well.</pcm>"
 
20
  }
21
  ],
22
  "turns": [
23
  {
24
  "turn": 0,
25
- "user_label": "TTS-synthesized user turn",
26
  "user_ref": "<pcm>How far? Abeg, wetin I fit cook tonight wey no go take long?</pcm>",
27
  "user_start": 0.7,
28
  "user_onset": 0.764,
29
  "backchannels": [],
30
- "asr": "how far i beg waiting i fik cook tonight when wou go take long",
31
- "asr_s": 0.069,
32
  "eot_wait_s": 0.576,
33
  "speech_end": 4.768,
34
  "target": {
@@ -41,7 +44,7 @@
41
  ]
42
  },
43
  "target_desc": "Match the user's language mix: Nigerian Pidgin about 100% of the words. The main (matrix) language is Nigerian Pidgin. The user greeted in Nigerian Pidgin: open with a short Nigerian Pidgin greeting. Reply only in Nigerian Pidgin.",
44
- "reply": "<pcm>How far? Abeg, jollof rice with pepper soup no go take long, only twenty minutes. You fit start now?</pcm>",
45
  "reply_mix": {
46
  "pcm": 1.0
47
  },
@@ -51,22 +54,22 @@
51
  "rounds": [
52
  {
53
  "round": 0,
54
- "llm_s": 0.23,
55
  "cands": [
56
  {
57
- "text": "<pcm>How far? Abeg, jollof rice with pepper soup no go take long, only twenty minutes. You fit start now?</pcm>",
58
  "ok": true,
59
  "why": [],
60
  "tvd": 0.0
61
  },
62
  {
63
- "text": "<pcm>How far! Abeg, jollof rice with beans no go take more than thirty minutes. You fit start now?</pcm>",
64
  "ok": true,
65
  "why": [],
66
  "tvd": 0.0
67
  },
68
  {
69
- "text": "<pcm>How far! Abeg, jollof rice with chicken no go take long, less than thirty minutes. You fit start now?</pcm>",
70
  "ok": true,
71
  "why": [],
72
  "tvd": 0.0
@@ -74,57 +77,55 @@
74
  ]
75
  }
76
  ],
77
- "mix_s": 0.0106,
78
- "llm_s": 0.23,
79
- "tts_first_s": 0.795,
80
  "spec_start_s": 0.256,
81
- "compute_to_first_audio_s": 1.119,
82
  "tts_breakdown": {
83
  "fe": 0.0,
84
- "lm": 0.592,
85
- "flow_voc": 0.216,
86
- "n_tok": 38,
87
- "audio_s": 1.52
88
  },
89
  "tts_chunks_s": [
90
- 0.795,
91
- 2.575,
92
- 0.808
93
  ],
94
- "first_audio": 6.143,
95
- "reply_end": 15.678,
96
- "latency_s": 1.375
97
  },
98
  {
99
  "turn": 1,
100
- "user_label": "TTS-synthesized user turn (barge-in 1.2 s into the reply)",
101
  "user_ref": "<pcm>No be rice o, I no get rice for house.</pcm>",
102
- "user_start": 7.343,
103
- "user_onset": 7.609,
104
  "backchannels": [],
105
  "barge": {
106
- "user_onset": 7.609,
107
- "detected": 7.808,
108
- "agent_stopped": 7.848,
109
- "reaction_s": 0.239,
110
  "agent_chunks_played": 1,
111
  "agent_chunks_total": 3
112
  },
113
- "asr": "no be rice o i no get rice for huse",
114
- "asr_s": 0.062,
115
  "eot_wait_s": 0.576,
116
- "speech_end": 11.2,
117
  "target": {
118
  "mix": {
119
  "pcm": 1.0
120
  },
121
  "matrix": "pcm",
122
- "pattern": [
123
- "discourse:pcm"
124
- ]
125
  },
126
- "target_desc": "Match the user's language mix: Nigerian Pidgin about 100% of the words. The main (matrix) language is Nigerian Pidgin. Sprinkle a Nigerian Pidgin discourse word or two the way the user did. Reply only in Nigerian Pidgin.",
127
- "reply": "<pcm>No wahala, I dey get rice for house. You fit cook e now, no go take long.</pcm>",
128
  "reply_mix": {
129
  "pcm": 1.0
130
  },
@@ -134,22 +135,22 @@
134
  "rounds": [
135
  {
136
  "round": 0,
137
- "llm_s": 0.214,
138
  "cands": [
139
  {
140
- "text": "<pcm>No wahala, I dey get rice for house. You fit cook e now, no go take long.</pcm>",
141
  "ok": true,
142
  "why": [],
143
  "tvd": 0.0
144
  },
145
  {
146
- "text": "<pcm>No wahala, I dey get rice for house. You just tell me wetin you fit cook, I go help you quick.</pcm>",
147
  "ok": true,
148
  "why": [],
149
  "tvd": 0.0
150
  },
151
  {
152
- "text": "<pcm>No wahala, I dey get rice for house. You fit cook e now, no go take long.</pcm>",
153
  "ok": true,
154
  "why": [],
155
  "tvd": 0.0
@@ -157,38 +158,38 @@
157
  ]
158
  }
159
  ],
160
- "mix_s": 0.0084,
161
- "llm_s": 0.214,
162
- "tts_first_s": 0.784,
163
  "spec_start_s": 0.256,
164
- "compute_to_first_audio_s": 1.081,
165
  "tts_breakdown": {
166
  "fe": 0.0,
167
- "lm": 1.385,
168
- "flow_voc": 0.208,
169
- "n_tok": 85,
170
- "audio_s": 3.4
171
  },
172
  "tts_chunks_s": [
173
- 0.784,
174
- 1.183,
175
- 1.594
176
  ],
177
- "first_audio": 12.538,
178
- "reply_end": 19.738,
179
- "latency_s": 1.338
180
  },
181
  {
182
  "turn": 2,
183
- "user_label": "TTS-synthesized user turn",
184
  "user_ref": "<pcm>Okay, na so. Thank you well well.</pcm>",
185
- "user_start": 20.438,
186
- "user_onset": 20.708,
187
  "backchannels": [],
188
- "asr": "ok na so thank you wew",
189
- "asr_s": 0.049,
190
  "eot_wait_s": 0.576,
191
- "speech_end": 24.448,
192
  "target": {
193
  "mix": {
194
  "pcm": 1.0
@@ -199,7 +200,7 @@
199
  ]
200
  },
201
  "target_desc": "Match the user's language mix: Nigerian Pidgin about 100% of the words. The main (matrix) language is Nigerian Pidgin. Sprinkle a Nigerian Pidgin discourse word or two the way the user did. Reply only in Nigerian Pidgin.",
202
- "reply": "<pcm>Ok na so, thank you well well. We go see later, no get problem.</pcm>",
203
  "reply_mix": {
204
  "pcm": 1.0
205
  },
@@ -209,22 +210,22 @@
209
  "rounds": [
210
  {
211
  "round": 0,
212
- "llm_s": 0.185,
213
  "cands": [
214
  {
215
- "text": "<pcm>Ok na so, thank you well well. We go see later, no get problem.</pcm>",
216
  "ok": true,
217
  "why": [],
218
  "tvd": 0.0
219
  },
220
  {
221
- "text": "<pcm>Ok na so, thank you well well. We go see later, no wahala.</pcm>",
222
  "ok": true,
223
  "why": [],
224
  "tvd": 0.0
225
  },
226
  {
227
- "text": "<pcm>Ok na so, thank you well well. We go see later, no wahala.</pcm>",
228
  "ok": true,
229
  "why": [],
230
  "tvd": 0.0
@@ -233,25 +234,25 @@
233
  }
234
  ],
235
  "mix_s": 0.0048,
236
- "llm_s": 0.185,
237
- "tts_first_s": 0.75,
238
  "spec_start_s": 0.256,
239
- "compute_to_first_audio_s": 1.001,
240
  "tts_breakdown": {
241
  "fe": 0.0,
242
- "lm": 1.034,
243
- "flow_voc": 0.219,
244
- "n_tok": 64,
245
- "audio_s": 2.56
246
  },
247
  "tts_chunks_s": [
248
- 0.75,
249
- 1.156,
250
- 1.253
251
  ],
252
- "first_audio": 25.704,
253
- "reply_end": 32.024,
254
- "latency_s": 1.256
255
  }
256
  ]
257
  }
 
3
  "desc": "Nigerian Pidgin throughout, with a barge-in. User turns TTS-synthesized (Flash, female voice).",
4
  "user_turns": [
5
  {
6
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
7
+ "text": "<pcm>How far? Abeg, wetin I fit cook tonight wey no go take long?</pcm>",
8
+ "wav": "/scratch/duplex_v2/user_audio/03_pidgin_bargein_turn0.wav",
9
+ "orig_label": "TTS-synthesized user turn"
10
  },
11
  {
12
+ "label": "TTS-synthesized user turn (barge-in 1.2 s into the reply) [identical input audio recovered from the 2026-10-24 demo]",
 
13
  "text": "<pcm>No be rice o, I no get rice for house.</pcm>",
14
+ "barge_at": 1.2,
15
+ "wav": "/scratch/duplex_v2/user_audio/03_pidgin_bargein_turn1.wav",
16
+ "orig_label": "TTS-synthesized user turn (barge-in 1.2 s into the reply)"
17
  },
18
  {
19
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
20
+ "text": "<pcm>Okay, na so. Thank you well well.</pcm>",
21
+ "wav": "/scratch/duplex_v2/user_audio/03_pidgin_bargein_turn2.wav",
22
+ "orig_label": "TTS-synthesized user turn"
23
  }
24
  ],
25
  "turns": [
26
  {
27
  "turn": 0,
28
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
29
  "user_ref": "<pcm>How far? Abeg, wetin I fit cook tonight wey no go take long?</pcm>",
30
  "user_start": 0.7,
31
  "user_onset": 0.764,
32
  "backchannels": [],
33
+ "asr": "how far i beg wetin i fit cook tonight when no go take long",
34
+ "asr_s": 0.086,
35
  "eot_wait_s": 0.576,
36
  "speech_end": 4.768,
37
  "target": {
 
44
  ]
45
  },
46
  "target_desc": "Match the user's language mix: Nigerian Pidgin about 100% of the words. The main (matrix) language is Nigerian Pidgin. The user greeted in Nigerian Pidgin: open with a short Nigerian Pidgin greeting. Reply only in Nigerian Pidgin.",
47
+ "reply": "<pcm>How far! You fit cook moi moi or amala with egusi soup, e no go pass twenty minutes. You dey need pepper?</pcm>",
48
  "reply_mix": {
49
  "pcm": 1.0
50
  },
 
54
  "rounds": [
55
  {
56
  "round": 0,
57
+ "llm_s": 0.232,
58
  "cands": [
59
  {
60
+ "text": "<pcm>How far! You fit cook moi moi or amala with egusi soup, e no go pass twenty minutes. You dey need pepper?</pcm>",
61
  "ok": true,
62
  "why": [],
63
  "tvd": 0.0
64
  },
65
  {
66
+ "text": "<pcm>How far! You fit cook efo riro with pepper soup, e no go take long. You get pepper for that?</pcm>",
67
  "ok": true,
68
  "why": [],
69
  "tvd": 0.0
70
  },
71
  {
72
+ "text": "<pcm>How far! You fit cook pepper soup with garri, e no go pass twenty minutes. You get pepper for that?</pcm>",
73
  "ok": true,
74
  "why": [],
75
  "tvd": 0.0
 
77
  ]
78
  }
79
  ],
80
+ "mix_s": 0.0099,
81
+ "llm_s": 0.232,
82
+ "tts_first_s": 0.662,
83
  "spec_start_s": 0.256,
84
+ "compute_to_first_audio_s": 1.003,
85
  "tts_breakdown": {
86
  "fe": 0.0,
87
+ "lm": 0.516,
88
+ "flow_voc": 0.22,
89
+ "n_tok": 33,
90
+ "audio_s": 1.32
91
  },
92
  "tts_chunks_s": [
93
+ 0.662,
94
+ 5.019,
95
+ 0.736
96
  ],
97
+ "first_audio": 6.027,
98
+ "reply_end": 19.286,
99
+ "latency_s": 1.259
100
  },
101
  {
102
  "turn": 1,
103
+ "user_label": "TTS-synthesized user turn (barge-in 1.2 s into the reply) [identical input audio recovered from the 2026-10-24 demo]",
104
  "user_ref": "<pcm>No be rice o, I no get rice for house.</pcm>",
105
+ "user_start": 7.227,
106
+ "user_onset": 7.493,
107
  "backchannels": [],
108
  "barge": {
109
+ "user_onset": 7.493,
110
+ "detected": 7.712,
111
+ "agent_stopped": 7.752,
112
+ "reaction_s": 0.259,
113
  "agent_chunks_played": 1,
114
  "agent_chunks_total": 3
115
  },
116
+ "asr": "no be rice oh i no get rice for house",
117
+ "asr_s": 0.082,
118
  "eot_wait_s": 0.576,
119
+ "speech_end": 11.072,
120
  "target": {
121
  "mix": {
122
  "pcm": 1.0
123
  },
124
  "matrix": "pcm",
125
+ "pattern": []
 
 
126
  },
127
+ "target_desc": "Match the user's language mix: Nigerian Pidgin about 100% of the words. The main (matrix) language is Nigerian Pidgin. Reply only in Nigerian Pidgin.",
128
+ "reply": "<pcm>Abeg, no worry! You fit cook beans with pepper soup—no rice, no problem. Wetin you fit use?</pcm>",
129
  "reply_mix": {
130
  "pcm": 1.0
131
  },
 
135
  "rounds": [
136
  {
137
  "round": 0,
138
+ "llm_s": 0.221,
139
  "cands": [
140
  {
141
+ "text": "<pcm>Abeg, no worry! You fit cook beans with pepper soup—no rice, no problem. Wetin you fit use?</pcm>",
142
  "ok": true,
143
  "why": [],
144
  "tvd": 0.0
145
  },
146
  {
147
+ "text": "<pcm>Abeg, no worry! You fit make garri and beans with pepper soup—no go take more than twenty minutes.</pcm>",
148
  "ok": true,
149
  "why": [],
150
  "tvd": 0.0
151
  },
152
  {
153
+ "text": "<pcm>No wahala, you fit cook garri with beans, e no go take long and no need rice.</pcm>",
154
  "ok": true,
155
  "why": [],
156
  "tvd": 0.0
 
158
  ]
159
  }
160
  ],
161
+ "mix_s": 0.0069,
162
+ "llm_s": 0.221,
163
+ "tts_first_s": 1.206,
164
  "spec_start_s": 0.256,
165
+ "compute_to_first_audio_s": 1.528,
166
  "tts_breakdown": {
167
  "fe": 0.0,
168
+ "lm": 0.755,
169
+ "flow_voc": 0.223,
170
+ "n_tok": 47,
171
+ "audio_s": 1.88
172
  },
173
  "tts_chunks_s": [
174
+ 1.206,
175
+ 2.214,
176
+ 0.978
177
  ],
178
+ "first_audio": 12.856,
179
+ "reply_end": 21.776,
180
+ "latency_s": 1.784
181
  },
182
  {
183
  "turn": 2,
184
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
185
  "user_ref": "<pcm>Okay, na so. Thank you well well.</pcm>",
186
+ "user_start": 22.476,
187
+ "user_onset": 22.746,
188
  "backchannels": [],
189
+ "asr": "oka na so thank you gbee well",
190
+ "asr_s": 0.065,
191
  "eot_wait_s": 0.576,
192
+ "speech_end": 26.464,
193
  "target": {
194
  "mix": {
195
  "pcm": 1.0
 
200
  ]
201
  },
202
  "target_desc": "Match the user's language mix: Nigerian Pidgin about 100% of the words. The main (matrix) language is Nigerian Pidgin. Sprinkle a Nigerian Pidgin discourse word or two the way the user did. Reply only in Nigerian Pidgin.",
203
+ "reply": "<pcm>Na so, thank you well well! I dey glad I fit help. We go see later, no wahala.</pcm>",
204
  "reply_mix": {
205
  "pcm": 1.0
206
  },
 
210
  "rounds": [
211
  {
212
  "round": 0,
213
+ "llm_s": 0.204,
214
  "cands": [
215
  {
216
+ "text": "<pcm>Na so, thank you well well! I dey glad I fit help. We go see later, no wahala.</pcm>",
217
  "ok": true,
218
  "why": [],
219
  "tvd": 0.0
220
  },
221
  {
222
+ "text": "<pcm>Na so! Thank you well well. We go see later, no wahala.</pcm>",
223
  "ok": true,
224
  "why": [],
225
  "tvd": 0.0
226
  },
227
  {
228
+ "text": "<pcm>Na so! Thank you well well, my friend. We go see later, no wahala.</pcm>",
229
  "ok": true,
230
  "why": [],
231
  "tvd": 0.0
 
234
  }
235
  ],
236
  "mix_s": 0.0048,
237
+ "llm_s": 0.204,
238
+ "tts_first_s": 1.289,
239
  "spec_start_s": 0.256,
240
+ "compute_to_first_audio_s": 1.576,
241
  "tts_breakdown": {
242
  "fe": 0.0,
243
+ "lm": 1.203,
244
+ "flow_voc": 0.222,
245
+ "n_tok": 73,
246
+ "audio_s": 2.92
247
  },
248
  "tts_chunks_s": [
249
+ 1.289,
250
+ 0.964,
251
+ 1.425
252
  ],
253
+ "first_audio": 28.296,
254
+ "reply_end": 35.696,
255
+ "latency_s": 1.832
256
  }
257
  ]
258
  }
samples/03_pidgin_bargein.mp3 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:2a6c93794a299b388091c0ece2178232ba01088f499628f2b34cc259edfdb94d
3
- size 523436
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6a7fe416706e523eb6762a6b41fbc7717368f0844e21a8c75d8a2bb2e040005c
3
+ size 436652
samples/04_hausa_greetings_english.json CHANGED
@@ -3,31 +3,34 @@
3
  "desc": "Hausa greeting + English, Hausa closing. User turns TTS-synthesized (Flash, female voice).",
4
  "user_turns": [
5
  {
6
- "label": "TTS-synthesized user turn",
7
- "voice": "waxal_ibo_5_female",
8
- "text": "<hau>Sannu, barka da yamma.</hau> <eng>I am travelling to Kano tomorrow.</eng>"
 
9
  },
10
  {
11
- "label": "TTS-synthesized user turn",
12
- "voice": "waxal_ibo_5_female",
13
- "text": "<eng>What should I pack for the weather there?</eng>"
 
14
  },
15
  {
16
- "label": "TTS-synthesized user turn",
17
- "voice": "waxal_ibo_5_female",
18
- "text": "<hau>To, na gode.</hau>"
 
19
  }
20
  ],
21
  "turns": [
22
  {
23
  "turn": 0,
24
- "user_label": "TTS-synthesized user turn",
25
  "user_ref": "<hau>Sannu, barka da yamma.</hau> <eng>I am travelling to Kano tomorrow.</eng>",
26
  "user_start": 0.7,
27
- "user_onset": 0.769,
28
  "backchannels": [],
29
- "asr": "sannu baka da yamma i am travelling to cano tomorrow",
30
- "asr_s": 0.058,
31
  "eot_wait_s": 0.576,
32
  "speech_end": 5.248,
33
  "target": {
@@ -43,75 +46,73 @@
43
  ]
44
  },
45
  "target_desc": "Match the user's language mix: English about 60%, Hausa about 40% of the words. The main (matrix) language is English. The user greeted in Hausa: open with a short Hausa greeting. Sprinkle a Hausa discourse word or two the way the user did.",
46
- "reply": "<hau>Sannu!</hau> <eng>Good evening, I hear you're travelling to Kano tomorrow. Is it for business or family?</eng> <hau>Ba mu aji kama?</hau>",
47
  "reply_mix": {
48
- "eng": 0.75,
49
- "hau": 0.25
50
  },
51
- "tvd": 0.15,
52
  "how": "first_round",
53
  "first_cand_ok": true,
54
  "rounds": [
55
  {
56
  "round": 0,
57
- "llm_s": 0.298,
58
  "cands": [
59
  {
60
- "text": "<hau>Sannu!</hau> <eng>Good evening, I hear you're travelling to Kano tomorrow. Is it for business or family?</eng> <hau>Ba mu aji kama?</hau>",
61
  "ok": true,
62
  "why": [],
63
- "tvd": 0.15
64
  },
65
  {
66
- "text": "<hau>Sannu!</hau> <eng>Good evening. I see you’re travelling to Kano tomorrow. Is it for business or pleasure?</eng>",
67
- "ok": false,
68
- "why": [
69
- "mix drift tvd=0.31"
70
- ],
71
- "tvd": 0.309
72
  },
73
  {
74
- "text": "<hau>Sannu baka da yamma!</hau> <eng>That’s good to hear. Are you sure you’ve packed everything for your trip to Kano?</eng>",
75
  "ok": true,
76
  "why": [],
77
- "tvd": 0.19
78
  }
79
  ]
80
  }
81
  ],
82
- "mix_s": 0.0077,
83
- "llm_s": 0.298,
84
- "tts_first_s": 0.668,
85
  "spec_start_s": 0.256,
86
- "compute_to_first_audio_s": 1.046,
87
  "tts_breakdown": {
88
  "fe": 0.0,
89
- "lm": 0.659,
90
- "flow_voc": 0.201,
91
- "n_tok": 42,
92
- "audio_s": 1.68
93
  },
94
  "tts_chunks_s": [
95
- 0.668,
96
- 1.721,
97
- 1.108,
98
- 0.86
99
  ],
100
- "first_audio": 6.55,
101
- "reply_end": 15.75,
102
- "latency_s": 1.302
103
  },
104
  {
105
  "turn": 1,
106
- "user_label": "TTS-synthesized user turn",
107
  "user_ref": "<eng>What should I pack for the weather there?</eng>",
108
- "user_start": 16.45,
109
- "user_onset": 16.695,
110
  "backchannels": [],
111
- "asr": "what should i park for the weather there",
112
- "asr_s": 0.049,
113
  "eot_wait_s": 0.576,
114
- "speech_end": 18.368,
115
  "target": {
116
  "mix": {
117
  "eng": 0.88,
@@ -121,86 +122,85 @@
121
  "pattern": []
122
  },
123
  "target_desc": "Match the user's language mix: English about 90%, Hausa about 10% of the words. The main (matrix) language is English.",
124
- "reply": "<eng>For Kano tomorrow, pack light clothes and a light jacket—weather will be warm during the day, cool at night. You need a hat too?</eng> <hau>Ya, kaiya da kaiyawa</hau>",
125
  "reply_mix": {
126
- "eng": 0.86,
127
- "hau": 0.14
128
  },
129
- "tvd": 0.021,
130
  "how": "first_round",
131
  "first_cand_ok": true,
132
  "rounds": [
133
  {
134
  "round": 0,
135
- "llm_s": 0.335,
136
  "cands": [
137
  {
138
- "text": "<eng>For Kano tomorrow, pack light clothes and a light jacket—weather will be hot during the day, cooler in the evening. You need a hat too?</eng> <hau>Wààtùn kààlà</hau>",
139
  "ok": true,
140
  "why": [],
141
- "tvd": 0.083
142
  },
143
  {
144
- "text": "<eng>For the weather in Kano, pack light clothes and a hat — it’s usually hot and sunny. But bring a light jacket for evenings. You need a raincoat?</eng> <hau>Na gida?</hau>",
145
  "ok": true,
146
  "why": [],
147
- "tvd": 0.052
148
  },
149
  {
150
- "text": "<eng>For Kano tomorrow, pack light clothes and a light jacket—weather will be warm during the day, cool at night. You need a hat too?</eng> <hau>Ya, kaiya da kaiyawa</hau>",
151
  "ok": true,
152
  "why": [],
153
- "tvd": 0.021
154
  }
155
  ]
156
  }
157
  ],
158
- "mix_s": 0.0062,
159
- "llm_s": 0.335,
160
- "tts_first_s": 0.844,
161
  "spec_start_s": 0.256,
162
- "compute_to_first_audio_s": 1.253,
163
  "tts_breakdown": {
164
  "fe": 0.0,
165
- "lm": 1.232,
166
- "flow_voc": 0.203,
167
- "n_tok": 76,
168
- "audio_s": 3.04
169
  },
170
  "tts_chunks_s": [
171
- 0.844,
172
- 2.871,
173
- 0.917,
174
- 1.435
 
175
  ],
176
- "first_audio": 19.876,
177
- "reply_end": 33.707,
178
- "latency_s": 1.508
179
  },
180
  {
181
  "turn": 2,
182
- "user_label": "TTS-synthesized user turn",
183
  "user_ref": "<hau>To, na gode.</hau>",
184
- "user_start": 34.407,
185
- "user_onset": 34.475,
186
  "backchannels": [],
187
- "asr": "tu na godi",
188
- "asr_s": 0.049,
189
  "eot_wait_s": 0.576,
190
- "speech_end": 35.616,
191
  "target": {
192
  "mix": {
193
- "hau": 0.56,
194
- "eng": 0.24,
195
- "ibo": 0.2
196
  },
197
  "matrix": "hau",
198
  "pattern": [
199
- "closing:hau",
200
- "inter-sentential"
201
  ]
202
  },
203
- "target_desc": "Match the user's language mix: Hausa about 55%, English about 25%, Igbo about 20% of the words. The main (matrix) language is Hausa. The user closed in Hausa: you may close in Hausa.",
204
  "reply": "<hau>Sannu!</hau> <eng>Sorry, I did not catch all of that. Could you say it again, or in English?</eng>",
205
  "reply_mix": {
206
  "eng": 0.91,
@@ -212,85 +212,85 @@
212
  "rounds": [
213
  {
214
  "round": 0,
215
- "llm_s": 0.264,
216
  "cands": [
217
  {
218
- "text": "<hau>Tu na godi!</hau> <eng>Thank you for the info. Is there anything else I can help with?</eng> <ibo>Daalụ!</ibo>",
219
  "ok": false,
220
  "why": [
221
- "mix drift tvd=0.52"
222
  ],
223
- "tvd": 0.522
224
  },
225
  {
226
- "text": "<hau>Tu na godi!</hau> <eng>Thank you, I’m glad I could help.</eng> <ibo>Daalụ!</ibo>",
227
  "ok": false,
228
  "why": [
229
- "mix drift tvd=0.42"
230
  ],
231
- "tvd": 0.424
232
  },
233
  {
234
- "text": "<hau>Tu na Godi!</hau> <eng>Thank you, I’ll keep that in mind.</eng> <ibo>Daalụ ọma!</ibo>",
235
  "ok": false,
236
  "why": [
237
- "mix drift tvd=0.44"
238
  ],
239
- "tvd": 0.435
240
  }
241
  ]
242
  },
243
  {
244
  "round": 1,
245
- "llm_s": 0.273,
246
  "cands": [
247
  {
248
- "text": "<hau>Tu na Godi!</hau> <eng>Thank you for the help. I’ll make sure to pack for the weather.</eng> <ibo>Dalụ n’ụzọ ịmụ ọrụ.</ibo>",
249
  "ok": false,
250
  "why": [
251
- "mix drift tvd=0.49"
252
  ],
253
- "tvd": 0.485
254
  },
255
  {
256
- "text": "<hau>Tu na godi!</hau> <eng>Thank you for the info. Is the weather there usually dry this time of year?</eng> <ibo>Ọ dị mma, nke a banyere ike</ibo>",
257
  "ok": false,
258
  "why": [
259
- "mix drift tvd=0.50"
260
  ],
261
- "tvd": 0.5
262
  },
263
  {
264
- "text": "<hau>Tu na godi!</hau> <eng>Thank you for the info. I’ll keep you posted on the weather.</eng> <ibo>Dalụ na ọma</ibo>",
265
  "ok": false,
266
  "why": [
267
- "mix drift tvd=0.48"
268
  ],
269
- "tvd": 0.477
270
  }
271
  ]
272
  }
273
  ],
274
- "mix_s": 0.0031,
275
- "llm_s": 0.537,
276
- "tts_first_s": 0.629,
277
  "spec_start_s": 0.256,
278
- "compute_to_first_audio_s": 1.249,
279
  "tts_breakdown": {
280
  "fe": 0.0,
281
- "lm": 1.4,
282
- "flow_voc": 0.224,
283
  "n_tok": 86,
284
  "audio_s": 3.44
285
  },
286
  "tts_chunks_s": [
287
- 0.629,
288
- 1.235,
289
- 1.625
290
  ],
291
- "first_audio": 37.121,
292
- "reply_end": 44.356,
293
- "latency_s": 1.505
294
  }
295
  ]
296
  }
 
3
  "desc": "Hausa greeting + English, Hausa closing. User turns TTS-synthesized (Flash, female voice).",
4
  "user_turns": [
5
  {
6
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
7
+ "text": "<hau>Sannu, barka da yamma.</hau> <eng>I am travelling to Kano tomorrow.</eng>",
8
+ "wav": "/scratch/duplex_v2/user_audio/04_hausa_greetings_english_turn0.wav",
9
+ "orig_label": "TTS-synthesized user turn"
10
  },
11
  {
12
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
13
+ "text": "<eng>What should I pack for the weather there?</eng>",
14
+ "wav": "/scratch/duplex_v2/user_audio/04_hausa_greetings_english_turn1.wav",
15
+ "orig_label": "TTS-synthesized user turn"
16
  },
17
  {
18
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
19
+ "text": "<hau>To, na gode.</hau>",
20
+ "wav": "/scratch/duplex_v2/user_audio/04_hausa_greetings_english_turn2.wav",
21
+ "orig_label": "TTS-synthesized user turn"
22
  }
23
  ],
24
  "turns": [
25
  {
26
  "turn": 0,
27
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
28
  "user_ref": "<hau>Sannu, barka da yamma.</hau> <eng>I am travelling to Kano tomorrow.</eng>",
29
  "user_start": 0.7,
30
+ "user_onset": 0.77,
31
  "backchannels": [],
32
+ "asr": "sannu baka da yamma i am travelling to kano tomorrow",
33
+ "asr_s": 0.088,
34
  "eot_wait_s": 0.576,
35
  "speech_end": 5.248,
36
  "target": {
 
46
  ]
47
  },
48
  "target_desc": "Match the user's language mix: English about 60%, Hausa about 40% of the words. The main (matrix) language is English. The user greeted in Hausa: open with a short Hausa greeting. Sprinkle a Hausa discourse word or two the way the user did.",
49
+ "reply": "<hau>Sannu!</hau> <eng>Good evening, I hear you’re travelling to Kano tomorrow. Is it for business or pleasure?</eng> <hau>Ba a da kai yin?</hau>",
50
  "reply_mix": {
51
+ "eng": 0.74,
52
+ "hau": 0.26
53
  },
54
+ "tvd": 0.137,
55
  "how": "first_round",
56
  "first_cand_ok": true,
57
  "rounds": [
58
  {
59
  "round": 0,
60
+ "llm_s": 0.301,
61
  "cands": [
62
  {
63
+ "text": "<hau>Sannu baka da yamma!</hau> <eng>Traveling to Kano tomorrow, eh? You need help with your flight or hotel booking?</eng>",
64
  "ok": true,
65
  "why": [],
66
+ "tvd": 0.179
67
  },
68
  {
69
+ "text": "<hau>Sannu!</hau> <eng>Good evening, I hear you're heading to Kano tomorrow. Any special reason for the trip?</eng> <hau>Baka da yamma</hau>",
70
+ "ok": true,
71
+ "why": [],
72
+ "tvd": 0.19
 
 
73
  },
74
  {
75
+ "text": "<hau>Sannu!</hau> <eng>Good evening, I hear you’re travelling to Kano tomorrow. Is it for business or pleasure?</eng> <hau>Ba a da kai yin?</hau>",
76
  "ok": true,
77
  "why": [],
78
+ "tvd": 0.137
79
  }
80
  ]
81
  }
82
  ],
83
+ "mix_s": 0.0076,
84
+ "llm_s": 0.301,
85
+ "tts_first_s": 0.679,
86
  "spec_start_s": 0.256,
87
+ "compute_to_first_audio_s": 1.091,
88
  "tts_breakdown": {
89
  "fe": 0.0,
90
+ "lm": 0.685,
91
+ "flow_voc": 0.208,
92
+ "n_tok": 43,
93
+ "audio_s": 1.72
94
  },
95
  "tts_chunks_s": [
96
+ 0.679,
97
+ 1.738,
98
+ 1.186,
99
+ 0.894
100
  ],
101
+ "first_audio": 6.595,
102
+ "reply_end": 15.972,
103
+ "latency_s": 1.347
104
  },
105
  {
106
  "turn": 1,
107
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
108
  "user_ref": "<eng>What should I pack for the weather there?</eng>",
109
+ "user_start": 16.672,
110
+ "user_onset": 16.918,
111
  "backchannels": [],
112
+ "asr": "what should i pack for the weather there",
113
+ "asr_s": 0.055,
114
  "eot_wait_s": 0.576,
115
+ "speech_end": 18.592,
116
  "target": {
117
  "mix": {
118
  "eng": 0.88,
 
122
  "pattern": []
123
  },
124
  "target_desc": "Match the user's language mix: English about 90%, Hausa about 10% of the words. The main (matrix) language is English.",
125
+ "reply": "<eng>For Kano, pack light clothes, a hat, and sunscreen—weather is hot and sunny. You might also need a light jacket for evening. Any specific event?</eng> <hau>Wakai kai kai?</hau>",
126
  "reply_mix": {
127
+ "eng": 0.9,
128
+ "hau": 0.1
129
  },
130
+ "tvd": 0.016,
131
  "how": "first_round",
132
  "first_cand_ok": true,
133
  "rounds": [
134
  {
135
  "round": 0,
136
+ "llm_s": 0.321,
137
  "cands": [
138
  {
139
+ "text": "<eng>For Kano, pack light clothes, a hat, and sunscreen—weather is hot and dry. You might also need a scarf for the dust.</eng> <hau>Na gida ne kai?</hau>",
140
  "ok": true,
141
  "why": [],
142
+ "tvd": 0.032
143
  },
144
  {
145
+ "text": "<eng>For Kano, pack light clothes, a hat, and sunscreen—weather is hot and sunny. You might also need a light jacket for evening. Any specific event?</eng> <hau>Wakai kai kai?</hau>",
146
  "ok": true,
147
  "why": [],
148
+ "tvd": 0.016
149
  },
150
  {
151
+ "text": "<eng>For Kano tomorrow, pack light clothes—hot and sunny. Bring a hat and sunscreen too.</eng> <hau>Wani kai da kai?</hau>",
152
  "ok": true,
153
  "why": [],
154
+ "tvd": 0.096
155
  }
156
  ]
157
  }
158
  ],
159
+ "mix_s": 0.0055,
160
+ "llm_s": 0.321,
161
+ "tts_first_s": 0.743,
162
  "spec_start_s": 0.256,
163
+ "compute_to_first_audio_s": 1.142,
164
  "tts_breakdown": {
165
  "fe": 0.0,
166
+ "lm": 0.65,
167
+ "flow_voc": 0.22,
168
+ "n_tok": 41,
169
+ "audio_s": 1.64
170
  },
171
  "tts_chunks_s": [
172
+ 0.743,
173
+ 2.614,
174
+ 1.588,
175
+ 0.958,
176
+ 0.871
177
  ],
178
+ "first_audio": 19.99,
179
+ "reply_end": 34.964,
180
+ "latency_s": 1.398
181
  },
182
  {
183
  "turn": 2,
184
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
185
  "user_ref": "<hau>To, na gode.</hau>",
186
+ "user_start": 35.664,
187
+ "user_onset": 35.732,
188
  "backchannels": [],
189
+ "asr": "2 na gode",
190
+ "asr_s": 0.058,
191
  "eot_wait_s": 0.576,
192
+ "speech_end": 36.864,
193
  "target": {
194
  "mix": {
195
+ "hau": 0.76,
196
+ "eng": 0.24
 
197
  },
198
  "matrix": "hau",
199
  "pattern": [
200
+ "closing:hau"
 
201
  ]
202
  },
203
+ "target_desc": "Match the user's language mix: Hausa about 75%, English about 25% of the words. The main (matrix) language is Hausa. The user closed in Hausa: you may close in Hausa.",
204
  "reply": "<hau>Sannu!</hau> <eng>Sorry, I did not catch all of that. Could you say it again, or in English?</eng>",
205
  "reply_mix": {
206
  "eng": 0.91,
 
212
  "rounds": [
213
  {
214
  "round": 0,
215
+ "llm_s": 0.253,
216
  "cands": [
217
  {
218
+ "text": "<hau>Na gode! Wakai kai kai da kai.</hau>",
219
  "ok": false,
220
  "why": [
221
+ "missing eng"
222
  ],
223
+ "tvd": 0.24
224
  },
225
  {
226
+ "text": "<hau>Na gode! Kuma kai kai da sani a cikin kai da kai. Kuma ya da ɗan kai kai.</hau>",
227
  "ok": false,
228
  "why": [
229
+ "missing eng"
230
  ],
231
+ "tvd": 0.24
232
  },
233
  {
234
+ "text": "<hau>Na gode! Wannan yin kai kai da kai.</hau>",
235
  "ok": false,
236
  "why": [
237
+ "missing eng"
238
  ],
239
+ "tvd": 0.24
240
  }
241
  ]
242
  },
243
  {
244
  "round": 1,
245
+ "llm_s": 0.23,
246
  "cands": [
247
  {
248
+ "text": "<hau>Na gode!</hau> <eng>My pleasure. Take care while you travel.</eng>",
249
  "ok": false,
250
  "why": [
251
+ "mix drift tvd=0.54"
252
  ],
253
+ "tvd": 0.539
254
  },
255
  {
256
+ "text": "<hau>Na gode!</hau> <eng>My pleasure. If you need more tips, just ask.</eng>",
257
  "ok": false,
258
  "why": [
259
+ "mix drift tvd=0.58"
260
  ],
261
+ "tvd": 0.579
262
  },
263
  {
264
+ "text": "<hau>Na gode!</hau> <eng>My pleasure. Take care while you travel.</eng> <hau>Wakai kai kai.</hau>",
265
  "ok": false,
266
  "why": [
267
+ "mix drift tvd=0.34"
268
  ],
269
+ "tvd": 0.342
270
  }
271
  ]
272
  }
273
  ],
274
+ "mix_s": 0.0015,
275
+ "llm_s": 0.483,
276
+ "tts_first_s": 0.64,
277
  "spec_start_s": 0.256,
278
+ "compute_to_first_audio_s": 1.206,
279
  "tts_breakdown": {
280
  "fe": 0.0,
281
+ "lm": 1.42,
282
+ "flow_voc": 0.222,
283
  "n_tok": 86,
284
  "audio_s": 3.44
285
  },
286
  "tts_chunks_s": [
287
+ 0.64,
288
+ 1.267,
289
+ 1.642
290
  ],
291
+ "first_audio": 38.325,
292
+ "reply_end": 45.593,
293
+ "latency_s": 1.461
294
  }
295
  ]
296
  }
samples/04_hausa_greetings_english.mp3 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:c26529b1c1611530b760d00731d371613ec639815d8416a8ec0ef471d12bd622
3
- size 720812
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:19c5000fd7a9f4d008cf4bffd4d8d2d75922bcc3ae3dbf2c4cd54cf80f20afc0
3
+ size 555308
samples/05_igbo_heavy.json CHANGED
@@ -3,37 +3,40 @@
3
  "desc": "Igbo-heavier user (shows the weak spot: LLM Igbo beyond phrases). User turns TTS-synthesized (Flash, female Igbo voice).",
4
  "user_turns": [
5
  {
6
- "label": "TTS-synthesized user turn",
7
- "voice": "waxal_ibo_5_female",
8
- "text": "<ibo>Kedu? Biko, nyere m aka.</ibo> <eng>I need a taxi to the airport.</eng>"
 
9
  },
10
  {
11
- "label": "TTS-synthesized user turn",
12
- "voice": "waxal_ibo_5_female",
13
- "text": "<ibo>Ee, ọ dị mma.</ibo> <eng>I will leave at six.</eng>"
 
14
  },
15
  {
16
- "label": "TTS-synthesized user turn",
17
- "voice": "waxal_ibo_5_female",
18
- "text": "<ibo>Daalụ, ka ọ dị.</ibo>"
 
19
  }
20
  ],
21
  "turns": [
22
  {
23
  "turn": 0,
24
- "user_label": "TTS-synthesized user turn",
25
  "user_ref": "<ibo>Kedu? Biko, nyere m aka.</ibo> <eng>I need a taxi to the airport.</eng>",
26
  "user_start": 0.7,
27
  "user_onset": 0.753,
28
  "backchannels": [],
29
- "asr": "kedu biko nere maaka i need a taxi to the airport",
30
- "asr_s": 0.065,
31
  "eot_wait_s": 0.576,
32
  "speech_end": 5.632,
33
  "target": {
34
  "mix": {
35
- "eng": 0.82,
36
- "ibo": 0.18
37
  },
38
  "matrix": "eng",
39
  "pattern": [
@@ -42,218 +45,260 @@
42
  "inter-sentential"
43
  ]
44
  },
45
- "target_desc": "Match the user's language mix: English about 80%, Igbo about 20% of the words. The main (matrix) language is English. The user greeted in Igbo: open with a short Igbo greeting. Sprinkle a Igbo discourse word or two the way the user did.",
46
  "reply": "<ibo>Kedu?</ibo> <eng>Okay, I can help you book a taxi to the airport. How soon do you need it?</eng> <ibo>Biko</ibo>",
47
  "reply_mix": {
48
  "eng": 0.89,
49
  "ibo": 0.11
50
  },
51
- "tvd": 0.072,
52
- "how": "first_round",
53
- "first_cand_ok": true,
54
  "rounds": [
55
  {
56
  "round": 0,
57
- "llm_s": 0.268,
58
  "cands": [
59
  {
60
  "text": "<ibo>Kedu?</ibo> <eng>Okay, I can help you book a taxi to the airport. How soon do you need it?</eng> <ibo>Biko</ibo>",
61
- "ok": true,
62
- "why": [],
63
- "tvd": 0.072
 
 
64
  },
65
  {
66
- "text": "<ibo>Kedu?</ibo> <eng>Okay, I can help you book a taxi to the airport. How soon do you need it?</eng> <ibo>Biko,</ibo>",
67
- "ok": true,
68
- "why": [],
69
- "tvd": 0.072
 
 
70
  },
71
  {
72
- "text": "<ibo>Kedu?</ibo> <eng>Okay, I can help you book a taxi to the airport. How far you want the pickup time?</eng> <ibo>Biko</ibo>",
73
- "ok": true,
74
- "why": [],
75
- "tvd": 0.175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
  ]
78
  }
79
  ],
80
- "mix_s": 0.0083,
81
- "llm_s": 0.268,
82
- "tts_first_s": 0.664,
83
  "spec_start_s": 0.256,
84
- "compute_to_first_audio_s": 1.02,
85
  "tts_breakdown": {
86
  "fe": 0.035,
87
- "lm": 0.088,
88
- "flow_voc": 0.198,
89
  "n_tok": 8,
90
  "audio_s": 0.32
91
  },
92
  "tts_chunks_s": [
93
- 0.664,
94
- 1.748,
95
- 1.012,
96
- 0.321
97
  ],
98
- "first_audio": 6.908,
99
- "reply_end": 14.696,
100
- "latency_s": 1.276
101
  },
102
  {
103
  "turn": 1,
104
- "user_label": "TTS-synthesized user turn",
105
  "user_ref": "<ibo>Ee, ọ dị mma.</ibo> <eng>I will leave at six.</eng>",
106
- "user_start": 15.396,
107
- "user_onset": 15.453,
108
  "backchannels": [],
109
- "asr": "ee odemma iwelivet six",
110
- "asr_s": 0.056,
111
  "eot_wait_s": 0.576,
112
- "speech_end": 18.048,
113
  "target": {
114
  "mix": {
115
- "eng": 0.95,
116
- "ibo": 0.05
117
  },
118
- "matrix": "eng",
119
- "pattern": []
 
 
120
  },
121
- "target_desc": "Match the user's language mix: English about 95%, Igbo about 5% of the words. The main (matrix) language is English.",
122
- "reply": "<eng>Yes, six o’clock is fine.</eng> <ibo>Ọ dị mma</ibo> <eng>Shall I confirm the booking now?</eng>",
123
  "reply_mix": {
124
- "eng": 0.79,
125
- "ibo": 0.21
126
  },
127
- "tvd": 0.162,
128
  "how": "first_round",
129
  "first_cand_ok": false,
130
  "rounds": [
131
  {
132
  "round": 0,
133
- "llm_s": 0.248,
134
  "cands": [
135
  {
136
- "text": "<eng>Yes, I’ll get a taxi for six. Is it okay if I confirm the pickup time with you?</eng> <ibo>Ee</ibo>",
137
  "ok": false,
138
  "why": [
139
- "non-English tags over English words"
140
  ],
141
- "tvd": 0.024
142
  },
143
  {
144
- "text": "<eng>Yes, six o’clock is fine. I’ll book the taxi for six.</eng> <ibo>Odemma</ibo>",
145
  "ok": false,
146
  "why": [
147
- "non-English tags over English words"
148
  ],
149
- "tvd": 0.008
150
  },
151
  {
152
- "text": "<eng>Yes, six o’clock is fine.</eng> <ibo>Ọ dị mma</ibo> <eng>Shall I confirm the booking now?</eng>",
153
  "ok": true,
154
  "why": [],
155
- "tvd": 0.162
156
  }
157
  ]
158
  }
159
  ],
160
- "mix_s": 0.0033,
161
- "llm_s": 0.248,
162
- "tts_first_s": 1.168,
163
  "spec_start_s": 0.256,
164
- "compute_to_first_audio_s": 1.488,
165
  "tts_breakdown": {
166
  "fe": 0.0,
167
- "lm": 1.265,
168
- "flow_voc": 0.206,
169
- "n_tok": 78,
170
- "audio_s": 3.12
171
  },
172
  "tts_chunks_s": [
173
- 1.168,
174
- 1.47
 
175
  ],
176
- "first_audio": 19.792,
177
- "reply_end": 25.312,
178
- "latency_s": 1.744
179
  },
180
  {
181
  "turn": 2,
182
- "user_label": "TTS-synthesized user turn",
183
  "user_ref": "<ibo>Daalụ, ka ọ dị.</ibo>",
184
- "user_start": 26.012,
185
- "user_onset": 26.077,
186
  "backchannels": [],
187
- "asr": "dalo kode",
188
- "asr_s": 0.043,
189
  "eot_wait_s": 0.576,
190
- "speech_end": 27.488,
191
  "target": {
192
  "mix": {
193
- "ibo": 0.5,
194
- "eng": 0.47
195
  },
196
  "matrix": "ibo",
197
  "pattern": [
198
- "closing:ibo",
199
- "inter-sentential"
200
  ]
201
  },
202
- "target_desc": "Match the user's language mix: Igbo about 50%, English about 45% of the words. The main (matrix) language is Igbo. The user closed in Igbo: you may close in Igbo.",
203
- "reply": "<ibo>Daalụ, ọ dị mma.</ibo> <eng>Thank you, I’ve confirmed your taxi for six.</eng> <ibo>Ka ọ dị.</ibo>",
204
  "reply_mix": {
205
- "eng": 0.53,
206
- "ibo": 0.47
207
  },
208
- "tvd": 0.047,
209
  "how": "first_round",
210
- "first_cand_ok": true,
211
  "rounds": [
212
  {
213
  "round": 0,
214
- "llm_s": 0.277,
215
  "cands": [
216
  {
217
- "text": "<ibo>Daalụ, biko.</ibo> <eng>Thank you, I’ll confirm your taxi for six o’clock.</eng> <ibo>Ka ọ dị.</ibo>",
218
- "ok": true,
219
- "why": [],
220
- "tvd": 0.156
 
 
221
  },
222
  {
223
- "text": "<ibo>Daalụ, biko.</ibo> <eng>Thank you, I’ll confirm your taxi for six.</eng> <ibo>Ka ọ dị.</ibo>",
224
  "ok": true,
225
  "why": [],
226
- "tvd": 0.133
227
  },
228
  {
229
- "text": "<ibo>Daalụ, ọ dị mma.</ibo> <eng>Thank you, I’ve confirmed your taxi for six.</eng> <ibo>Ka ọ dị.</ibo>",
230
- "ok": true,
231
- "why": [],
232
- "tvd": 0.047
 
 
233
  }
234
  ]
235
  }
236
  ],
237
- "mix_s": 0.002,
238
- "llm_s": 0.277,
239
- "tts_first_s": 1.131,
240
  "spec_start_s": 0.256,
241
- "compute_to_first_audio_s": 1.468,
242
  "tts_breakdown": {
243
  "fe": 0.0,
244
- "lm": 0.511,
245
- "flow_voc": 0.22,
246
- "n_tok": 33,
247
- "audio_s": 1.32
248
  },
249
  "tts_chunks_s": [
250
- 1.131,
251
- 1.498,
252
- 0.731
253
  ],
254
- "first_audio": 29.212,
255
- "reply_end": 35.972,
256
- "latency_s": 1.724
257
  }
258
  ]
259
  }
 
3
  "desc": "Igbo-heavier user (shows the weak spot: LLM Igbo beyond phrases). User turns TTS-synthesized (Flash, female Igbo voice).",
4
  "user_turns": [
5
  {
6
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
7
+ "text": "<ibo>Kedu? Biko, nyere m aka.</ibo> <eng>I need a taxi to the airport.</eng>",
8
+ "wav": "/scratch/duplex_v2/user_audio/05_igbo_heavy_turn0.wav",
9
+ "orig_label": "TTS-synthesized user turn"
10
  },
11
  {
12
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
13
+ "text": "<ibo>Ee, ọ dị mma.</ibo> <eng>I will leave at six.</eng>",
14
+ "wav": "/scratch/duplex_v2/user_audio/05_igbo_heavy_turn1.wav",
15
+ "orig_label": "TTS-synthesized user turn"
16
  },
17
  {
18
+ "label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
19
+ "text": "<ibo>Daalụ, ka ọ dị.</ibo>",
20
+ "wav": "/scratch/duplex_v2/user_audio/05_igbo_heavy_turn2.wav",
21
+ "orig_label": "TTS-synthesized user turn"
22
  }
23
  ],
24
  "turns": [
25
  {
26
  "turn": 0,
27
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
28
  "user_ref": "<ibo>Kedu? Biko, nyere m aka.</ibo> <eng>I need a taxi to the airport.</eng>",
29
  "user_start": 0.7,
30
  "user_onset": 0.753,
31
  "backchannels": [],
32
+ "asr": "kedu biko nyere m aka i need a taxis to the airport",
33
+ "asr_s": 0.093,
34
  "eot_wait_s": 0.576,
35
  "speech_end": 5.632,
36
  "target": {
37
  "mix": {
38
+ "eng": 0.58,
39
+ "ibo": 0.42
40
  },
41
  "matrix": "eng",
42
  "pattern": [
 
45
  "inter-sentential"
46
  ]
47
  },
48
+ "target_desc": "Match the user's language mix: English about 60%, Igbo about 40% of the words. The main (matrix) language is English. The user greeted in Igbo: open with a short Igbo greeting. Sprinkle a Igbo discourse word or two the way the user did.",
49
  "reply": "<ibo>Kedu?</ibo> <eng>Okay, I can help you book a taxi to the airport. How soon do you need it?</eng> <ibo>Biko</ibo>",
50
  "reply_mix": {
51
  "eng": 0.89,
52
  "ibo": 0.11
53
  },
54
+ "tvd": 0.312,
55
+ "how": "best_failed",
56
+ "first_cand_ok": false,
57
  "rounds": [
58
  {
59
  "round": 0,
60
+ "llm_s": 0.302,
61
  "cands": [
62
  {
63
  "text": "<ibo>Kedu?</ibo> <eng>Okay, I can help you book a taxi to the airport. How soon do you need it?</eng> <ibo>Biko</ibo>",
64
+ "ok": false,
65
+ "why": [
66
+ "mix drift tvd=0.31"
67
+ ],
68
+ "tvd": 0.312
69
  },
70
  {
71
+ "text": "<ibo>Kedu?</ibo> <eng>Okay, I can help you book a taxi to the airport. How soon do you need it?</eng> <ibo>Na so?</ibo>",
72
+ "ok": false,
73
+ "why": [
74
+ "mix drift tvd=0.45"
75
+ ],
76
+ "tvd": 0.45
77
  },
78
  {
79
+ "text": "<ibo>Kedu?</ibo> <eng>Yes, I can help you get a taxi to the airport. How soon do you need it?</eng> <ibo>Biko,</ibo> <eng>what time are you leaving?</eng>",
80
+ "ok": false,
81
+ "why": [
82
+ "mix drift tvd=0.32"
83
+ ],
84
+ "tvd": 0.318
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "round": 1,
90
+ "llm_s": 0.236,
91
+ "cands": [
92
+ {
93
+ "text": "<ibo>Kedu?</ibo> <eng>Biko, I go get you a taxi to the airport. How far you need to go?</eng>",
94
+ "ok": false,
95
+ "why": [
96
+ "mix drift tvd=0.44"
97
+ ],
98
+ "tvd": 0.44
99
+ },
100
+ {
101
+ "text": "<ibo>Kedu?</ibo> <eng>Biko, I go get a taxi for you to airport now. You dey wait for the car at your gate?</eng>",
102
+ "ok": false,
103
+ "why": [
104
+ "mix drift tvd=0.43"
105
+ ],
106
+ "tvd": 0.43
107
+ },
108
+ {
109
+ "text": "<ibo>Kedu?</ibo> <eng>Biko, I dey get a taxi for you to airport. How far you dey from airport?</eng>",
110
+ "ok": false,
111
+ "why": [
112
+ "mix drift tvd=0.44"
113
+ ],
114
+ "tvd": 0.44
115
  }
116
  ]
117
  }
118
  ],
119
+ "mix_s": 0.0085,
120
+ "llm_s": 0.538,
121
+ "tts_first_s": 0.678,
122
  "spec_start_s": 0.256,
123
+ "compute_to_first_audio_s": 1.351,
124
  "tts_breakdown": {
125
  "fe": 0.035,
126
+ "lm": 0.09,
127
+ "flow_voc": 0.202,
128
  "n_tok": 8,
129
  "audio_s": 0.32
130
  },
131
  "tts_chunks_s": [
132
+ 0.678,
133
+ 1.775,
134
+ 1.017,
135
+ 0.328
136
  ],
137
+ "first_audio": 7.239,
138
+ "reply_end": 15.054,
139
+ "latency_s": 1.607
140
  },
141
  {
142
  "turn": 1,
143
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
144
  "user_ref": "<ibo>Ee, ọ dị mma.</ibo> <eng>I will leave at six.</eng>",
145
+ "user_start": 15.754,
146
+ "user_onset": 15.811,
147
  "backchannels": [],
148
+ "asr": "ee ọ dị mma ewe live at six",
149
+ "asr_s": 0.077,
150
  "eot_wait_s": 0.576,
151
+ "speech_end": 18.4,
152
  "target": {
153
  "mix": {
154
+ "ibo": 0.65,
155
+ "eng": 0.35
156
  },
157
+ "matrix": "ibo",
158
+ "pattern": [
159
+ "inter-sentential"
160
+ ]
161
  },
162
+ "target_desc": "Match the user's language mix: Igbo about 65%, English about 35% of the words. The main (matrix) language is Igbo.",
163
+ "reply": "<ibo>Ee, ọ dị mma.</ibo> <eng>Got it, I’ll book the taxi for six o’clock.</eng> <ibo>Ọ dị mma na?</ibo>",
164
  "reply_mix": {
165
+ "eng": 0.56,
166
+ "ibo": 0.44
167
  },
168
+ "tvd": 0.21,
169
  "how": "first_round",
170
  "first_cand_ok": false,
171
  "rounds": [
172
  {
173
  "round": 0,
174
+ "llm_s": 0.268,
175
  "cands": [
176
  {
177
+ "text": "<ibo>Ee, ọ dị mma.</ibo> <eng>Okay, I’ll make sure the taxi arrives by six.</eng> <ibo>Biko</ibo>",
178
  "ok": false,
179
  "why": [
180
+ "mix drift tvd=0.33"
181
  ],
182
+ "tvd": 0.326
183
  },
184
  {
185
+ "text": "<ibo>Ee, ọ dị mma!</ibo> <eng>The flight leaves at six. Is that correct?</eng> <ibo>Biko</ibo>",
186
  "ok": false,
187
  "why": [
188
+ "mix drift tvd=0.30"
189
  ],
190
+ "tvd": 0.303
191
  },
192
  {
193
+ "text": "<ibo>Ee, ọ dị mma.</ibo> <eng>Got it, I’ll book the taxi for six o’clock.</eng> <ibo>Ọ dị mma na?</ibo>",
194
  "ok": true,
195
  "why": [],
196
+ "tvd": 0.21
197
  }
198
  ]
199
  }
200
  ],
201
+ "mix_s": 0.0058,
202
+ "llm_s": 0.268,
203
+ "tts_first_s": 0.913,
204
  "spec_start_s": 0.256,
205
+ "compute_to_first_audio_s": 1.278,
206
  "tts_breakdown": {
207
  "fe": 0.0,
208
+ "lm": 0.634,
209
+ "flow_voc": 0.217,
210
+ "n_tok": 40,
211
+ "audio_s": 1.6
212
  },
213
  "tts_chunks_s": [
214
+ 0.913,
215
+ 1.908,
216
+ 0.851
217
  ],
218
+ "first_audio": 19.935,
219
+ "reply_end": 27.483,
220
+ "latency_s": 1.535
221
  },
222
  {
223
  "turn": 2,
224
+ "user_label": "TTS-synthesized user turn [identical input audio recovered from the 2026-10-24 demo]",
225
  "user_ref": "<ibo>Daalụ, ka ọ dị.</ibo>",
226
+ "user_start": 28.183,
227
+ "user_onset": 28.248,
228
  "backchannels": [],
229
+ "asr": "daalụ kaọdị",
230
+ "asr_s": 0.056,
231
  "eot_wait_s": 0.576,
232
+ "speech_end": 29.664,
233
  "target": {
234
  "mix": {
235
+ "ibo": 0.88,
236
+ "eng": 0.12
237
  },
238
  "matrix": "ibo",
239
  "pattern": [
240
+ "closing:ibo"
 
241
  ]
242
  },
243
+ "target_desc": "Match the user's language mix: Igbo about 90%, English about 10% of the words. The main (matrix) language is Igbo. The user closed in Igbo: you may close in Igbo.",
244
+ "reply": "<ibo>Daalụ kaọdị.</ibo> <eng>See you later!</eng> <ibo>Ọ dị mma.</ibo>",
245
  "reply_mix": {
246
+ "eng": 0.38,
247
+ "ibo": 0.62
248
  },
249
+ "tvd": 0.257,
250
  "how": "first_round",
251
+ "first_cand_ok": false,
252
  "rounds": [
253
  {
254
  "round": 0,
255
+ "llm_s": 0.247,
256
  "cands": [
257
  {
258
+ "text": "<ibo>Daalụ kaọdị.</ibo> <eng>Thank you, I’ll see you at six.</eng> <ibo>Ọ dị mma.</ibo>",
259
+ "ok": false,
260
+ "why": [
261
+ "mix drift tvd=0.46"
262
+ ],
263
+ "tvd": 0.462
264
  },
265
  {
266
+ "text": "<ibo>Daalụ kaọdị.</ibo> <eng>See you later!</eng> <ibo>Ọ dị mma.</ibo>",
267
  "ok": true,
268
  "why": [],
269
+ "tvd": 0.257
270
  },
271
  {
272
+ "text": "<ibo>Daalụ kaọdị.</ibo> <eng>Thank you, have a safe trip.</eng>",
273
+ "ok": false,
274
+ "why": [
275
+ "mix drift tvd=0.63"
276
+ ],
277
+ "tvd": 0.63
278
  }
279
  ]
280
  }
281
  ],
282
+ "mix_s": 0.0016,
283
+ "llm_s": 0.247,
284
+ "tts_first_s": 0.864,
285
  "spec_start_s": 0.256,
286
+ "compute_to_first_audio_s": 1.179,
287
  "tts_breakdown": {
288
  "fe": 0.0,
289
+ "lm": 0.482,
290
+ "flow_voc": 0.208,
291
+ "n_tok": 31,
292
+ "audio_s": 1.24
293
  },
294
  "tts_chunks_s": [
295
+ 0.864,
296
+ 0.728,
297
+ 0.69
298
  ],
299
+ "first_audio": 31.099,
300
+ "reply_end": 35.299,
301
+ "latency_s": 1.435
302
  }
303
  ]
304
  }
samples/05_igbo_heavy.mp3 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:18334bf0803cd8a34e9c4ed001a026e09e27e44badb2b01adeab91a8a98172fd
3
- size 586412
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bbf0c9e8871a54ec88fc4b6e6032a01586ef265a3fb1ca16f54a97716e2364c4
3
+ size 431756