Spracherkennung
Streaming Sound Wave sowie davon abgeleitete Typen wie Capturable Sound Wave unterstützen Voice Activity Detection (VAD). VAD filtert eingehende Audiodaten und füllt den internen Puffer nur dann auf, wenn Sprache erkannt wird.
Das Plugin bietet zwei VAD-Implementierungen:
- Default VAD
- Silero VAD
Die Standardimplementierung verwendet libfvad, eine leichtgewichtige Spracherkennungsbibliothek, die effizient auf allen von Runtime Audio Importer unterstützten Plattformen und Engine-Versionen funktioniert.
Verfügbar als Erweiterungs-Plugin, Silero VAD ist ein auf neuronalen Netzen basierender Spracherkenner, der eine höhere Genauigkeit bietet, insbesondere in lauten Umgebungen. Es verwendet maschinelles Lernen, um Sprache zuverlässiger von Hintergrundgeräuschen zu unterscheiden.
Grundlegende Verwendung
Um VAD nach dem Erstellen einer Sound Wave zu aktivieren, verwenden Sie die Funktion ToggleVAD:
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
Nachdem Sie die VAD aktiviert haben, können Sie sie jederzeit zurücksetzen:
- Blueprint
- C++

// Reset the VAD
StreamingSoundWave->ResetVAD();
Standard-VAD-Einstellungen
Bei Verwendung des Standard-VAD-Providers können Sie dessen Aggressivität durch Ändern des VAD-Modus anpassen:
- Blueprint
- C++

// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Der Modus-Parameter steuert, wie aggressiv der VAD Audio filtert. Höhere Werte sind restriktiver, was bedeutet, dass sie weniger wahrscheinlich falsch-positive Ergebnisse melden, aber möglicherweise etwas Sprache verpassen.
VAD-Anbieter
Nachdem Sie VAD mit der Funktion ToggleVAD aktiviert haben, können Sie zwischen verschiedenen Voice Activity Detection-Anbietern wählen, um Ihren Anforderungen gerecht zu werden. Der Standardanbieter ist integriert, während zusätzliche Anbieter wie Silero VAD über Erweiterungs-Plugins verfügbar sind.
- 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-Erweiterung
Silero VAD bietet eine genauere Spracherkennung mithilfe neuronaler Netze. So verwenden Sie es:
-
Stellen Sie sicher, dass das Runtime Audio Importer-Plugin bereits in Ihrem Projekt installiert ist
-
Für UE 5.5 und früher: Bevor Sie die Silero VAD-Erweiterung herunterladen, stellen Sie sicher, dass NNERuntimeORT in Ihrem Projekt deaktiviert ist. Wenn NNERuntimeORT aktiviert ist, kann dies bei der Verwendung von Silero VAD in diesen Engine-Versionen aufgrund von Konflikten zu Abstürzen führen
-
Laden Sie das Silero VAD-Erweiterungs-Plugin von hier herunter
-
Extrahieren Sie den Ordner aus dem heruntergeladenen Archiv in den
Plugins-Ordner Ihres Projekts (erstellen Sie diesen Ordner, falls er nicht existiert) -
Für UE 5.6 und später: Bearbeiten Sie die Datei
RuntimeAudioImporterSileroVAD.uplugin, um die NNERuntimeORT-Abhängigkeit hinzuzufügen. Fügen Sie im Feld "Plugins" nach dem Eintrag für RuntimeAudioImporter hinzu:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- Erstellen Sie Ihr Projekt neu (diese Erweiterung erfordert ein C++-Projekt)
-
Die standardmäßige VAD funktioniert mit allen von Runtime Audio Importer unterstützten Engine-Versionen (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 und 5.7)
-
Silero VAD unterstützt Unreal Engine 4.27 und alle UE5-Versionen (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 und 5.7)
-
UE 5.5 und früher: NNERuntimeORT muss deaktiviert werden, bevor Silero VAD verwendet wird, um Abstürze aufgrund von Plugin-Konflikten zu verhindern
-
UE 5.6+ Anforderung: Ab Unreal Engine 5.6 muss die NNERuntimeORT-Plugin-Abhängigkeit für die Silero VAD-Erweiterung manuell zur
.uplugin-Datei hinzugefügt werden -
Silero VAD ist für Windows, Linux, Mac, Android (einschließlich Meta Quest) und iOS verfügbar
-
Diese Erweiterung wird als Quellcode bereitgestellt und erfordert zur Verwendung ein C++-Projekt
-
Weitere Informationen zum manuellen Erstellen von Plugins finden Sie im Tutorial zum Erstellen von Plugins
Nach der Installation können Sie es als Ihren VAD-Anbieter auswählen, indem Sie die Funktion SetVADProvider mit dem Silero-Klassenanbieter verwenden.
Sprachanfangs- und -endenerkennung
Voice Activity Detection erkennt nicht nur das Vorhandensein von Sprache, sondern ermöglicht auch die Erkennung des Anfangs und Endes von Sprachaktivität. Dies ist nützlich, um Ereignisse auszulösen, wenn die Sprache während der Wiedergabe oder Aufnahme beginnt oder endet.
Sie können die Empfindlichkeit der Sprachanfangs- und -endenerkennung anpassen, indem Sie Parameter wie die minimale Sprachdauer und die Stille-Dauer ändern. Diese Parameter helfen dabei, die Erkennung zu optimieren, um Fehlalarme zu vermeiden, wie das Aufnehmen kurzer Geräusche oder zu kurzer Pausen zwischen der Sprache.
Minimale Sprachdauer
Der Parameter Minimale Sprachdauer legt die Mindestmenge an kontinuierlicher Sprachaktivität fest, die erforderlich ist, um ein Sprachanfangsereignis auszulösen. Dies hilft, kurze Geräusche herauszufiltern, die nicht als Sprache betrachtet werden sollten, um sicherzustellen, dass nur anhaltende Sprachaktivität erkannt wird. Der Standardwert für Minimale Sprachdauer beträgt 300 Millisekunden.
- 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);
Stille-Dauer
Der Parameter Stille-Dauer legt die Dauer der Stille fest, die erforderlich ist, um ein Sprach-Ende-Ereignis auszulösen. Dies verhindert, dass die Spracherkennung während natürlicher Pausen zwischen Wörtern oder Sätzen vorzeitig beendet wird. Der Standardwert für Stille-Dauer beträgt 500 Millisekunden.
- 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);
Binden an Sprach-Delegates
Sie können an spezifische Delegates binden, wenn die Sprache beginnt oder endet. Dies ist nützlich, um benutzerdefiniertes Verhalten basierend auf Sprachaktivität auszulösen, wie z.B. das Starten oder Stoppen der Texterkennung oder das Anpassen der Lautstärke anderer Audioquellen.
- 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
});
Vergleich von VAD-Anbietern
- Standard-VAD
- Silero VAD
Standard-VAD (libfvad)
Vorteile:
- Leichtgewichtig und effizient
- Funktioniert auf allen Plattformen
- Minimaler Ressourcenverbrauch
- Geeignet für mobile und leistungsschwache Geräte
Am besten geeignet für:
- Einfache Spracherkennung in ruhigen Umgebungen
- Mobile Anwendungen
- Projekte, bei denen Leistung Priorität hat
- Wenn universelle Plattformunterstützung erforderlich ist
Silero VAD
Vorteile:
- Höhere Genauigkeit bei der Spracherkennung
- Bessere Rauschunterdrückung in anspruchsvollen Umgebungen
- Konsistentere Ergebnisse bei verschiedenen Sprechern
- Erweiterte Konfigurationsoptionen für präzise Steuerung
Am besten geeignet für:
- Anwendungen, die präzise Spracherkennung erfordern
- Umgebungen mit Hintergrundgeräuschen
- Spracherkennungssysteme
- Professionelle Audioanwendungen
Silero VAD kann mehr Rechenressourcen benötigen als die Standard-VAD.