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.
Checking the stable version of the documentation...
Перетворення тексту на мовлення
Основне використання
Базове використання синтезу мовлення з тексту передбачає виконання таких одноразових кроків:
Увімкніть TTS у редакторі Godot для вашого проекту
Надішліть запит системі на отримання списку доступних голосів
Збережіть ідентифікатор голосу, який ви хочете використовувати
За замовчуванням налаштування перетворення тексту в мовлення на рівні проекту Godot вимкнено, щоб уникнути непотрібних витрат. Щоб увімкнути його:
Перейдіть до Проект > Налаштування проекту
Переконайтеся, що перемикач Додаткові налаштування увімкнено
Натисніть Аудіо > Загальні
Переконайтеся, що опція Створення мовлення позначена
Перезапустіть Godot, якщо буде запропоновано це зробити.
Синтез мовлення використовує певний голос. Залежно від системи користувача, у них може бути встановлено кілька голосів. Отримавши голосовий ідентифікатор, ви можете використовувати його, щоб промовити текст:
# 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)
// One-time steps.
// Pick a voice. Here, we arbitrarily pick the first English voice.
string[] voices = DisplayServer.TtsGetVoicesForLanguage("en");
string voiceId = voices[0];
// Say "Hello, world!".
DisplayServer.TtsSpeak("Hello, world!", voiceId);
// 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.
string longMessage = "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.TtsSpeak(longMessage, voiceId);
// Immediately stop the current text mid-sentence and say goodbye instead.
DisplayServer.TtsStop();
DisplayServer.TtsSpeak("Goodbye!", voiceId);
Вимоги до функціональності
Godot включає функцію перетворення тексту в мовлення. Ви можете знайти їх у класі DisplayServer.
Godot залежить від системних бібліотек для функціональності перетворення тексту в мовлення. Ці бібліотеки встановлені за замовчуванням у Windows, macOS, Web, Android та iOS, але не у всіх дистрибутивах Linux. Якщо вони відсутні, функція перетворення тексту в мовлення не працюватиме. Зокрема, метод tts_get_voices() поверне порожній список, що вказує на відсутність доступних голосів.
Як користувачі Godot у Linux, так і кінцеві користувачі Linux, які запускають ігри Godot, повинні переконатися, що їхня система містить системні бібліотеки для роботи перетворення тексту в мовлення. Щоб визначити, які бібліотеки потрібно інсталювати, перегляньте таблицю нижче або документацію вашого власного дистрибутива.
Команди для різних дистрибутивів
arch Linux |
pacman -S speech-dispatcher festival espeakup
|
Вирішення проблем
Якщо ви отримуєте помилку Invalid get index '0' (on base: 'PackedStringArray'). для рядка var voice_id = voices[0], перевірте, чи є елементи в voices. Якщо ні:
Усі користувачі: переконайтеся, що ви ввімкнули Текст у мовлення в налаштуваннях проекту
Користувачі Linux: переконайтеся, що ви встановили системні бібліотеки для синтезу мовлення
Кращі практики
Найкраща практика для перетворення тексту в мовлення, з точки зору ідеального досвіду програвання для незрячих гравців, полягає в тому, щоб надсилати вихідні дані на зчитувач екрана програвача. Це зберігає вибір мови, швидкості, тону тощо, які встановив користувач, а також дозволяє розширені функції, як-от дозвіл гравцям прокручувати текст назад і вперед. Наразі Godot не забезпечує такого рівня інтеграції.
З поточним станом API синтезу мовлення Godot передові методи включають:
Розробляйте гру з увімкненим синтезом мовлення та переконайтеся, що все звучить правильно
Дозвольте гравцям контролювати, який голос використовувати, і зберігати/зберігаються цей вибір протягом ігрових сеансів
Дозвольте гравцям контролювати швидкість мовлення та зберігати/зберігаються цей вибір протягом ігрових сеансів
Це забезпечує вашим незрячим гравцям найбільшу гнучкість і комфорт, доступні, коли вони не використовують програму зчитування з екрана, і мінімізує ймовірність розчарування та відчуження їх.
Застереження та інша інформація
Очікуйте затримки, коли ви викликаєте tts_speak і tts_stop. Фактичний час затримки залежить як від ОС, так і від технічних характеристик вашого комп’ютера. Це особливо важливо для Android і Інтернету, де деякі голоси залежать від веб-служб, а фактичний час відтворення залежить від завантаження сервера, затримки мережі та інших факторів.
Текст не англійською мовою працює, якщо встановлено та використовуються правильні голоси. У Windows ви можете ознайомитися з інструкціями в цій статті, щоб увімкнути додаткові мовні голоси в Windows.
Символи, що не належать до ASCII, наприклад умляут, вимовляються правильно, якщо вибрати правильний голос.
Незрячі гравці використовують кілька програм зчитування з екрана, зокрема JAWS, NVDA, VoiceOver, диктора тощо.
API перетворення тексту в мовлення Windows зазвичай працюють краще, ніж їхні еквіваленти в інших системах (наприклад, tts_stop, за яким слідує tts_speak, негайно озвучує нове повідомлення).