
TTS Comms in IL2 Part 2: a Call to Collaboration with Community!
Where we left off last time
Let's summarize, where were stopped last time:
- We had phonemes and stress for all languages mostly "solved";
- We collected numerous recordings of "professional programmers" by the game devs (including their "screaming" voices);
- TTS should work on 1 CPU thread (i.e. on "toasters"), be very fast as it runs within the game client and should ideally support 8 languages and "screaming" voices;
- Air comm voices should be stoic, flinchless. Scream should be also similar to real-life pilot comms under pressure, i.e. also calm, reserved, stoic, not explicitly panicking;
- Due to current conditions it is next to impossible to hire professional voice talent to suit our needs, despite the game devs reputation.
What speech consists of
Typical speech can be separated into the following entities:
- Speaker identity or timbre (i.e. how your voice sounds);
- Speaker mannerisms / speech patterns (i.e. how you typically speak, intonations);
- General prosody (i.e. intonation, pauses, word and phoneme duration);
- Speech content (i.e. exact words or phonemes spoken);
- Some other nuanced characteristics like scream, questions, emphasis, exclamations, sighs, etc.
Naturally it is quite difficult to separate them all perfectly, but some TTS models strive to extract and distill at least some parts of this list.
What we tried
At first we ran experiments on more limited datasets (i.e. only Russian data) and then tried to extend to other domains / languages. Here is a curated shortlist of the approaches we tried and their comparative merits:
| Approach | Pros and cons | Conclusion |
|---|---|---|
| Formant-based approaches | Works well with high quality speakers with abundant data, allows direct precise control over screaming intensity | Does not work with scarce data. Does not scale to other languages via transfer learning |
| Transfer-learning based approaches | We pre-train a small target model on public domain data, then we fine-tune using our in-domain data | Works more or less fine with 2-3 languages within one model. Heavy accent. Does not scale to all languages. Model capacity not enough, total model size (if many) prohibitive, hard to support |
| Synthetic data based approaches | Data scarcity is solved by data generation using our internal revoice models, slim production models are trained on synthetic data mixed with real data | Our chosen approach. Accent exists for some speakers, native speakers marked it as acceptable. Scream kind of works, all languages work. TTS sounds a bit mushy. Production model is small and fast. |
So, basically, the approach that was shipped into the game was based on synthetic data and our "professional programmers'" voices. We have developed several internal models for TTS and revoice to make this work.
Obviously, these models try to separate between prosody (i.e. words or phonemes) and style (i.e. your timbre, accent and mannerisms). But of course they cannot do it perfectly. Hence for some speakers you can hear some accent or some words are a bit mushy. Also such models are always "leaky", i.e. they are not able perfectly to separate screaming prosody from style. And yes, this happens partially because we had to use our recordings as a basis, which were done by professional programmers.
Since we are not a giant corporation, we cannot just feed all of the Internet into a trillion param sized model and add 100,000 GPUs.
How can community help
It is next to impossible to find public domain data that would be 100% in-domain, i.e. stoic male voices, also under stress (ideally pretending to be military pilots).
If you wish to channel your inner post-WWII pilot and immortalize your voice TIMBRE in the game and help us bridge the last remaining gap in voice fidelity, we would need the following for as many languages and speakers as possible:
- At least 1 minute of speech (the more the better) with the correct accent (i.e. British or American English, or any other language from the list) with and without scream;
- Ideally there should be some pauses between utterances;
- The recordings should be made in a quiet room using a off-the-shelf streaming / game microphone, ideally in 48 kHz (this is quite standard nowadays);
- Typically, when doing such recordings, we try to prepare the texts in advance and we have a special web app for recording, but here I guess this would be impractical. I guess aviation fans should know better than us!
We are going to use the recordings as follows:
- We are only going to use the voice TIMBRE and the way you pronounce the phonemes. We are NOT going to use the way how you speak;
- We are going to run experiments using your TIMBRE as an in-game pilot;
- Of course all of these are EXPERIMENTS and may fail.
Also please note that:
- The success depends on the number of participants and language coverage;
- It may not produce the desired effect, it's experimental, the experiment often fail;
- We are not game devs, and the final voices will have to be approved and chosen by the game devs;
- Game devs may have some last mile legal hurdles to include the chosen assets in the game.
If you are willing to participate, please DM me on Reddit.
Many thanks for your attention!