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

Захватываемая звуковая волна

Обзор

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

подсказка

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

примечание

Захватываемая звуковая волна автоматически запрашивает разрешения на использование микрофона на iOS и Android при начале захвата.

Базовое использование

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

Сначала необходимо создать захватываемую звуковую волну.

Нода Create Capturable Sound Wave

warning

Вам следует рассматривать захватываемую звуковую волну как сильную ссылку (strong reference), чтобы предотвратить преждевременное уничтожение (например, присвоив её отдельной переменной в Blueprints или используя UPROPERTY() в C++).

Получение доступных входных устройств

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

Нода Get Available Audio Input Devices

Запуск и остановка захвата

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

Start and Stop capture nodes

к сведению

DeviceId - это индекс устройства в массиве доступных устройств, полученный на предыдущем шаге.

Проверка статуса захвата

Вы можете проверить, происходит ли в данный момент захват аудио звуковой волной:

Is Capturing node

Расширенные возможности

Отключение и включение захвата звука

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

Toggle Mute nodes

Оптимизация производительности

Это полезно при частом переключении захвата, так как запуск записи через StartCapture может вызывать незначительные подвисания на стороне движка. Сначала следует начать сам захват, и только затем отключать/включать звук.

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

Полный пример

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

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