Детектирование голосовой активности
Streaming Sound Wave и его производные типы, такие как Capturable Sound Wave, поддерживают Voice Activity Detection (VAD). VAD фильтрует входящие аудиоданные, заполняя внутренний буфер только при обнаружении голоса.
Плагин предлагает две реализации VAD:
- Default VAD
- Silero VAD
Реализация по умолчанию использует libfvad — легковесную библиотеку детектирования голосовой активности, которая эффективно работает на всех платформах и версиях движка, поддерживаемых Runtime Audio Importer.
Доступная как расширение, Silero VAD — это нейросетевой детектор голосовой активности, обеспечивающий более высокую точность, особенно в шумных средах. Он использует машинное обучение для более надежного разделения речи и фонового шума.
Базовое использование
Чтобы включить VAD после создания звуковой волны, используйте функцию ToggleVAD
:
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
После включения VAD вы можете сбросить его в любое время:
- Blueprint
- C++
// Reset the VAD
StreamingSoundWave->ResetVAD();
Настройки VAD по умолчанию
При использовании стандартного VAD-провайдера вы можете регулировать его агрессивность, изменяя режим VAD:
- Blueprint
- C++
// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Параметр mode контролирует агрессивность фильтрации аудио с помощью VAD. Более высокие значения являются более строгими, что означает меньшую вероятность ложных срабатываний, но возможное пропускание некоторых фрагментов речи.
Провайдеры VAD
После активации VAD с помощью функции ToggleVAD
вы можете выбрать между различными провайдерами Voice Activity Detection в соответствии с вашими потребностями. Провайдер по умолчанию встроен, а дополнительные провайдеры, такие как Silero VAD, доступны через плагины расширений.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Make sure to call ToggleVAD(true) before setting the provider
// Set the VAD provider to Silero VAD
StreamingSoundWave->SetVADProvider(URuntimeSileroVADProvider::StaticClass());
Расширение Silero VAD
Silero VAD обеспечивает более точное обнаружение речи с использованием нейронных сетей. Для его использования:
- Убедитесь, что плагин Runtime Audio Importer уже установлен в вашем проекте
- Скачайте плагин расширения Silero VAD с Google Drive
- Распакуйте папку из загруженного архива в папку
Plugins
вашего проекта (создайте её, если она не существует) - Пересоберите проект (это расширение требует C++ проект)
- Стандартный VAD работает со всеми версиями движка, поддерживаемыми Runtime Audio Importer (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 и 5.6)
- Silero VAD поддерживает Unreal Engine 4.27 и все версии UE5 (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 и 5.6)
- Silero VAD в настоящее время доступен только для Windows
- Это расширение предоставляется в виде исходного кода и требует C++ проекта для использования
- Для получения дополнительной информации о ручной сборке плагинов см. учебник по сборке плагинов
После установки вы можете выбрать его в качестве провайдера VAD, используя функцию SetVADProvider
с классом провайдера Silero.
Обнаружение начала и конца речи
Voice Activity Detection (VAD) не только обнаруживает наличие речи, но также позволяет определять начало и окончание речевой активности. Это полезно для запуска событий при начале или завершении речи во время воспроизведения или записи.
Вы можете настроить чувствительность обнаружения начала и конца речи, регулируя параметры, такие как минимальная продолжительность речи и продолжительность тишины. Эти параметры помогают точно настроить обнаружение, чтобы избежать ложных срабатываний, например, на короткие шумы или слишком короткие паузы в речи.
Минимальная продолжительность речи
Параметр Minimum Speech Duration устанавливает минимальное количество непрерывной речевой активности, необходимое для запуска события начала речи. Это помогает отфильтровать кратковременные шумы, которые не должны считаться речью, чтобы гарантировать, что распознается только устойчивая речевая активность. Значение по умолчанию для Minimum Speech Duration составляет 300 миллисекунд.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the minimum speech duration
StreamingSoundWave->SetMinimumSpeechDuration(200);
Длительность тишины
Параметр Silence Duration определяет продолжительность тишины, необходимую для срабатывания события окончания речи. Это предотвращает преждевременное завершение детекции речи во время естественных пауз между словами или предложениями. Значение по умолчанию для Silence Duration составляет 500 миллисекунд.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the silence duration
StreamingSoundWave->SetSilenceDuration(700);
Привязка к делегатам речи
Вы можете привязываться к конкретным делегатам при начале или завершении речи. Это полезно для активации пользователь ского поведения на основе речевой активности, например, запуска или остановки распознавания текста или регулировки громкости других аудиоисточников.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Bind to the OnSpeechStartedNative delegate
StreamingSoundWave->OnSpeechStartedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech starts
});
// Bind to the OnSpeechEndedNative delegate
StreamingSoundWave->OnSpeechEndedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech ends
});
Сравнение провайдеров VAD
- Default VAD
- Silero VAD
Default VAD (libfvad)
Преимущества:
- Легковесный и эффективный
- Работает на всех платформах
- Минимальное использование ресурсов
- Подходит для мобильных и маломощных устройств
Лучше всего подходит для:
- Простого детектирования голоса в тихих условиях
- Мобильных приложений
- Проектов, где приоритетом является производительность
- Когда требуется универсальная поддержка платформ
Silero VAD
Преимущества:
- Более высокая точность детектирования голоса
- Лучшая устойчивость к шуму в сложн ых условиях
- Более стабильные результаты для разных голосов
- Расширенные настройки для точного контроля
Лучше всего подходит для:
- Приложений, требующих точного детектирования голоса
- Условий с фоновым шумом
- Систем распознавания голоса
- Профессиональных аудиоприложений
Silero VAD может требовать больше вычислительных ресурсов, чем Default VAD.