Ses Aktivitesi Algılama
Akış Ses Dalgası, Yakalanabilir Ses Dalgası gibi türetilmiş türleriyle birlikte, Ses Aktivitesi Algılama (VAD) özelliğini destekler. VAD, gelen ses verilerini yalnızca ses algılandığında dahili arabelleği doldurmak için filtreler.
Eklenti iki VAD uygulaması sunar:
- Varsayılan VAD
- Silero VAD
Varsayılan uygulama, Runtime Audio Importer tarafından desteklenen tüm platformlar ve motor sürümlerinde verimli çalışan hafif bir ses aktivitesi algılama kütüphanesi olan libfvad'ı kullanır.
Bir uzantı eklentisi olarak mevcut olan Silero VAD, özellikle gürültülü ortamlarda daha yüksek doğruluk sağlayan sinir ağı tabanlı bir ses aktivitesi dedektörüdür. Konuşmayı arka plan gürültüsünden daha güvenilir şekilde ayırt etmek için makine öğrenimi kullanır.
Temel Kullanım
Bir ses dalgası oluşturduktan sonra VAD'ı etkinleştirmek için ToggleVAD
işlevini kullanın:
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
VAD'yi etkinleştirdikten sonra, istediğiniz zaman sıfırlayabilirsiniz:
- Blueprint
- C++
// Reset the VAD
StreamingSoundWave->ResetVAD();
Varsayılan VAD Ayarları
Varsayılan VAD sağlayıcısını kullanırken, VAD modunu değiştirerek agresifliğini ayarlayabilirsiniz:
- Blueprint
- C++
// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Mod parametresi, VAD'nin sesi ne kadar agresif bir şekilde filtrelediğini kontrol eder. Daha yüksek değerler daha kısıtlayıcıdır, bu da yanlış pozitif bildirme olasılıklarının daha düşük olduğu ancak bazı konuşmaları kaçırabileceği anlamına gelir.
VAD Sağlayıcıları
VAD'yi ToggleVAD
fonksiyonu ile etkinleştirdikten sonra, ihtiyaçlarınıza uygun farklı Ses Aktivitesi Algılama sağlayıcıları arasından seçim yapabilirsiniz. Varsayılan sağlayıcı yerleşiktir, Silero VAD gibi ek sağlayıcılar ise eklenti eklentileri aracılığıyla mevcuttur.
- 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 Eklentisi
Silero VAD, sinir ağlarını kullanarak daha doğru konuşma tespiti sağlar. Kullanmak için:
-
Runtime Audio Importer eklentisinin projenizde zaten kurulu olduğundan emin olun
-
UE 5.5 ve önceki sürümler için: Silero VAD eklenti eklentisini indirmeden önce, projenizde NNERuntimeORT'un devre dışı bırakıldığından emin olun. NNERuntimeORT'un etkin olması, çakışmalar nedeniyle bu motor sürümlerinde Silero VAD kullanılırken çökmelere neden olabilir
-
Silero VAD eklenti eklentisini Google Drive'dan indirin
-
İndirilen arşivden klasörü projenizin
Plugins
klasörüne çıkarın (bu klasör yoksa oluşturun) -
UE 5.6 ve sonraki sürümler için: NNERuntimeORT bağımlılığını eklemek için
RuntimeAudioImporterSileroVAD.uplugin
dosyasını düzenleyin. "Plugins" alanında, RuntimeAudioImporter dahil edildikten sonra şunu ekleyin:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- Projenizi yeniden oluşturun (bu eklenti bir C++ projesi gerektirir)
-
Varsayılan VAD, Runtime Audio Importer tarafından desteklenen tüm motor sürümleriyle çalışır (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 ve 5.6)
-
Silero VAD, Unreal Engine 4.27 ve tüm UE5 sürümlerini destekler (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5 ve 5.6)
-
UE 5.5 ve öncesi: Eklenti çakışmalarından kaynaklanan çökmeleri önlemek için Silero VAD kullanılmadan önce NNERuntimeORT devre dışı bırakılmalıdır
-
UE 5.6+ Gereksinimi: Unreal Engine 5.6 ile başlayarak, Silero VAD eklentisi için NNERuntimeORT eklenti bağımlılığının
.uplugin
dosyasına manuel olarak eklenmesi gerekir -
Silero VAD, Windows, Linux, Mac, Android (Meta Quest dahil) ve iOS için mevcuttur
-
Bu eklenti kaynak kodu olarak sağlanır ve kullanımı için bir C++ projesi gerektirir
-
Eklentileri manuel olarak nasıl oluşturacağınız hakkında daha fazla bilgi için Eklenti Oluşturma eğitimine bakın
Kurulduktan sonra, Silero sınıf sağlayıcısı ile SetVADProvider
fonksiyonunu kullanarak VAD sağlayıcınız olarak seçebilirsiniz.
Konuşma Başlangıcı ve Sonu Tespiti
Voice Activity Detection (Ses Aktivitesi Tespiti) yalnızca konuşma varlığını tespit etmekle kalmaz, aynı zamanda konuşma aktivitesinin başlangıcını ve sonunu tespit etmeye de olanak tanır. Bu, oynatma veya yakalama sırasında konuşma başladığında veya bittiğinde olayları tetiklemek için kullanışlıdır.
Minimum konuşma süresi ve sessizlik süresi gibi parametreleri ayarlayarak konuşma başlangıcı ve sonu tespitinin hassasiyetini özelleştirebilirsiniz. Bu parametreler, kısa gürültüler veya konuşmalar arasındaki çok kısa duraklamalar gibi yanlış pozitifleri önlemek için tespiti ince ayarlamaya yardımcı olur.
Minimum Konuşma Süresi
Minimum Konuşma Süresi parametresi, bir konuşma başlangıç olayını tetiklemek için gereken minimum sürekli ses aktivitesi miktarını belirler. Bu, konuşma olarak değerlendirilmemesi gereken kısa gürültüleri filtrelemeye yardımcı olur ve yalnızca sürekli ses aktivitesinin tanındığından emin olur. Minimum Konuşma Süresi için varsayılan değer 300 milisaniyedir.
- 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);
Sessizlik Süresi
Sessizlik Süresi parametresi, bir konuşma bitiş olayını tetiklemek için gereken sessizlik süresini ayarlar. Bu, kelimeler veya cümleler arasındaki doğal duraklamalar sırasında konuşma tespitinin erken sonlanmasını önler. Sessizlik Süresi için varsayılan değer 500 milisaniyedir.
- 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);
Konuşma Delegelerine Bağlama
Konuşma başladığında veya bittiğinde belirli delegelere bağlanabilirsiniz. Bu, konuşma aktivitesine dayalı olarak metin tanımayı başlatma veya durdurma veya diğer ses kaynaklarının ses seviyesini ayarlama gibi özel davranışları tetiklemek için kullanışlıdır.
- 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
});
VAD Sağlayıcılarını Karşılaştırma
- Default VAD
- Silero VAD
Default VAD (libfvad)
Avantajlar:
- Hafif ve verimli
- Tüm platformlarda çalışır
- Minimum kaynak kullanımı
- Mobil ve düşük güçlü cihazlar için uygundur
En İyi Kullanım Alanları:
- Sessiz ortamlarda basit ses tespiti
- Mobil uygulamalar
- Performansın öncelik olduğu projeler
- Evrensel platform desteği gerektiğinde
Silero VAD
Avantajlar:
- Sesi tespit etmede daha yüksek doğruluk
- Zorlu ortamlarda üstün gürültü toleransı
- Farklı konuşmacılar arasında daha tutarlı sonuçlar
- Hassas kontrol için gelişmiş yapılandırma seçenekleri
En İyi Kullanım Alanları:
- Hassas ses tespiti gerektiren uygulamalar
- Arka plan gürültüsü olan ortamlar
- Ses tanıma sistemleri
- Profesyonel ses uygulamaları
Silero VAD, default VAD'a kıyasla daha fazla hesaplama kaynağı gerektirebilir.