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

Capturable Sound Wave

Обзор

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

подсказка

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

примечание

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

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

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

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

Узел Create Capturable Sound Wave

warning

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

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

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

Get Available Audio Input Devices node

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

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

Start and Stop capture nodes

к сведению

DeviceId — это индекс устройства в массиве доступных устройств, полученном на предыдущем шаге. Чтобы использовать устройство аудиоввода по умолчанию, передайте -1 в Blueprints или Audio::DefaultDeviceIndex в C++ (что равно INDEX_NONE), так как иногда нулевой индекс не является устройством по умолчанию.

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

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

Is Capturing node

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

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

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

Toggle Mute nodes

Различия версий движка

UE 5.3 и новее: Запуск и остановка захвата больше не вызывают просадок производительности, поэтому ToggleMute имеет тот же эффект, что и StartCapture/StopCapture. Возможно, вам вообще не понадобится использовать ToggleMute для оптимизации производительности.

UE 5.2 и более ранние: Запуск захвата через StartCapture может вызывать незначительные просадки. В этих версиях рекомендуется использовать ToggleMute для частого включения и выключения захвата. Сначала следует запустить сам захват в менее критичное время (например, на экране загрузки), а затем использовать отключение/включение звука для управления моментом фактического накопления аудиоданных.

Оптимизация производительности для более ранних версий движка

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

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

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

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