Rilevamento dell'attività vocale
Streaming Sound Wave, insieme ai suoi tipi derivati come Capturable Sound Wave, supporta il rilevamento dell'attività vocale (VAD). Il VAD filtra i dati audio in ingresso 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 le versioni del motore supportate da Runtime Audio Importer.
Disponibile come plugin di estensione, Silero VAD è un rilevatore dell'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 il parlato dal rumore di fondo.
Utilizzo di base
Per abilitare il VAD dopo aver creato un Sound Wave, 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 ripristinarlo in qualsiasi momento:
- Blueprint
- C++

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

// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Il parametro mode controlla l'aggressività con cui il VAD filtra l'audio. Valori più alti sono più restrittivi, cioè è meno probabile che segnalino falsi positivi ma potrebbero perdere parte del parlato.
Fornitori VAD
Dopo aver abilitato il VAD con la funzione ToggleVAD, puoi scegliere tra diversi fornitori di Voice Activity Detection in base 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());
Silero VAD Extension
Silero VAD fornisce un rilevamento vocale più accurato utilizzando reti neurali. Per utilizzarlo:
-
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 da NNERuntimeORT. Nel campo "Plugins", dopo l'inclusione di RuntimeAudioImporter, aggiungere:
,
{
"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, 5.7 e 5.8)
-
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, 5.7 e 5.8)
-
UE 5.5 e precedenti: NNERuntimeORT deve essere disabilitato prima di utilizzare Silero VAD per prevenire crash dovuti a conflitti tra plugin. In UE 5.3 in particolare, anche NNERuntimeORTCpu e NNERuntimeORTGpu devono essere disabilitati
-
Requisito per UE 5.6+: A partire da Unreal Engine 5.6, l'estensione Silero VAD richiede che la dipendenza dal 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 compilare manualmente i plugin, consulta il Building Plugins tutorial
Una volta installato, puoi selezionarlo come provider VAD utilizzando la funzione SetVADProvider con il provider di classe Silero.
Rilevamento Inizio e Fine del Parlato
Il rilevamento dell'attività vocale non solo rileva la presenza del parlato, ma consente anche di rilevare l'inizio e la fine dell'attività vocale. Questo è utile per attivare eventi quando il parlato inizia o termina durante la riproduzione o la cattura.
Puoi personalizzare la sensibilità del rilevamento dell'inizio e della fine del parlato regolando parametri come la durata minima del parlato e la durata del silenzio. Questi parametri aiutano a regolare con precisione il rilevamento per evitare falsi positivi, come rilevare rumori brevi o pause troppo brevi tra un parlato e l'altro.
Minimum Speech Duration
Il parametro Minimum Speech Duration imposta la quantità minima di attività vocale continua richiesta per attivare un evento di inizio parlato. Ciò aiuta a filtrare i rumori brevi che non dovrebbero essere considerati parlato, per garantire che solo l'attività vocale sostenuta venga riconosciuta. Il valore predefinito per Minimum Speech Duration è di 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. Ciò impedisce che il rilevamento vocale termini prematuramente durante le pause naturali tra le parole o le frasi. Il valore predefinito per Durata del Silenzio è di 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);
Associazione ai delegati vocali
È possibile associarsi a delegati specifici quando il parlato inizia o termina. Ciò è utile per attivare comportamenti personalizzati in base all'attività vocale, come avviare o interrompere il riconoscimento del testo oppure regolare il volume di altre sorgenti 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
});
Confronto tra fornitori VAD
- Default VAD
- Silero VAD
Default VAD (libfvad)
Vantaggi:
- Leggero ed efficiente
- Funziona su tutte le piattaforme
- Utilizzo minimo delle risorse
- Adatto a dispositivi mobili e a basso consumo
Ideale per:
- Rilevamento vocale semplice in ambienti silenziosi
- Applicazioni mobili
- Progetti in cui le prestazioni sono una priorità
- Quando è richiesto il supporto universale per le piattaforme
Silero VAD
Vantaggi:
- Maggiore precisione nel rilevamento vocale
- Elevata tolleranza al rumore in ambienti difficili
- Risultati più uniformi tra diversi oratori
- Opzioni di configurazione avanzate per un controllo preciso
Ideale per:
- Applicazioni che richiedono un rilevamento vocale preciso
- Ambienti con rumore di fondo
- Sistemi di riconoscimento vocale
- Applicazioni audio professionali
Silero VAD potrebbe richiedere più risorse computazionali rispetto al VAD predefinito.