Текст в речь

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, но не во всех дистрибутивах Linux. Если они отсутствуют, преобразование текста в речь работать не будет. В частности, метод tts_get_voices() вернет пустой список, что означает отсутствие доступных голосов.

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

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

Arch Linux

pacman -S speech-dispatcher festival espeakup

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

Если вы получили ошибку Invalid get index '0' (on base: 'PackedStringArray'). для строки var voice_id = voices[0], проверьте, есть ли элементы в voices. Если нет:

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

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

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

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

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

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

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

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

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

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

  • При вызове tts_speak и tts_stop возможны задержки. Фактическое время задержки зависит как от ОС, так и от характеристик вашего устройства. Это особенно критично для Android и веб-приложений, где некоторые голоса зависят от веб-сервисов, а фактическое время воспроизведения зависит от нагрузки на сервер, задержки в сети и других факторов.

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

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

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

  • API-интерфейсы Windows для преобразования текста в речь обычно работают лучше, чем их аналоги в других системах (например, tts_stop, а затем tts_speak немедленно озвучивают новое сообщение).