
Так получилось, что нам посчастливилось принять участие в разработке синтеза речи для новой версии игры игры Ил-2 Штурмовик — Ил-2: Корея. Это был длинный путь, но в итоге у нас получилось:
Сделать синтез на 8 языках: русском, английском (американский и британский), китайском, корейском, японском, немецком, французском и итальянском;
В итоге пришлось работать на основе записей "профессиональных программистов" (как в старые добрые, но в этот раз это были C++ программисты-разработчики игры);
Синтез работает только на CPU практически без задержек;
Голоса умеют не только говорить, но и "кричать".
В игре на данный момент озвучиваются только игровые боты, но возможно когда-то синтез доедет и до мультиплеера.
Оглавление под спойлером
Послушать аудио и как это выглядит в игре
Послушать и посмотреть примеры звучания можно ниже. Сразу нужно оговориться, что "крик" тут немного "особенный" и в идеале скорее соответствует примерно вот такому радиообмену.
То есть, грубо говоря, в идеале должна быть довольно пунктирная речь, или очень возбуждённая пунктирная речь. Естественно в игре на это накладывается шум радио и двигателя самолёта, что несколько сглаживает углы и понижает требования к качеству синтеза.
Послушать аудио
Посмотреть видео
Легенда ИЛ-2 и текущее состояние игровой индустрии в России
Ностальгии спойлер

Из этого я тогда (условно конец 90х, совсем начало нулевых) играл в Max Payne, Крутого Сэма, Корсаров. Пару раз заходил в Стронгхолд. У нас была чуть своеобразная российская игровая сцена тогда, особенно много было всяких квестов, тактических игр и стратегий. Но я скорее помню все части Quake и Doom, Red Alert и Starcraft. Ну и, конечно, Героев. Ещё был миллион квестов про братьев Пилотов и Чапаева.
А во что из этого играли вы? Если честно, я в силу возраста, в то время в основном играл в шутеры. Всякие симуляторы, стратегии, пошаговые игры и подобное "сложное" тогда прошло немного мимо меня (кроме Героев и Starcraft, но я скорее тыкался там и гонял коняшек туда-сюда).
Хотя, я отчётливо помню, что у чуть более взрослого товарища на столе в стойке для CD-дисков были: Ил-2, Дальнобойщики, Герои, Rayman, Stronghold, Civilization и всякие другие более трешовые игры, включая всякие квесты.
Тут не ставлю задачу подробно всё пересказывать (на YouTube есть 100500 видосов про историю нашей игровой индустрии), но надо пару слов сказать для правильного контекста.
Оригинальный Ил-2 Штурмовик входит в "пантеон" великих игр позапрошлой итерации нашей игровой индустрии, которая немного закончилась примерно к концу нулевых. Ну то есть было и мировое признание, и миллионные тиражи (если знаете точнее — напишите) и народная любовь. В те времена Ил-2 прямо называли лучшим авиасимулятором (ключевое слово тут симулятор) и он прямо конкурировал с Microsoft Flight Simulator по уровню популярности и фанатской любви.
Сам я не фанат симуляторов (я играл в шутеры и RTS, в основном) и пошаговых игр / аркад / квестов. Но мои более взрослые товарищи тогда имели диски с этой игрой на столе и я наблюдал как они играют. Но я не понимал, мне казалось, что игра душновата и слишком сложная. В середине десятых я довольно много играл в "картошку", но примерно году к 2016-2018 играть в неё совсем стало невыносимо. Я пробовал тыкать "самолётики" у картошки и улиток, но ни разу не смог туда войти. Что было в 2022-2025, думаю вы и без меня помните. Если у вас есть опыт игры в хардкорные авиасимуляторы — думаю ваш взгляд тоже не будет лишним.
Если перенестись в настоящий момент, у нас наблюдается системный кризис игровой индустрии. Все более менее успешные команды в лучшем случае "сменили прописку" (почитайте фамилии в титрах таких успешных игр как Space Marine 2 или Rogue Trader). По этой причине для нас представляет особенную радость и гордость "прикоснуться" к легенде и в идеале оставить в вечности маленький кусочек своей работы в таком легендарном продукте, который сделан в нашей стране.
Пара слов про AI-slop и не только
Тут нужно ещё сказать буквально пару слов про AI-пузырь и AI-slop, которые заполонили информационное поле (и ленту на Хабре). Самое основное тут, что думаю очевидно более менее всем думающим людям, это то, что идёт попытка интернализировать все достижения "свободного" интернета, кристаллизовав их в виде моделей внутри контура гига-корпораций и потом поставить внешних людей, кто собственно и создал этот контент, "на счётчик".
Это имеет очевидные последствия в виде отмирания части полезных бизнес моделей, приближения "мёртвого интернета", обесценивания знаний и слома процесса передачи знаний. Грубо говоря упрощается "видимость" компетентности. Но тут важно сделать привязку к играм. Очевидно, что есть и позитивные кейсы.
Многих разработчиков западных AAA-игр принципиально пытались "отменить" за присутствие низкокачественных нейросетевых ассетов в играх. Тут ситуация по сути обратная, т.к. мы не пытаемся подменять творчество нейрослопом (или агрессивно резать косты, выставляя нереалистичные задачи команде разработки на фоне общего навязывания "круток" и "подписок").
По сути мы создаём контент, который бы иначе не мог бы в принципе быть создан. А именно сам контент игры по факту создаётся людьми (синтез только озвучивает то, что ему дал разработчик). Сами разработчики на эту тему пишут вот это со своей колокольни.
Постановка задачи
В современном мире задача сделать "yet another" синтез же простая, правда? Берёшь самый модный публичный репозиторий с 100500 звёзд и самой большой LLM, берёшь, что записал диктор, и "GPUs Go Brrr", правда? Но, к сожалению, нет.
Разработка синтеза в 1 картинке

