Озвучка текста в Godot: реплики и речь во время игры
Игры на Godot часто делает один человек или маленькая команда, и озвучка — то, что редко влезает в бюджет. Синтез речи даёт каждой реплике голос в день, когда она написана: для прототипов, временных диалогов, обучения и для игр, где синтезированный голос оставлен намеренно.
Бесплатный движок SuperClonica озвучивает текст офлайн на обычном процессоре. В этом руководстве — два способа использовать его с Godot, готовые WAV-файлы и речь во время игры из GDScript, и какие голоса можно выпускать в релиз.
Два способа озвучить игру на Godot
На компьютере игрока сервер синтеза не запустится, поэтому одиночная игра в релизе должна включать готовые файлы.
- Готовые файлы: озвучьте все реплики во время разработки и храните WAV в проекте. Они экспортируются вместе с игрой, как любой другой звук.
- Речь во время игры: игра отправляет текст на сервер SuperClonica и проигрывает ответ. Подходит для инструментов редактора, прототипов и онлайн-игр со своим сервером.
- В обоих случаях озвучка работает на обычном процессоре, без платы за символы.
- Модель говорит на 31 языке; китайский пока не поддерживается.
Подберите голоса бесплатно онлайн
На странице любого голоса впишите реплику вашего персонажа, от 30 до 100 символов, выберите язык и нажмите «Озвучить». Через несколько секунд вы услышите, подходит ли голос, без регистрации.
Озвучьте диалоги заранее
Одинаковые текст, голос и seed всегда дают одинаковый звук, поэтому переозвучивайте только изменённые реплики и храните в репозитории скрипт, а не звук.
- Установите движок: python -m pip install superclonica-cpu.
- Держите реплики в таблице: id, язык и текст.
- Короткий скрипт проходит по ней: superclonica --text "Добро пожаловать в деревню!" --voice npc.json --lang ru --output voice/npc_greeting_01.wav.
- Godot сам импортирует новые WAV-файлы проекта; проигрывайте их через AudioStreamPlayer.
Речь во время игры из GDScript
Запустите сервер на любом процессоре: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. В Godot 4.4 и новее встроенный узел HTTPRequest и AudioStreamWAV.load_from_buffer проигрывают ответ без сохранения файла: var http := HTTPRequest.new(); add_child(http); http.request_completed.connect(_on_voice); http.request("http://localhost:8000/synthesize", ["Content-Type: application/json"], HTTPClient.METHOD_POST, JSON.stringify({"text": "С возвращением!", "voice": "F1", "lang": "ru"})) — и в том же скрипте: func _on_voice(result, code, headers, body): $Voice.stream = AudioStreamWAV.load_from_buffer(body); $Voice.play(). Короткая фраза занимает около полсекунды на процессоре; кешируйте потоки повторяющихся реплик. Никогда не кладите ключ API в экспортированную игру, откуда игроки могут его достать: пусть к серверу синтеза обращается ваш игровой сервер.
Голоса, которые можно выпускать
Для прототипов подойдёт любой голос каталога. Для вышедшей игры используйте голос, на который у вас есть права: десять стандартных голосов модели, M1–M5 и F1–F5, ваш собственный голос, обученный в студии SuperClonica по чистой записи на 5–10 секунд от актёра, который дал согласие, на компьютере с видеокартой NVIDIA, или голос, заказанный на бирже. Фанатские голоса персонажей — для пародий и фанатских игр, а не для коммерческих.