Spracherkennung (Voice Activity Detection)
Streaming Sound Wave sowie davon abgeleitete Typen wie Capturable Sound Wave unterstützen Spracherkennung (Voice Activity Detection, VAD). VAD filtert eingehende Audiodaten und füllt den internen Puffer nur, wenn Sprache erkannt wird. Diese Funktion wird mit libfvad implementiert.
Um VAD nach der Erstellung der Sound Wave zu aktivieren, verwenden Sie die entsprechende Funktion.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
Sobald VAD aktiviert ist, können Sie den VAD-Modus festlegen oder den VAD bei Bedarf zurücksetzen. Diese Funktionen sollten nur aufgerufen werden, wenn VAD aktiviert ist.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the VAD mode
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
// Reset the VAD
StreamingSoundWave->ResetVAD();
Sprachstart- und -ende-Erkennung
Die Voice Activity Detection erkennt nicht nur das Vorhandensein von Sprache, sondern ermöglicht auch die Erkennung des Beginns und Endes von Sprachaktivität. Dies ist nützlich, um Ereignisse auszulösen, wenn während der Wiedergabe oder Aufnahme Sprache beginnt oder endet.
Sie können die Empfindlichkeit der Sprachstart- und -ende-Erkennung anpassen, indem Sie Parameter wie die minimale Sprachdauer und die Stille-Dauer konfigurieren. Diese Parameter helfen dabei, die Erkennung zu optimieren, um falsche Positivmeldungen zu vermeiden, wie das Erfassen von kurzen Geräuschen oder zu kurzen Pausen zwischen der Sprache.
Minimale Sprachdauer
Der Parameter Minimum Speech Duration legt die minimale Dauer kontinuierlicher Sprachaktivität fest, die erforderlich ist, um ein Sprachstart-Ereignis 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 Minimum Speech Duration 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 Silence Duration 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 Silence Duration 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);
Bindung an Sprach-Delegaten
Sie können an spezifische Delegaten binden, wenn die Sprache beginnt oder endet. Dies ist nützlich, um benutzerdefiniertes Verhalten basierend auf Sprachaktivität auszulösen, wie das Starten oder Stoppen der Texterkennung oder die Anpassung 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
});