| # Conversational Speech generator tool | |
| Tool to generate multiple-end audio tracks to simulate conversational speech | |
| with two or more participants. | |
| The input to the tool is a directory containing a number of audio tracks and | |
| a text file indicating how to time the sequence of speech turns (see the Example | |
| section). | |
| Since the timing of the speaking turns is specified by the user, the generated | |
| tracks may not be suitable for testing scenarios in which there is unpredictable | |
| network delay (e.g., end-to-end RTC assessment). | |
| Instead, the generated pairs can be used when the delay is constant (obviously | |
| including the case in which there is no delay). | |
| For instance, echo cancellation in the APM module can be evaluated using two-end | |
| audio tracks as input and reverse input. | |
| By indicating negative and positive time offsets, one can reproduce cross-talk | |
| (aka double-talk) and silence in the conversation. | |
| ### Example | |
| For each end, there is a set of audio tracks, e.g., a1, a2 and a3 (speaker A) | |
| and b1, b2 (speaker B). | |
| The text file with the timing information may look like this: | |
| ``` | |
| A a1 0 | |
| B b1 0 | |
| A a2 100 | |
| B b2 -200 | |
| A a3 0 | |
| A a4 0 | |
| ``` | |
| The first column indicates the speaker name, the second contains the audio track | |
| file names, and the third the offsets (in milliseconds) used to concatenate the | |
| chunks. An optional fourth column contains positive or negative integral gains | |
| in dB that will be applied to the tracks. It's possible to specify the gain for | |
| some turns but not for others. If the gain is left out, no gain is applied. | |
| Assume that all the audio tracks in the example above are 1000 ms long. | |
| The tool will then generate two tracks (A and B) that look like this: | |
| **Track A** | |
| ``` | |
| a1 (1000 ms) | |
| silence (1100 ms) | |
| a2 (1000 ms) | |
| silence (800 ms) | |
| a3 (1000 ms) | |
| a4 (1000 ms) | |
| ``` | |
| **Track B** | |
| ``` | |
| silence (1000 ms) | |
| b1 (1000 ms) | |
| silence (900 ms) | |
| b2 (1000 ms) | |
| silence (2000 ms) | |
| ``` | |
| The two tracks can be also visualized as follows (one characheter represents | |
| 100 ms, "." is silence and "*" is speech). | |
| ``` | |
| t: 0 1 2 3 4 5 6 (s) | |
| A: **********...........**********........******************** | |
| B: ..........**********.........**********.................... | |
| ^ 200 ms cross-talk | |
| 100 ms silence ^ | |
| ``` |