Перейти к основному содержимому

Как использовать плагин

Плагин Runtime Text To Speech синтезирует текст в речь с использованием загружаемых голосовых моделей. Этими моделями управляют в настройках плагина внутри редактора, их загружают и упаковывают для использования во время выполнения. Следуйте приведенным ниже шагам, чтобы начать работу.

Сторона редактора

Загрузите подходящие голосовые модели для вашего проекта, как описано здесь. Вы можете загружать несколько голосовых моделей одновременно.

Сторона выполнения

Создайте синтезатор с помощью функции CreateRuntimeTextToSpeech. Убедитесь, что вы сохраняете ссылку на него (например, как отдельную переменную в Blueprints или UPROPERTY в C++), чтобы предотвратить его сборку мусора.

Пример создания синтезатора Runtime Text To Speech в Blueprints

Синтез речи

Плагин предлагает два режима синтеза речи из текста:

  1. Обычный синтез речи: Синтезирует весь текст и возвращает полное аудио по завершении
  2. Потоковый синтез речи: Предоставляет аудиофрагменты по мере их генерации, позволяя обрабатывать их в реальном времени

Каждый режим поддерживает два метода выбора голосовых моделей:

  • По имени: Выбор голосовой модели по её имени (рекомендуется для UE 5.4+)
  • По объекту: Выбор голосовой модели через прямую ссылку (рекомендуется для UE 5.3 и более ранних версий)

Обычный синтез речи

По имени

Функция Text To Speech (By Name) более удобна в Blueprints начиная с UE 5.4. Она позволяет выбирать голосовые модели из выпадающего списка загруженных моделей. В версиях UE ниже 5.3 этот выпадающий список не отображается, поэтому если вы используете более старую версию, вам нужно будет вручную перебирать массив голосовых моделей, возвращаемый функцией GetDownloadedVoiceModels, чтобы выбрать нужную.

Пример использования Text To Speech by Name в Blueprints

По Объекту

Функция Text To Speech (By Object) работает во всех версиях Unreal Engine, но представляет голосовые модели в виде выпадающего списка ссылок на ассеты, что менее интуитивно. Этот метод подходит для UE 5.3 и более ранних версий, или если ваш проект требует прямую ссылку на ассет голосовой модели по какой-либо причине.

Пример использования Text To Speech по Объекту в Blueprints

Если вы скачали модели, но не видите их, откройте выпадающий список Voice Model, нажмите на настройки (иконка шестеренки) и включите как Show Plugin Content, так и Show Engine Content, чтобы модели стали видны.

Потоковое преобразование текста в речь

Для длинных текстов или когда вы хотите обрабатывать аудиоданные в реальном времени по мере их генерации, вы можете использовать потоковые версии функций Text-to-Speech:

  • Streaming Text To Speech (By Name) (StreamingTextToSpeechByName в C++)
  • Streaming Text To Speech (By Object) (StreamingTextToSpeechByObject в C++)

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

Потоковое преобразование по имени

Функция Streaming Text To Speech (By Name) работает аналогично обычной версии, но предоставляет аудио частями через делегат On Speech Chunk.

Пример использования Streaming Text To Speech by Name в Blueprints

Стриминг По Объекту

Функция Streaming Text To Speech (By Object) предоставляет ту же стриминговую функциональность, но принимает ссылку на объект голосовой модели.

Пример использования Streaming Text To Speech by Object в Blueprints

Воспроизведение аудио

Для обычного (не потокового) преобразования текста в речь, делегат On Speech Result предоставляет синтезированное аудио в формате PCM с данными в формате float (в виде массива байтов в Blueprints или TArray<uint8> в C++), вместе с Sample Rate (частотой дискретизации) и Num Of Channels (количеством каналов).

Для воспроизведения рекомендуется использовать плагин Runtime Audio Importer для преобразования сырых аудиоданных в воспроизводимую звуковую волну.

Вот пример того, как могут выглядеть ноды Blueprint для синтеза текста и воспроизведения аудио (Копируемые ноды):

Отмена преобразования текста в речь

Вы можете отменить выполняющуюся операцию синтеза речи в любое время, вызвав функцию CancelSpeechSynthesis на вашем экземпляре синтезатора:

Отмена преобразования текста в речь в Blueprints

Когда синтез отменяется:

  • Процесс синтеза остановится как можно скорее
  • Все выполняемые обратные вызовы будут прерваны
  • Делегат завершения будет вызван с bSuccess = false и сообщением об ошибке, указывающим, что синтез был отменен
  • Все ресурсы, выделенные для синтеза, будут корректно очищены

Это особенно полезно для длинных текстов или когда необходимо прервать воспроизведение, чтобы начать новый синтез.

Выбор диктора

Обе функции Text To Speech принимают необязательный параметр ID диктора, который полезен при работе с голосовыми моделями, поддерживающими нескольких дикторов. Вы можете использовать функции GetSpeakerCountFromVoiceModel или GetSpeakerCountFromModelName, чтобы проверить, поддерживает ли выбранная вами голосовая модель нескольких дикторов. Если доступно несколько дикторов, просто укажите желаемый ID диктора при вызове функций Text To Speech. Некоторые голосовые модели предлагают большое разнообразие - например, English LibriTTS включает более 900 различных дикторов на выбор.

Плагин Runtime Audio Importer также предоставляет дополнительные функции, такие как экспорт аудиоданных в файл, передача их в SoundCue, MetaSound и многое другое. Для получения дополнительной информации ознакомьтесь с документацией Runtime Audio Importer.