Detección de Actividad de Voz
Streaming Sound Wave, junto con sus tipos derivados como Capturable Sound Wave, soporta Detección de Actividad de Voz (VAD). VAD filtra los datos de audio entrantes para llenar el buffer interno solo cuando se detecta voz.
El plugin ofrece dos implementaciones de VAD:
- Default VAD
- Silero VAD
La implementación predeterminada utiliza libfvad, una biblioteca ligera de detección de actividad de voz que funciona eficientemente en todas las plataformas y versiones del motor soportadas por Runtime Audio Importer.
Disponible como un plugin de extensión, Silero VAD es un detector de actividad de voz basado en redes neuronales que ofrece mayor precisión, especialmente en entornos ruidosos. Utiliza aprendizaje automático para distinguir de manera más confiable el habla del ruido de fondo.
Uso Básico
Para habilitar VAD después de crear una onda de sonido, utiliza la función ToggleVAD
:
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
Después de activar el VAD, puedes reiniciarlo en cualquier momento:
- Blueprint
- C++
// Reset the VAD
StreamingSoundWave->ResetVAD();
Configuración predeterminada de VAD
Cuando se utiliza el proveedor VAD predeterminado, puedes ajustar su nivel de agresividad cambiando el modo VAD:
- Blueprint
- C++
// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
El parámetro mode controla cuán agresivamente el VAD filtra el audio. Valores más altos son más restrictivos, lo que significa que es menos probable que reporten falsos positivos pero podrían omitir parte del habla.
Proveedores de VAD
Después de activar el VAD con la función ToggleVAD
, puedes elegir entre diferentes proveedores de detección de actividad vocal (VAD) según tus necesidades. El proveedor predeterminado es el integrado, mientras que proveedores adicionales como Silero VAD están disponibles mediante plugins de extensión.
- 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());
Extensión Silero VAD
Silero VAD proporciona una detección de voz más precisa mediante redes neuronales. Para usarlo:
- Asegúrate de que el plugin Runtime Audio Importer ya esté instalado en tu proyecto
- Descarga la extensión Silero VAD desde Google Drive
- Extrae la carpeta del archivo descargado en la carpeta
Plugins
de tu proyecto (crea esta carpeta si no existe) - Recompila tu proyecto (esta extensión requiere un proyecto C++)
- El VAD predeterminado funciona con todas las versiones del motor compatibles con Runtime Audio Importer (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, y 5.6)
- Silero VAD soporta Unreal Engine 4.27 y todas las versiones de UE5 (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, y 5.6)
- Silero VAD está disponible actualmente solo para Windows
- Esta extensión se proporciona como código fuente y requiere un proyecto C++ para su uso
- Para más información sobre cómo construir plugins manualmente, consulta el tutorial Building Plugins
Una vez instalado, puedes seleccionarlo como proveedor VAD usando la función SetVADProvider
con el proveedor de clase Silero.
Detección de inicio y fin de voz
La detección de actividad vocal (VAD) no solo detecta la presencia de voz, sino que también permite detectar el inicio y el final de la actividad vocal. Esto es útil para activar eventos cuando comienza o termina el habla durante la reproducción o captura.
Puedes personalizar la sensibilidad de la detección de inicio y fin de voz ajustando parámetros como la duración mínima del habla y la duración del silencio. Estos parámetros ayudan a afinar la detección para evitar falsos positivos, como captar ruidos breves o pausas demasiado cortas entre el habla.
Duración mínima del habla
El parámetro Minimum Speech Duration establece la cantidad mínima de actividad vocal continua requerida para activar un evento de inicio de habla. Esto ayuda a filtrar ruidos breves que no deberían considerarse voz, para asegurar que solo se reconozca la actividad vocal sostenida. El valor predeterminado para Minimum Speech Duration es 300 milisegundos.
- 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);
Duración del Silencio
El parámetro Duración del Silencio establece el tiempo de silencio requerido para activar un evento de finalización de habla. Esto evita que la detección de habla termine prematuramente durante pausas naturales entre palabras o frases. El valor predeterminado para Duración del Silencio es 500 milisegundos.
- 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);
Vinculación a Delegados de Voz
Puedes vincular a delegados específicos cuando el habla comienza o termina. Esto es útil para activar comportamientos personalizados basados en la actividad de voz, como iniciar o detener el reconocimiento de texto, o ajustar el volumen de otras fuentes de audio.
- 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
});
Comparación de Proveedores de VAD
- VAD Predeterminado
- Silero VAD
VAD Predeterminado (libfvad)
Ventajas:
- Ligero y eficiente
- Funciona en todas las plataformas
- Uso mínimo de recursos
- Adecuado para dispositivos móviles y de baja potencia
Ideal para:
- Detección simple de voz en entornos silenciosos
- Aplicaciones móviles
- Proyectos donde el rendimiento es prioritario
- Cuando se requiere soporte multiplataforma universal
Silero VAD
Ventajas:
- Mayor precisión en la detección de voz
- Tolerancia superior al ruido en entornos desafiantes
- Resultados más consistentes entre diferentes hablantes
- Opciones de configuración avanzadas para control preciso
Ideal para:
- Aplicaciones que requieren detección de voz precisa
- Entornos con ruido de fondo
- Sistemas de reconocimiento de voz
- Aplicaciones de audio profesionales
Silero VAD puede requerir más recursos computacionales que el VAD predeterminado.