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

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

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

В редакторе

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

Во время выполнения

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

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

Синтез речи

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

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

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

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

Обычный Text-to-Speech

По имени

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

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

По объекту

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

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

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

Потоковый синтез речи (Streaming Text-to-Speech)

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

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

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

Потоковый синтез по имени (Streaming By Name)

Функция 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

При отмене синтеза:

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

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

Выбор голоса

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

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