РУКОВОДСТВО

Озвучка текста в Unity: реплики и речь во время игры

Игре на Unity нужны озвученные реплики задолго до того, как появятся актёры: для прототипов, временных диалогов, обучения и маленьких команд, которые никогда не пойдут в студию. Синтез речи даёт каждой реплике голос в день, когда она написана, и переозвучивает её за секунды, когда сценарий меняется.

Бесплатный движок SuperClonica озвучивает текст офлайн на обычном процессоре. В этом руководстве — два способа использовать его с Unity, готовые клипы и речь во время игры из C#, и какие голоса можно выпускать в релиз.

Два способа озвучить игру на Unity

На компьютере игрока сервер синтеза не запустится, поэтому одиночная игра в релизе должна включать готовые клипы.

  • Готовые клипы: озвучьте все реплики во время разработки и поставляйте WAV-файлы как обычные AudioClip. На компьютере игрока ничего лишнего не запускается.
  • Речь во время игры: игра отправляет текст на сервер SuperClonica и проигрывает ответ. Подходит для инструментов редактора, прототипов и онлайн-игр со своим сервером.
  • В обоих случаях озвучка работает на обычном процессоре, без платы за символы.
  • Модель говорит на 31 языке; китайский пока не поддерживается.

Подберите голоса бесплатно онлайн

На странице любого голоса впишите реплику вашего NPC, от 30 до 100 символов, выберите язык и нажмите «Озвучить». Через несколько секунд вы услышите, подходит ли голос персонажу, без регистрации.

Озвучьте диалоги заранее

Одинаковые текст, голос и seed всегда дают одинаковый звук, поэтому переозвучивайте только изменённые реплики и храните в репозитории скрипт, а не звук.

  • Установите движок: python -m pip install superclonica-cpu.
  • Держите реплики в таблице: id, язык и текст.
  • Короткий скрипт проходит по ней: superclonica --text "Добро пожаловать в деревню!" --voice npc.json --lang ru --output Assets/Audio/Lines/npc_greeting_01.wav.
  • Unity сам импортирует новые WAV-файлы в Assets; для коротких реплик используйте Decompress On Load, для длинного повествования — Streaming.

Речь во время игры из C#

Запустите сервер на любом процессоре: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. Затем вызывайте его встроенным UnityWebRequest, без пакетов: [Serializable] class Line { public string text; public string voice; public string lang; } — затем в корутине: var req = new UnityWebRequest("http://localhost:8000/synthesize", "POST"); req.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonUtility.ToJson(new Line { text = "С возвращением!", voice = "F1", lang = "ru" }))); req.downloadHandler = new DownloadHandlerAudioClip(req.url, AudioType.WAV); req.SetRequestHeader("Content-Type", "application/json"); yield return req.SendWebRequest(); source.PlayOneShot(DownloadHandlerAudioClip.GetContent(req)); Короткая фраза занимает около полсекунды на процессоре; кешируйте клипы повторяющихся реплик. Никогда не кладите ключ API в сборку игры, откуда игроки могут его достать: пусть к серверу синтеза обращается ваш игровой сервер.

Голоса, которые можно выпускать

Для прототипов подойдёт любой голос каталога. Для вышедшей игры используйте голос, на который у вас есть права: десять стандартных голосов модели, M1–M5 и F1–F5, ваш собственный голос, обученный в студии SuperClonica по чистой записи на 5–10 секунд от актёра, который дал согласие, на компьютере с видеокартой NVIDIA, или голос, заказанный на бирже. Фанатские голоса персонажей — для пародий и фанатских игр, а не для коммерческих.