Ses Aktivitesi Tespiti
Akış Ses Dalgası, Yakalanabilir Ses Dalgası gibi türetilmiş türleriyle birlikte Ses Aktivitesi Tespiti'ni (VAD) destekler. VAD, gelen ses verilerini yalnızca ses tespit edildiğinde dahili tamponu doldurmak üzere 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ümleri arasında verimli çalışan hafif bir ses aktivitesi tespit 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 saldırganlığını ayarlayabilirsiniz:
- Blueprint
- C++

// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
Mode 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ın kaçırılabileceğ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ırken çökmelere neden olabilir
-
Silero VAD eklenti eklentisini Google Drive'dan indirin
-
İndirilen arşivden klasörü projenizin
Pluginsklasö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.uplugindosyası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, 5.6 ve 5.7)
-
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, 5.6 ve 5.7)
-
UE 5.5 ve önceki sürümler: 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
.uplugindosyasına manuel olarak eklenmesi gerekmektedir -
Silero VAD Windows, Linux, Mac, Android (Meta Quest dahil) ve iOS için mevcuttur
-
Bu eklenti kaynak kodu olarak sağlanır ve kullanmak için bir C++ projesi gerektirir
-
Eklentileri manuel olarak nasıl oluşturacağınız hakkında daha fazla bilgi için Building Plugins eğitimine bakın
Kurulduktan sonra, Silero sınıf sağlayıcısı ile SetVADProvider işlevini kullanarak VAD sağlayıcınız olarak seçebilirsiniz.
Konuşma Başlangıcı ve Sonu Tespiti
Ses Aktivitesi Tespiti yalnızca konuşmanın 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 hassas bir şekilde 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 sonu olayını tetiklemek için gereken sessizlik süresini belirler. Bu, konuşma algılamasının kelimeler veya cümleler arasındaki doğal duraklamalarda erken sonlanmasını önler. Sessizlik Süresi için varsayılan değer 500 milisaniye'dir.
- 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 Temsilcilerine Bağlama
Konuşma başladığında veya bittiğinde belirli temsilcilere 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
Varsayılan VAD (libfvad)
Avantajlar:
- Hafif ve verimli
- Tüm platformlarda çalışır
- Minimum kaynak kullanımı
- Mobil ve düşük güçlü cihazlar için uygun
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, varsayılan VAD'a kıyasla daha fazla hesaplama kaynağı gerektirebilir.