Какое-то время назад к нам обратились разработчики игры и рассказали, что хотят добавить синтез в свою игру. При этом на старте сразу обсуждался некий продуктовый список требований, при этом требования зачастую были очевидно продиктованными необходимостью:
Работа сильно быстрее реального времени без задержек (ну тут очевидно);
Работа внутри клиента игры (синтез не может зависеть от внешних серверов, да и задержка будет портить впечатление, плюс сложно масштабироваться при успехе игры);
Покрытие как минимум 8 популярных языков (тут по сути неизбежно, так как это список воюющих сторон);
Возможность гибкой озвучки имён собственных и топонимов (без этого теряется гибкость разработки нового контента);
Возможность генерировать как обычную пунктирную речь, так и "крик" (речь должна быть похожа на то, как говорят реальные лётчики).
С продуктовой точки зрения у синтеза есть две конечные цели использования:
Программа минимум — оживить общение с игровыми ботами, диспетчерами и игровым окружением. Сделать добавление нового контента не зависящим от дикторов и разработки синтеза (все же знают приколы про "билдоту" и кривые и лишние фразы озвучки в старых играх);
Программа максимум — дать игрокам из разных стран возможность в мультиплеере говорить друг с другом через текстовый интерфейс.
"Оживление" диспетчеров и ботов подразумевает, что нужно произносить всякие разные топонимы и числа в разных комбинациях, что раньше решалось конкатенацией слов, что несколько делало игру более "роботизированной" и шаблонной. То есть заранее предзаписать всё и поддерживать это потом на N языках просто технически невозможно с современными требованиями к качеству контента.
Шумность обстановки, радиопомехи, звучание речи на фоне — несколько упрощает задачу, но не решает основной проблемы. Речь должна быть чёткой и не должна нарушать погружение игрока в игру.
Поскольку подразумевается длительная поддержка и выпуск большого количества DLC, направленных на разные театры военных действий, ситуация, где нужно потом будет бегать за дикторами на всех языках тоже — совсем не очень.
В начале нашего общения у нас была гипотеза, что раз активное комьюнити игры большое, имя студии известное, какой-то бюджет есть, то мы сможем привлечь профессиональных актёров.
В итоге найти людей-носителей нужных языков в команду для проверки синтеза и собственно создания контента получилось, а вот с актёрами озвучки вышел конфуз:
Санкции плюс мало кто хочет работать с компанией из России;
Иррациональный страх актёров перед AI (небезосновательный, если послушать безумную риторику ряда заинтересованных корпораций, в части синтеза — пока преждевременный);
Ну и ... как бы помягче сказать. В списке языков для озвучки присутствует подозрительно много стран, которые в разные исторические эпохи пытались осуществить нехорошие планы, разнящиеся от простого военного поражения до полного уничтожения нашей цивилизации.
Также в какой-то момент при планировании ресурсов стало понятно, что нельзя использовать GPU. Ну вот совсем. То есть нужна кастомная, особенная, просодия ("спокойный крик"), дикторов нет, синтез должен работать на 1 потоке процессора на "калькуляторах". Отличное начало!
Ведь у игроков же есть GPU, правда?

