Detekcja Aktywności Głosowej
Streaming Sound Wave, wraz z jego pochodnymi typami takimi jak Capturable Sound Wave, obsługuje Detekcję Aktywności Głosowej (VAD). VAD filtruje przychodzące dane audio, aby zapełniać wewnętrzny bufor tylko wtedy, gdy wykrywana jest mowa.
Wtyczka 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 efektywnie na wszystkich platformach i wersjach silnika obsługiwanych przez Runtime Audio Importer.
Dostępny jako wtyczka rozszerzająca, Silero VAD to oparty na sieci neuronowej detektor aktywności głosowej, który zapewnia wyższą dokładność, szczególnie w hałaśliwych środowiskach. Wykorzystuje uczenie maszynowe, 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 go zresetować w dowolnym momencie:
- Blueprint
- C++

// Reset the VAD
StreamingSoundWave->ResetVAD();
Domyślne ustawienia VAD
Korzystając z domyślnego dostawcy VAD, możesz dostosować jego agresywność, zmieniając tryb VAD:
- Blueprint
- C++

// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Parametr mode kontroluje, jak agresywnie VAD filtruje dźwięk. Wyższe wartości są bardziej restrykcyjne, co oznacza, że rzadziej zgłaszają fałszywe alarmy, ale mogą pomijać niektóre wypowiedzi.
Dostawcy VAD
Po włączeniu VAD za pomocą funkcji ToggleVAD możesz wybrać spośród różnych dostawców VAD, aby dopasować do swoich potrzeb. Domyślny dostawca jest wbudowany, a dodatkowi dostawcy, tacy jak Silero VAD, są dostępni za pośrednictwem wtyczek 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());
Silero VAD Extension
Silero VAD dostarcza bardziej dokładne wykrywanie mowy wykorzystując sieci neuronowe. 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łączone w Twoim projekcie. Włączone NNERuntimeORT może powodować awarie przy użyciu Silero VAD na tych wersjach silnika z powodu konfliktów
-
Pobierz wtyczkę rozszerzenia Silero VAD stąd
-
Wypakuj folder z pobranego archiwum do folderu
Pluginsw swoim projekcie (utwórz ten folder, jeśli nie istnieje) -
Dla UE 5.6 i nowszych: Edytuj plik
RuntimeAudioImporterSileroVAD.uplugin, aby dodać zależność NNERuntimeORT. W polu "Plugins", po dołączeniu RuntimeAudioImporter, dodaj:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- Skompiluj ponownie 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, 5.6, 5.7 i 5.8)
-
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, 5.6, 5.7 i 5.8)
-
UE 5.5 i wcześniejsze: NNERuntimeORT musi być wyłączone przed użyciem Silero VAD, aby zapobiec awariom z powodu konfliktów wtyczek. W UE 5.3 konkretnie, NNERuntimeORTCpu i NNERuntimeORTGpu również muszą być wyłączone
-
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 systemów 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
-
Więcej informacji na temat ręcznego budowania wtyczek można znaleźć w samouczku Building Plugins
Po zainstalowaniu można go wybrać jako dostawcę VAD za pomocą funkcji SetVADProvider z dostawcą klasy Silero.
Wykrywanie początku i końca mowy
Detekcja Aktywności Głosowej nie tylko wykrywa obecność mowy, ale umożliwia również wykrywanie początku i końca aktywności mowy. Jest to przydatne do wyzwalania zdarzeń, gdy mowa się rozpoczyna lub kończy podczas odtwarzania lub przechwytywania.
Można dostosować czułość wykrywania początku i końca mowy, regulując parametry, takie jak minimalny czas trwania mowy i czas trwania ciszy. Parametry te pomagają dostroić wykrywanie, aby uniknąć fałszywych alarmów, takich jak wykrywanie krótkich szumów lub zbyt krótkich przerw między mową.
Minimalny czas trwania mowy
Parametr Minimalny czas trwania mowy ustawia minimalną ilość ciągłej aktywności głosowej wymaganej do wyzwolenia zdarzenia rozpoczęcia mowy. Pomaga to odfiltrować krótkie szumy, które nie powinny być uznawane za mowę, aby upewnić się, że rozpoznawana jest tylko trwała aktywność głosowa. Domyślna wartość Minimalnego czasu trwania mowy wynosi 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);
Silence Duration
Parametr Silence Duration ustawia czas trwania ciszy wymagany do wywołania zdarzenia zakończenia mowy. Zapobiega to przedwczesnemu kończeniu wykrywania mowy podczas naturalnych pauz między słowami lub zdaniami. Domyślna wartość dla Silence Duration 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);
Powiązanie z delegatami mowy
Możesz przypisać się do określonych delegatów, gdy mowa się rozpoczyna lub kończy. Jest to przydatne do wyzwalania niestandardowego zachowania na podstawie aktywności mowy, takiego jak rozpoczynanie lub zatrzymywanie rozpoznawania tekstu lub dostosowywanie 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
- Default VAD
- Silero VAD
Default VAD (libfvad)
Zalety:
- Lekki i wydajny
- Działa na wszystkich platformach
- Minimalne wykorzystanie zasobów
- Odpowiedni dla urządzeń mobilnych i o niskiej mocy
Najlepsze do:
- Prostego wykrywania głosu w cichym otoczeniu
- Aplikacji mobilnych
- Projektów, w których wydajność jest priorytetem
- Gdy wymagana jest uniwersalna obsługa platform
Silero VAD
Zalety:
- Wyższa dokładność wykrywania głosu
- Lepsza tolerancja na szumy w trudnych warunkach
- Bardziej spójne wyniki dla różnych mówców
- Zaawansowane opcje konfiguracji dla precyzyjnej kontroli
Najlepsze do:
- Aplikacji wymagających precyzyjnego wykrywania głosu
- Środowisk z hałasem w tle
- Systemów rozpoznawania głosu
- Profesjonalnych aplikacji audio
Silero VAD może wymagać więcej zasobów obliczeniowych niż domyślny VAD.