Detecção de Atividade de Voz (VAD)
Streaming Sound Wave, juntamente com seus tipos derivados, como Capturable Sound Wave, suporta Detecção de Atividade de Voz (VAD). O VAD filtra os dados de áudio recebidos para preencher o buffer interno apenas quando a voz é detectada.
O plugin oferece duas implementações de VAD:
- Default VAD
- Silero VAD
A implementação padrão utiliza libfvad, uma biblioteca leve de detecção de atividade de voz que funciona de forma eficiente em todas as plataformas e versões do engine suportadas pelo Runtime Audio Importer.
Disponível como um plugin de extensão, o Silero VAD é um detector de atividade de voz baseado em rede neural que oferece maior precisão, especialmente em ambientes ruidosos. Ele utiliza aprendizado de máquina para distinguir de forma mais confiável a voz do ruído de fundo.
Uso Básico
Para ativar o VAD após criar uma sound wave, use a função ToggleVAD
:
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
Após ativar o VAD, você pode redefini-lo a qualquer momento:
- Blueprint
- C++
// Reset the VAD
StreamingSoundWave->ResetVAD();
Configurações Padrão do VAD
Ao usar o provedor VAD padrão, você pode ajustar sua agressividade alterando o modo VAD:
- Blueprint
- C++
// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
O parâmetro mode controla quão agressivamente o VAD filtra o áudio. Valores mais altos são mais restritivos, significando que têm menor probabilidade de reportar falsos positivos, mas podem perder alguns trechos de fala.
Provedores de VAD
Após ativar o VAD com a função ToggleVAD
, você pode escolher entre diferentes provedores de Voice Activity Detection para atender suas necessidades. O provedor padrão é interno, enquanto provedores adicionais como o Silero VAD estão disponíveis através de plugins de extensão.
- 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());
Extensão Silero VAD
O Silero VAD fornece detecção de fala mais precisa usando redes neurais. Para usá-lo:
- Certifique-se de que o plugin Runtime Audio Importer já está instalado no seu projeto
- Baixe a extensão Silero VAD do Google Drive
- Extraia a pasta do arquivo baixado para a pasta
Plugins
do seu projeto (crie esta pasta se não existir) - Recompile seu projeto (esta extensão requer um projeto C++)
- O VAD padrão funciona com todas as versões da engine suportadas pelo Runtime Audio Importer (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 e 5.6)
- O Silero VAD suporta Unreal Engine 4.27 e todas as versões UE5 (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 e 5.6)
- O Silero VAD está disponível atualmente apenas para Windows
- Esta extensão é fornecida como código-fonte e requer um projeto C++ para uso
- Para mais informações sobre como construir plugins manualmente, consulte o tutorial Building Plugins
Uma vez instalado, você pode selecioná-lo como seu provedor VAD usando a função SetVADProvider
com a classe Silero como provedor.
Detecção de início e fim de fala
O Voice Activity Detection (VAD) não apenas detecta a presença de fala, mas também permite detectar o início e o fim da atividade de fala. Isso é útil para acionar eventos quando a fala começa ou termina durante a reprodução ou captura.
Você pode personalizar a sensibilidade da detecção de início e fim de fala ajustando parâmetros como a duração mínima da fala e a duração do silêncio. Esses parâmetros ajudam a afinar a detecção para evitar falsos positivos, como capturar ruídos breves ou pausas muito curtas entre falas.
Duração Mínima da Fala
O parâmetro Duração Mínima da Fala define a quantidade mínima de atividade de voz contínua necessária para acionar um evento de início de fala. Isso ajuda a filtrar ruídos breves que não devem ser considerados como fala, garantindo que apenas atividade de voz sustentada seja reconhecida. O valor padrão para Duração Mínima da Fala é 300 milissegundos.
- 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);
Duração do Silêncio
O parâmetro Duraçao do Silêncio define o tempo de silêncio necessário para acionar um evento de fim de fala. Isso evita que a detecção de fala termine prematuramente durante pausas naturais entre palavras ou frases. O valor padrão para Duração do Silêncio é 500 milissegundos.
- 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);
Vinculando a Delegados de Fala
Você pode vincular a delegados específicos quando a fala começa ou termina. Isso é útil para acionar comportamentos personalizados com base na atividade de fala, como iniciar ou parar o reconhecimento de texto, ou ajustar o volume de outras fontes de áudio.
- 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
});
Comparando Provedores de VAD
- VAD Padrão
- Silero VAD
VAD Padrão (libfvad)
Vantagens:
- Leve e eficiente
- Funciona em todas as plataformas
- Uso mínimo de recursos
- Adequado para dispositivos móveis e de baixo poder
Melhor para:
- Detecção simples de voz em ambientes silenciosos
- Aplicações móveis
- Projetos onde desempenho é prioridade
- Quando suporte universal a plataformas é necessário
Silero VAD
Vantagens:
- Maior precisão na detecção de voz
- Melhor tolerância a ruídos em ambientes desafiadores
- Resultados mais consistentes entre diferentes falantes
- Opções avançadas de configuração para controle preciso
Melhor para:
- Aplicações que exigem detecção precisa de voz
- Ambientes com ruído de fundo
- Sistemas de reconhecimento de voz
- Aplicações profissionais de áudio
O Silero VAD pode exigir mais recursos computacionais que o VAD padrão.