Озвучено профессиональными программистами
В сухом остатке, получается, на старте мы имеем следующее:
Отсутствует возможность привлечь профессиональных актёров в нужном количестве;
Довольно сильные требования к кастомизации, портативности, поддерживаемости;
Длинный список языков.
Отсюда получается, что неизбежно использование услуг озвучки "профессиональных программистов" как в старые добрые времена игр на CD-дисках. Но на этой базе нужно ещё и научить голоса русскоязычных программистов говорить на других языках. Бонус тут состоит в том, что целевой крик тут немного проще, чем настоящий крик у профессиональных актёров.
Для начала стоит взглянуть на список языков и их фонетику:
Язык | Алфавит | Фонетика |
Русский | Кириллица, фонетический | Простая, если знать ударение. Есть палатализация (мягкие согласные) |
Английский | Латиница, фонетический, но письмо не соответствует произношению | Как ни странно, самая сложная фонетика из всех этих языков (!) |
Китайский | Иероглифы | Всего около 1500 слогов, фонетика относительно простая (!). Сложность только в наличии тона, тон заменяет ударение |
Корейский | Слоговый алфавит, чёткие правила чтения | Простая фонетика, почти отсутствует ударение (в нашем понимании) |
Японский | Смесь из 2 слоговых алфавитов и китайских иероглифов условно 16 века | Простая фонетика, почти отсутствует ударение (в нашем понимании) |
Немецкий | Латиница, чёткие правила чтения | Довольно простая фонетика, много длинных слов с двумя ударениями, практически всегда очевидно куда ставить ударение |
Итальянский | Латиница, чёткие правила чтения | Наверное самая простая фонетика из всех языков |
Французский | Латиница, довольно чёткие правила чтения | Довольно простая фонетика (для синтеза), звуки необычные на наш слух, почти нет проблем с ударением, на письме оно ставится в нестандартных случаях |
Если, для начала для простоты, сфокусироваться на первых четырёх языках, то видно, что все языки используют совсем разные системы письма, которые ну вообще никак не связаны (разве что исторически). Отсюда получается, что надо или пытаться приводить их к некой единой схеме "правописания" или использовать фонемы.
Но даже так, слоном в комнате является английский язык, где произношение (особенно топонимов) может вообще никак не быть связано с написанием. Отсюда нужно или придумывать свою общую схема романизации / кириллизации или просто использовать фонемы.
Про топонимы в английском
Всё, как обычно, упирается в наличие адекватных инструментов и простоту их поддержки на дистанции:
Для русского нет адекватных готовых общепринятых инструментов по фонемизации или латинизации, увы. Но тут всё "просто". У нас они есть. Берём наши обширные словари ударений и фонем, нейросетки для ударений и фонем (фонемы разрешаются с точностью 99% на русском, если знать ударение), передаём это всё разработчику игры, и переводим все корпуса в фонемы. Ах да, ещё у нас есть активная морфология, падежи, спряжения, согласование в роде числе и падеже — но думаю вы про это всё знаете. Дальше при появлении нового слова (допустим название населённого пункта) разработчик просто ставит ударение и прогоняет слово через фонемизатор, слушает, добавляет в игру. Все эти инструменты быстрые, но на данном моменте их наличие в клиенте пока не требуется;
Для английского ввиду отсутствия падежей в современном языке — всё по сути сводится к поиску правильного словаря. Но вот незадача, если мы идём в использование фонем, то нужно выбирать словари и фонемы так, чтобы один и тот же звук в разных языках обозначал реально один и тот же звук. По сути это, конечно, проблема, так как в английском существуют десятки диалектов и люди реально говорят по-разному. И, зачастую, словари фонем существуют все в разных форматах. Это всё, естественно приходится править руками и массово отслушивать. По сути сложность задачи тут состоит в том, чтобы найти точку, где дальше различие между звуками уже не является важным. Точность фонемных моделей тут составляет примерно 95%, то есть при добавлении нового слова часто приходится переписывать, но это лучше, чем писать фонемами руками с нуля. Ещё мозг часто взрывает то, что при внимательном отслеживании материала носители языка сами очень часто не говорят знаменитый звук
θи часто жуют все гласные и превращают их в "шва";С китайским как ни странно всё просто. Есть по сути официальный государственный фонетический стандарт пиньинь. Есть готовые библиотеки, которые переводят китайские иероглифы (汉字) в него с расстановкой тонов. Дальше, по сути у китайцев всего около 1500 слогов (слог состоит из инициали и финали). Каждый слог можно однозначно записать фонемами, то есть существует прямой словарь соответствия (плюс символы для тонов) между слогами и фонемами (естественно не все слоги встречаются во всех тонах). Особняком стоит вопрос расстановки пробелов между словами (сами китайцы их зачастую не пишут). Пробелы помогают синтезу (как минимум в индо-европейских языках) с ритмикой и ударениями. Тут это нивелируется тонами, но мы ради интереса всё-таки решили расставить пробелы между словами (но разницы особо нет, чуть докидывает буквально). Есть незакрытый вопрос с "омографами" (иногда биграммы "знаков", 字, читаются по-разному в зависимости от смысла) и тем, что некоторые тоны не могут соседствовать друг с другом (попробуйте быстро прочитать два слога подряд третьим тоном, то есть
nǐ hǎo) — но это мы уже отдали на откуп самой нейросети и носителям языка. По сути использование такого процесса упрощает поддержку, так как все носители языка априори знают тоны и пиньинь (пусть писать тоны циферками и чуть менее удобно);С корейским языком всё одновременно и очень просто, но есть свои подводные камни. Для начала, все материалы в интернете ... это, естественно, южнокорейский язык. Но тут мы ничего не можем поделать. Письмо у корейцев фонетическое, но знаки "странные", потому что глядя на китайцев (видимо они бумагу так экономили), они решили объединять свои буквы в слоги и писать их тоже "квадратиками". То есть, по сути, надо разложить "квадратики" в обычные буквы и дальше перевести в фонемы. У корейцев есть строгие правила чтения, но там ряд звуков меняется в зависимости от контекста. По идее это можно записать в виде правил ... но мы решили этот вопрос тоже через нейросети на минимальном корпусе и сформировали словарь на все слова языка. Точность перевода получается очень высокой. Из плюсов тут нет тонов, почти нет ударения и почти нет пробелов между словами;
В сухом остатке — каждый язык мы преобразуем в набор фонем. При этом мы тщательно перебрали руками все эти фонемы, чтобы они друг другу не противоречили. Это невозможно сделать абсолютно идеально, но основные проблемы классических фонемных словарей мы победили (например палатализацию). Всегда есть тонкости и маленькие детали, от которых приходится отказываться.
Иллюстрация фонем на примере гласных для русского-английского-корейского
Приведём пример гласных звуков для 3 языков (без дифтонгов):
Фонема | EN | RU | KO |
|---|---|---|---|
a | ✔️ | ||
e | ✔️ | ✔️ | |
i | ✔️ | ✔️ | ✔️ |
o | ✔️ | ✔️ | |
u | ✔️ | ✔️ | |
æ | ✔️ | ✔️ | |
ɐ | ✔️ | ✔️ | ✔️ |
ɑ | ✔️ | ||
ɒ | ✔️ | ||
ə | ✔️ | ✔️ | |
ɛ | ✔️ | ✔️ | ✔️ |
ɨ | ✔️ | ✔️ | |
ɪ | ✔️ | ✔️ | |
ɵ | ✔️ | ||
ʉ | ✔️ | ✔️ | |
ʊ | ✔️ | ✔️ | |
ʌ | ✔️ |
А вот как эти звуки встречаются в русском языке:
Фонема | Слово | Транскрипция |
|---|---|---|
a | пало | p a ɫ ə |
e | легенда | ʎ ɪ ɟ e n̪ d̪ ə |
i | завидная | z̪ ɐ vʲ i d̪ n̪ ə j ə |
o | похожа | p ɐ x o ʐ ə |
u | вернут | vʲ ɪ r n̪ u t̪ |
æ | нянчить | ɲ æ ɲ tɕ ɪ tʲ |
ɐ | подожду | p ə d̪ ɐ ʐ d̪ u |
ə | независимо | ɲ ɪ z̪ ɐ vʲ i sʲ ɪ m ə |
ɛ | концерты | k ɐ n̪ t̪s̪ ɛ r t̪ ɨ |
ɨ | заслуживают | z̪ ɐ s̪ ɫ u ʐ ɨ v ə j ʊ t̪ |
ɪ | душник | d̪ ʊ ʂ ɲ ɪ k |
ɵ | доберётся | d̪ ə bʲ ɪ rʲ ɵ t̪ s̪ ː ə |
ʉ | выключилась | v ɨ c ʎ ʉ tɕ ɪ ɫ ə sʲ |
ʊ | спокойную | s̪ p ɐ k o j n̪ ʊ j ʊ |
Итак, со "знаками" мы разобрались. Теперь нужно что-то сделать с голосами и криком. С криком проще — нужный в игре крик можно просто записать. То есть можно записать "спокойную" и "кричащую" (возбуждённую) версию голосов. Из этого, в принципе, даже можно сделать синтез на русском языке. Но как сделать синтез на всех языках?
Тут, глобально мы перепробовали очень много всего, но можно глобально выделить три работающих подхода:
Подход | Плюсы и минусы | Итог |
Генерация крика на основе формант | Плюс — прямой параметрический контроль за интенсивностью крика. Минус — работает только для очень чистых и многочисленных данных профессионального диктора. | В нужной нам постановке задачи не работает |
Генерализация на иностранные языки через transfer learning | Плюс — генерализация происходит прямо внутри итоговой модели. Минус — не хватает capacity модели. Или надо тренировать много биязычных моделей и добавлять больше данных, или увеличивать capacity модели. Всё это нежелательно для продукта (клиент нерезиновый). | Слишком сильный акцент в единой модели |
Генерализация на иностранные языки через генерацию данных | Плюс — в продукт идёт компактная маленькая модель. Можно грамотно сбалансировать данные. Минус — нужна модель-донор для генерации данных. | Выбранный нами подход |
Изначально мы проделали большое количество экспериментов по генерации крика на основе формант. На чистых идеальных данных на одном языке (русском) — метод интересный и перспективный. Но когда мы стали пытаться накрутить наши данные на другие языки — метод перестал работать. Судя по проведённым экспериментам метод рабочий, если вы условно делаете Алису и не ограничены в записях, бюджете и количестве аудио.
Первую более-менее рабочую версию мы сделали на основе transfer learning, то есть когда мы обучали модели на публичных данных, и потом дообучали на наших голосах. Но тут проблема основная в том, что с учётом требования по крику, допустим два языка у нас получалось поселить в модели с нужным качеством. А дальше — уже модель начинала плыть, то есть данные шумноваты, их слишком мало. Оно говорит чётко, произносит все тоны и фонемы, но акцент слишком сильный. Носители языка совсем не одобряют, даже с учетом того, что ты управляешь самолётом.
В итоге мы остановились на том, что использовали нашу собственную систему синтеза и переозвучки, чтобы сгенерировать синтетический датасет для обучения итоговой модели. В итоге на основе уже синтетического датасета, сделанного из записей "профессиональных программистов", мы сгенерировали продуктовую модель на других языках.
Вместо вывода
Судьями нашей работы и работы разработчиков будут только игроки и время. В любом случае у нас на рынке есть не так много живых нетривиальных игровых проектов и поучаствовать в разработке продолжения легендарной игры — для нас большая удача и честь. Остаётся выразить надежду, что дальше будет только больше нетривиальных проектов и что кризис рано или поздно закончится.
