Wykrywanie Aktywności Głosowej
Streaming Sound Wave, wraz z jego pochodnymi typami, takimi jak Capturable Sound Wave, obsługuje Wykrywanie Aktywności Głosowej (VAD). VAD filtruje przychodzące dane audio, aby wypełnić wewnętrzny bufor tylko wtedy, gdy wykryty jest głos.
Plugin oferuje dwie implementacje VAD:
- Default VAD
- Silero VAD
Domyślna implementacja używa libfvad, lekkiej biblioteki do wykrywania aktywności głosowej, która działa wydajnie na wszystkich platformach i wersjach silnika obsługiwanych przez Runtime Audio Importer.
Dostępne jako plugin rozszerzający, Silero VAD to oparty na sieciach neuronowych detektor aktywności głosowej, który zapewnia wyższą dokładność, szczególnie w hałaśliwych środowiskach. Używa uczenia maszynowego, aby bardziej niezawodnie odróżniać mowę od szumu tła.
Podstawowe Użycie
Aby włączyć VAD po utworzeniu fali dźwiękowej, użyj funkcji ToggleVAD
:
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
Po włączeniu VAD, możesz zresetować je w dowolnym momencie:
- Blueprint
- C++
// Reset the VAD
StreamingSoundWave->ResetVAD();
Domyślne ustawienia VAD
Podczas korzystania z domyślnego dostawcy VAD, możesz dostosować jego agresywność poprzez zmianę trybu VAD:
- Blueprint
- C++
// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Parametr trybu kontroluje, jak agresywnie VAD filtruje dźwięk. Wyższe wartości są bardziej restrykcyjne, co oznacza, że są mniej podatne na zgłaszanie fałszywych alarmów, ale mogą pominąć część mowy.
Dostawcy VAD
Po włączeniu VAD za pomocą funkcji ToggleVAD
, możesz wybrać między różnymi dostawcami wykrywania aktywności głosowej (Voice Activity Detection), aby dopasować je do swoich potrzeb. Domyślnym dostawcą jest wbudowany, podczas gdy dodatkowi dostawcy, tacy jak Silero VAD, są dostępni poprzez wtyczki rozszerzeń.
- 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());
Rozszerzenie Silero VAD
Silero VAD zapewnia dokładniejsze wykrywanie mowy przy użyciu sieci neuronowych. Aby go użyć:
-
Upewnij się, że wtyczka Runtime Audio Importer jest już zainstalowana w twoim projekcie
-
Dla UE 5.5 i wcześniejszych: Przed pobraniem wtyczki rozszerzenia Silero VAD upewnij się, że NNERuntimeORT jest wyłączony w twoim projekcie. Posiadanie włączonego NNERuntimeORT może powodować awarie podczas używania Silero VAD w tych wersjach silnika z powodu konfliktów
-
Pobierz wtyczkę rozszerzenia Silero VAD z Dysku Google
-
Wypakuj folder z pobranego archiwum do folderu
Plugins
twojego projektu (utwórz ten folder, jeśli nie istnieje) -
Dla UE 5.6 i późniejszych: Edytuj plik
RuntimeAudioImporterSileroVAD.uplugin
, aby dodać zależność NNERuntimeORT. W polu "Plugins", po wpisie RuntimeAudioImporter, dodaj:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- Przebuduj swój projekt (to rozszerzenie wymaga projektu C++)
-
Domyślny VAD działa ze wszystkimi wersjami silnika obsługiwanymi przez Runtime Audio Importer (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 i 5.6)
-
Silero VAD obsługuje Unreal Engine 4.27 i wszystkie wersje UE5 (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 i 5.6)
-
UE 5.5 i wcześniejsze: NNERuntimeORT musi być wyłączony przed użyciem Silero VAD, aby zapobiec awariom spowodowanym konfliktami wtyczek
-
Wymaganie UE 5.6+: Począwszy od Unreal Engine 5.6, rozszerzenie Silero VAD wymaga ręcznego dodania zależności wtyczki NNERuntimeORT do pliku
.uplugin
-
Silero VAD jest dostępny dla Windows, Linux, Mac, Android (w tym Meta Quest) i iOS
-
To rozszerzenie jest dostarczane jako kod źródłowy i wymaga projektu C++ do użycia
-
Aby uzyskać więcej informacji na temat ręcznego budowania wtyczek, zobacz samouczek Building Plugins
Po zainstalowaniu możesz wybrać je jako dostawcę VAD za pomocą funkcji SetVADProvider
z dostawcą klasy Silero.
Wykrywanie początku i końca mowy
Wykrywanie aktywności głosowej (VAD) nie tylko wykrywa obecność mowy, ale także umożliwia wykrywanie początku i końca aktywności mowy. Jest to przydatne do wyzwalania zdarzeń, gdy mowa zaczyna się lub kończy podczas odtwarzania lub przechwytywania.
Możesz dostosować czułość wykrywania początku i końca mowy, dostosowując parametry, takie jak minimalny czas trwania mowy i czas trwania ciszy. Te parametry pomagają precyzyjnie dostroić wykrywanie, aby uniknąć fałszywych pozytywów, takich jak wychwytywanie krótkich szumów lub zbyt krótkich przerw w mowie.
Minimalny czas trwania mowy
Parametr Minimalny czas trwania mowy ustawia minimalną ilość ciągłej aktywności głosowej wymaganą do wyzwolenia zdarzenia początku mowy. Pomaga to odfiltrować krótkie szumy, które nie powinny być uznawane za mowę, aby upewnić się, że tylko utrzymująca się aktywność głosowa jest rozpoznawana. Domyślna wartość dla Minimalnego czasu trwania mowy to 300 milisekund.
- 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);
Czas Trwania Ciszy
Parametr Czas Trwania Ciszy ustawia czas trwania ciszy wymagany do wywołania zdarzenia zakończenia mowy. Zapobiega to przedwczesnemu zakończeniu wykrywania mowy podczas naturalnych przerw między słowami lub zdaniami. Domyślna wartość dla Czasu Trwania Ciszy to 500 milisekund.
- 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);
Wiązanie z Delegatami Mowy
Możesz powiązać się z określonymi delegatami, gdy mowa się rozpoczyna lub kończy. Jest to przydatne do wyzwalania niestandardowych zachowań w oparciu o aktywność mowy, takich jak uruchamianie lub zatrzymywanie rozpoznawania tekstu, lub regulowanie głośności innych źródeł dźwięku.
- 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
});
Porównanie dostawców VAD
- Domyślny VAD
- Silero VAD
Domyślny VAD (libfvad)
Zalety:
- Lekki i wydajny
- Działa na wszystkich platformach
- Minimalne zużycie zasobów
- Odpowiedni dla urządzeń mobilnych i o niskiej mocy
Najlepszy dla:
- Prostej detekcji głosu w cichych środowiskach
- Aplikacji mobilnych
- Projektów, w których priorytetem jest wydajność
- Sytuacji wymagających uniwersalnego wsparcia platform
Silero VAD
Zalety:
- Większa dokładność w wykrywaniu głosu
- Lepsza tolerancja szumów w trudnych warunkach
- Bardziej spójne wyniki dla różnych mówców
- Zaawansowane opcje konfiguracji dla precyzyjnej kontroli
Najlepszy dla:
- Aplikacji wymagających precyzyjnej detekcji głosu
- Środowisk z hałasem w tle
- Systemów rozpoznawania mowy
- Profesjonalnych aplikacji audio
Silero VAD może wymagać większych zasobów obliczeniowych niż domyślny VAD.