Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Текст в речь

Basic Usage (Базовое использование)

Базовое использование преобразования текста в речь включает в себя следующие одноразовые шаги:

  • Включите TTS в редакторе Godot для вашего проекта

  • Запросите у системы список доступных голосов

  • Сохраните ID голоса, который вы хотите использовать

По умолчанию настройка Godot на уровне проекта для преобразования текста в речь отключена, чтобы избежать лишних затрат. Чтобы включить её:

  • Перейдите в Project > Project Settings

  • Убедитесь, что переключатель Advanced Settings включен

  • Нажмите Audio > General

  • Убедитесь, что опция Text to Speech отмечена

  • Перезапустите Godot, если будет предложено сделать это.

Для преобразования текста в речь используется определённый голос. В зависимости от системы пользователя, у него может быть установлено несколько голосов. Получив ID голоса, вы можете использовать его для озвучивания текста:

# One-time steps.
# Pick a voice. Here, we arbitrarily pick the first English voice.
var voices = DisplayServer.tts_get_voices_for_language("en")
var voice_id = voices[0]

# Say "Hello, world!".
DisplayServer.tts_speak("Hello, world!", voice_id)

# Say a longer sentence, and then interrupt it.
# Note that this method is asynchronous: execution proceeds to the next line immediately,
# before the voice finishes speaking.
var long_message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur"
DisplayServer.tts_speak(long_message, voice_id)

# Immediately stop the current text mid-sentence and say goodbye instead.
DisplayServer.tts_stop()
DisplayServer.tts_speak("Goodbye!", voice_id)

Требования к функциональности

Godot включает в себя функции преобразования текста в речь. Их можно найти в DisplayServer class.

Godot использует системные библиотеки для реализации функции преобразования текста в речь. Эти библиотеки установлены по умолчанию в Windows, macOS, Web, Android и iOS, но не во всех дистрибутивах Linux. Если их нет, функция преобразования текста в речь работать не будет. В частности, метод tts_get_voices() вернет пустой список, что означает, что нет пригодных для использования голосов.

Как пользователям Godot в Linux, так и конечным пользователям Linux, запускающим игры Godot, необходимо убедиться, что их система включает системные библиотеки для работы функции преобразования текста в речь. Чтобы определить, какие библиотеки необходимо установить, обратитесь к таблице ниже или документации вашего дистрибутива.

Оne-liners, специфичные для дистрибутива

Arch Linux

pacman -S speech-dispatcher festival espeakup

Устранение неполадок

If you get the error Invalid get index '0' (on base: 'PackedStringArray'). for the line var voice_id = voices[0], check if there are any items in voices. If not:

  • Всем пользователям: убедитесь, что в настройках проекта включена функция Text to Speech (Преобразование текста в речь)

  • Пользователи Linux: убедитесь, что у вас установлены системные библиотеки для преобразования текста в речь

Лучшие практики

Оптимальным вариантом преобразования текста в речь с точки зрения идеального игрового опыта для слепых игроков является отправка вывода в программу экранного доступа. Это сохраняет выбранный пользователем язык, скорость, тон и т. д., а также позволяет использовать расширенные функции, например, прокручивать текст вперёд и назад. На данный момент Godot не обеспечивает такой уровень интеграции.

С учетом текущего состояния API Godot для преобразования текста в речь передовые практики включают в себя:

  • Разработайте игру с включенным преобразованием текста в речь и убедитесь, что все звучит правильно

  • Разрешить игрокам выбирать, какой голос использовать, и сохранять/продолжать этот выбор между игровыми сеансами

  • Разрешить игрокам контролировать скорость речи и сохранять/продолжать этот выбор между игровыми сеансами

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

Предостережения и Другая информация

  • Expect delays when you call tts_speak() and tts_stop(). The actual delay time varies depending on both the OS and on your machine's specifications. This is especially critical on Android and Web, where some of the voices depend on web services, and the actual time to playback depends on server load, network latency, and other factors.

  • Текст на других языках, кроме английского, будет работать, если установлены и используются соответствующие голосовые подсистемы. В Windows инструкции по включению голосовых подсистем на других языках см. в этой статье.

  • Символы, не входящие в кодировку ASCII, такие как umlaut, произносятся правильно, если выбран правильный голос.

  • Слепые игроки используют ряд программ чтения с экрана, включая JAWS, NVDA, VoiceOver, Narrator и другие.

  • Windows text-to-speech APIs generally perform better than their equivalents on other systems (e.g. tts_stop() followed by tts_speak() immediately speaks the new message).