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

Потоковая звуковая волна

Для обнаружения голосовой активности (VAD), обратитесь к этой странице.

Потоковая звуковая волна - это тип импортированной звуковой волны, которая поддерживает динамическое добавление аудиоданных, даже во время воспроизведения. Она предлагает ту же функциональность, что и импортированная звуковая волна, например, перемотка, и может быть использована в SoundCues и т.д.

Создание потоковой звуковой волны

Сначала следует создать потоковую звуковую волну. Обратите внимание, что вы должны рассматривать это как сильную ссылку, чтобы предотвратить преждевременное разрушение (например, путем назначения ее отдельной переменной в Blueprints или использованием UPROPERTY() в C++).

Создание узла потоковой звуковой волны

Воспроизведение звуковой волны

Затем можно воспроизвести эту звуковую волну. Однако это необязательно делать сейчас, вы можете начать воспроизведение звуковой волны позже.

Различные примеры воспроизведения звуковой волны

Предварительное выделение аудиоданных

При желании, вы можете предварительно выделить аудиоданные (байты), чтобы избежать перераспределения всего PCM буфера каждый раз при добавлении новых аудиоданных.

Узел предварительного выделения аудиоданных

Добавление аудиоданных

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

Узел добавления аудиоданных

Избежание ускоренного воспроизведения аудио

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

Пример использования

В итоге, ваша реализация может выглядеть следующим образом:

Пример использования потока звуковой волны

О заполнении состояния аудио

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

Делегат On Populate Audio State

Работа с PCM данными

Для получения PCM данных в реальном времени во время воспроизведения, см. PCM Data Handling.