Rilevamento Attività Vocale
Streaming Sound Wave, insieme ai suoi tipi derivati come Capturable Sound Wave, supporta il Rilevamento Attività Vocale (VAD). Il VAD filtra i dati audio in arrivo per popolare il buffer interno solo quando viene rilevata la voce.
Il plugin offre due implementazioni VAD:
- Default VAD
- Silero VAD
L'implementazione predefinita utilizza libfvad, una libreria leggera per il rilevamento dell'attività vocale che funziona in modo efficiente su tutte le piattaforme e versioni del motore supportate da Runtime Audio Importer.
Disponibile come plugin di estensione, Silero VAD è un rilevatore di attività vocale basato su rete neurale che offre una maggiore precisione, specialmente in ambienti rumorosi. Utilizza l'apprendimento automatico per distinguere in modo più affidabile la voce dal rumore di fondo.
Utilizzo Base
Per abilitare il VAD dopo aver creato un'onda sonora, utilizza la funzione ToggleVAD:
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
Dopo aver abilitato il VAD, puoi resettarlo in qualsiasi momento:
- Blueprint
- C++

// Reset the VAD
StreamingSoundWave->ResetVAD();
Impostazioni VAD Predefinite
Quando si utilizza il provider VAD predefinito, è possibile regolarne l'aggressività modificando la modalità VAD:
- Blueprint
- C++

// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Il parametro mode controlla quanto aggressivamente il VAD filtra l'audio. Valori più alti sono più restrittivi, il che significa che è meno probabile che segnalino falsi positivi ma potrebbero perdere parte del discorso.
Provider VAD
Dopo aver abilitato il VAD con la funzione ToggleVAD, puoi scegliere tra diversi provider di Rilevamento dell'Attività Vocale per adattarli alle tue esigenze. Il provider predefinito è integrato, mentre provider aggiuntivi come Silero VAD sono disponibili tramite plugin di estensione.
- 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());
Estensione Silero VAD
Silero VAD fornisce un rilevamento vocale più accurato utilizzando reti neurali. Per usarlo:
-
Assicurati che il plugin Runtime Audio Importer sia già installato nel tuo progetto
-
Per UE 5.5 e versioni precedenti: Prima di scaricare il plugin di estensione Silero VAD, assicurati che NNERuntimeORT sia disabilitato nel tuo progetto. Avere NNERuntimeORT abilitato potrebbe causare crash quando si utilizza Silero VAD su queste versioni del motore a causa di conflitti
-
Scarica il plugin di estensione Silero VAD da qui
-
Estrai la cartella dall'archivio scaricato nella cartella
Pluginsdel tuo progetto (crea questa cartella se non esiste) -
Per UE 5.6 e versioni successive: Modifica il file
RuntimeAudioImporterSileroVAD.upluginper aggiungere la dipendenza NNERuntimeORT. Nel campo "Plugins", dopo l'inclusione di RuntimeAudioImporter, aggiungi:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- Ricostruisci il tuo progetto (questa estensione richiede un progetto C++)
-
Il VAD predefinito funziona con tutte le versioni del motore supportate da 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 e 5.7)
-
Silero VAD supporta Unreal Engine 4.27 e tutte le versioni UE5 (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 e 5.7)
-
UE 5.5 e precedenti: NNERuntimeORT deve essere disabilitato prima di utilizzare Silero VAD per prevenire crash dovuti a conflitti di plugin
-
Requisito UE 5.6+: A partire da Unreal Engine 5.6, l'estensione Silero VAD richiede che la dipendenza del plugin NNERuntimeORT venga aggiunta manualmente al file
.uplugin -
Silero VAD è disponibile per Windows, Linux, Mac, Android (incluso Meta Quest) e iOS
-
Questa estensione è fornita come codice sorgente e richiede un progetto C++ per essere utilizzata
-
Per maggiori informazioni su come costruire manualmente i plugin, consulta il tutorial sulla costruzione dei plugin
Una volta installata, puoi selezionarla come tuo fornitore VAD utilizzando la funzione SetVADProvider con il fornitore di classe Silero.
Rilevamento Inizio e Fine della Voce
Il Rilevamento dell'Attività Vocale non solo rileva la presenza della voce, ma permette anche di rilevare l'inizio e la fine dell'attività vocale. Questo è utile per attivare eventi quando la voce inizia o termina durante la riproduzione o la cattura.
Puoi personalizzare la sensibilità del rilevamento dell'inizio e della fine della voce regolando parametri come la durata minima della voce e la durata del silenzio. Questi parametri aiutano a perfezionare il rilevamento per evitare falsi positivi, come rilevare rumori brevi o pause troppo brevi tra un discorso e l'altro.
Durata Minima della Voce
Il parametro Durata Minima della Voce imposta la quantità minima di attività vocale continua necessaria per attivare un evento di inizio voce. Questo aiuta a filtrare i rumori brevi che non dovrebbero essere considerati voce, per assicurarsi che venga riconosciuta solo l'attività vocale sostenuta. Il valore predefinito per la Durata Minima della Voce è 300 millisecondi.
- 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);
Durata del Silenzio
Il parametro Durata del Silenzio imposta la durata del silenzio necessaria per attivare un evento di fine discorso. Questo impedisce che il rilevamento del discorso termini prematuramente durante le pause naturali tra parole o frasi. Il valore predefinito per Durata del Silenzio è 500 millisecondi.
- 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 aux 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 en fonction de 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é
- Lorsqu'une prise en charge universelle des plateformes est requise
Silero VAD
Avantages :
- Précision accrue dans la détection de la voix
- Meilleure tolérance au bruit dans des environnements difficiles
- Résultats plus cohérents pour 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 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.