Détection d'Activité Vocale
Streaming Sound Wave, ainsi que ses types dérivés tels que Capturable Sound Wave, prennent en charge la Détection d'Activité Vocale (VAD). VAD filtre les données audio entrantes pour remplir le tampon interne uniquement lorsque de la voix est détectée.
Le plugin propose deux implémentations de VAD :
- Default VAD
- Silero VAD
L'implémentation par défaut utilise libfvad, une bibliothèque légère de détection d'activité vocale qui fonctionne efficacement sur toutes les plateformes et versions du moteur prises en charge par Runtime Audio Importer.
Disponible en tant que plugin d'extension, Silero VAD est un détecteur d'activité vocale basé sur un réseau neuronal qui offre une précision supérieure, en particulier dans les environnements bruyants. Il utilise l'apprentissage automatique pour distinguer plus fi ablement la parole du bruit de fond.
Utilisation de Base
Pour activer VAD après avoir créé une onde sonore, utilisez la fonction ToggleVAD
:
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
Après avoir activé la VAD, vous pouvez la réinitialiser à tout moment :
- Blueprint
- C++
// Reset the VAD
StreamingSoundWave->ResetVAD();
Paramètres VAD par défaut
Lorsque vous utilisez le fournisseur VAD par défaut, vous pouvez ajuster son agressivité en changeant le mode VAD :
- Blueprint
- C++
// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Le paramètre mode contrôle la manière dont le VAD filtre l'audio de manière agressive. Des valeurs plus élevées sont plus restrictives, ce qui signifie qu'elles sont moins susceptibles de signaler des faux positifs mais pourraient manquer certains segments de parole.
Fournisseurs de VAD
Après avoir activé le VAD avec la fonction ToggleVAD
, vous pouvez choisir entre différents fournisseurs de détection d'activité vocale (Voice Activity Detection) pour répondre à vos besoins. Le fournisseur par défaut est intégré, tandis que des fournisseurs supplémentaires tels que Silero VAD sont disponibles via des plugins d'extension.
- 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());
Extension Silero VAD
Silero VAD offre une détection de la parole plus précise en utilisant des réseaux neuronaux. Pour l'utiliser :
-
Assurez-vous que le plugin Runtime Audio Importer est déjà installé dans votre projet
-
Téléchargez l'extension plugin Silero VAD depuis Google Drive
-
Extrayez le dossier de l'archive téléchargée dans le dossier
Plugins
de votre projet (créez ce dossier s'il n'existe pas) -
Pour UE 5.6 et versions ultérieures : Modifiez le fichier
RuntimeAudioImporterSileroVAD.uplugin
pour ajouter la dépendance NNERuntimeORT. Dans le champ "Plugins", après l'inclusion de RuntimeAudioImporter, ajoutez :
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- Recompilez votre projet (cette extension nécessite un projet C++)
-
Le VAD par défaut fonctionne avec toutes les versions du moteur prises en charge par Runtime Audio Importer (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, et 5.6)
-
Silero VAD prend en charge Unreal Engine 4.27 et toutes les versions UE5 (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, et 5.6)
-
Exigence UE 5.6+ : À partir d'Unreal Engine 5.6, l'extension Silero VAD nécessite que la dépendance du plugin NNERuntimeORT soit ajoutée manuellement au fichier
.uplugin
-
Silero VAD est disponible pour Windows, Linux, Mac, Android (y compris Meta Quest), et iOS
-
Cette extension est fournie sous forme de code source et nécessite un projet C++ pour être utilisée
-
Pour plus d'informations sur la compilation manuelle de plugins, consultez le tutoriel Building Plugins
Une fois installée, vous pouvez la sélectionner comme fournisseur de VAD en utilisant la fonction SetVADProvider
avec la classe de fournisseur Silero.
Détection du début et de la fin de la parole
La Détection d'Activité Vocale (VAD) ne détecte pas seulement la présence de parole, elle permet également de détecter le début et la fin de l'activité vocale. Ceci est utile pour déclencher des événements lorsque la parole commence ou se termine pendant la lecture ou la capture.
Vous pouvez personnaliser la sensibilité de la détection du début et de la fin de la parole en ajustant des paramètres tels que la durée minimale de parole et la durée de silence. Ces paramètres aident à affiner la détection pour éviter les faux positifs, comme capter des bruits brefs ou des pauses trop courtes entre les paroles.
Durée minimale de parole
Le paramètre Durée minimale de parole définit la quantité minimale d'activité vocale continue requise pour déclencher un événement de début de parole. Cela permet de filtrer les bruits brefs qui ne devraient pas être considérés comme de la parole, afin de s'assurer que seule l'activité vocale soutenue est reconnue. La valeur par défaut pour la Durée minimale de parole est de 300 millisecondes.
- 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);
Durée de Silence
Le paramètre Durée de Silence définit la durée de silence requise pour déclencher un événement de fin de parole. Cela empêche la détection de la parole de se terminer prématurément pendant les pauses naturelles entre les mots ou les phrases. La valeur par défaut pour Durée de Silence est 500 millisecondes.
- 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);
Liaison avec les Délégués de Parole
Vous pouvez vous lier à des délégués spécifiques lorsque la parole commence ou se termine. Ceci est utile pour déclencher des comportements personnalisés basés sur l'activité vocale, comme démarrer ou arrêter la reconnaissance de texte, ou ajuster le volume d'autres sources 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
});
Comparaison des fournisseurs de VAD
- VAD par défaut
- Silero VAD
VAD par défaut (libfvad)
Avantages :
- Léger et efficace
- Fonctionne sur toutes les plateformes
- Utilisation minimale des ressources
- Adapté aux appareils mobiles et à faible puissance
Idéal pour :
- La détection vocale simple dans des environnements calmes
- Les applications mobiles
- Les projets où la performance est une priorité
- Quand une prise en charge universelle des plateformes est requise
Silero VAD
Avantages :
- Précision accrue dans la détection de la voix
- Tolérance au bruit supérieure dans des environnements difficiles
- Résultats plus cohérents avec différents locuteurs
- Options de configuration avancées pour un contrôle précis
Idéal pour :
- Les applications nécessitant une détection vocale précise
- Les environnements avec du bruit de fond
- Les systèmes de reconnaissance vocale
- Les applications audio professionnelles
Silero VAD peut nécessiter plus de ressources de calcul que le VAD par défaut.