Ses Aktivitesi Tespiti
Streaming Sound Wave, Capturable Sound Wave gibi türetilmiş türleriyle birlikte Ses Aktivitesi Tespitini (VAD) destekler. VAD, yalnızca ses algılandığında dahili tamponu doldurmak için gelen ses verilerini filtreler.
Plugin iki VAD uygulaması sunar:
- Default VAD
- Silero VAD
Varsayılan uygulama, Runtime Audio Importer tarafından desteklenen tüm platformlar ve motor sürümlerinde verimli bir şekilde çalışan hafif bir ses aktivitesi tespit kütüphanesi olan libfvad'ı kullanır.
Bir eklenti uzantısı olarak sunulan Silero VAD, özellikle gürültülü ortamlarda daha yüksek doğruluk sağlayan sinir ağı tabanlı bir ses aktivitesi algılayıcısıdır. Konuşmayı arka plan gürültüsünden daha güvenilir bir şekilde ayırt etmek için makine öğrenimini kullanır.
Temel Kullanım
Bir sound wave oluşturduktan sonra VAD'yi etkinleştirmek için ToggleVAD fonksiyonunu 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'ı 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'in sesi ne kadar agresif bir şekilde filtrelediğini kontrol eder. Daha yüksek değerler daha kısıtlayıcıdır, yani yanlış pozitif bildirme olasılıkları daha düşüktür ancak bazı konuşmaları kaçırabilirler.
VAD Sağlayıcıları
VAD'i ToggleVAD fonksiyonu ile etkinleştirdikten sonra, ihtiyaçlarınıza uygun farklı Ses Etkinliği 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 eklenti olarak 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 Extension
Silero VAD, sinir ağları kullanarak daha doğru konuşma algılama sağlar. Kullanmak için:
-
Runtime Audio Importer eklentisinin projenizde yüklü olduğundan emin olun
-
UE 5.5 ve öncesi için: Silero VAD uzantı eklentisini indirmeden önce, projenizde NNERuntimeORT'un devre dışı olduğundan emin olun. NNERuntimeORT'un etkin olması, bu motor sürümlerinde Silero VAD kullanırken çakışmalardan dolayı çökmelere neden olabilir
-
Silero VAD uzantı eklentisini buradan indirin
-
İndirilen arşivdeki klasörü projenizin
Pluginsklasörüne çıkarın (bu klasör yoksa oluşturun) -
UE 5.6 ve sonrası için:
RuntimeAudioImporterSileroVAD.uplugindosyasını düzenleyerek NNERuntimeORT bağımlılığını ekleyin. "Plugins" alanında, RuntimeAudioImporter eklemesinden sonra, ekleyin:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- Projenizi yeniden derleyin (bu uzantı bir C++ projesi gerektirir)
-
Varsayılan VAD, Runtime Audio Importer tarafından desteklenen tüm motor sürümleriyle (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 ve 5.8) çalışır
-
Silero VAD, Unreal Engine 4.27 ve tüm UE5 sürümlerini (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7 ve 5.8) destekler
-
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. Özellikle UE 5.3'te NNERuntimeORTCpu ve NNERuntimeORTGpu da devre dışı bırakılmalıdır
-
UE 5.6+ Gereksinimi: Unreal Engine 5.6'dan itibaren Silero VAD uzantısı, NNERuntimeORT eklenti bağımlılığının
.uplugindosyasına manuel olarak eklenmesini gerektirir -
Silero VAD; Windows, Linux, Mac, Android (Meta Quest dahil) ve iOS için kullanılabilir
-
Bu uzantı kaynak kodu olarak sunulur ve kullanmak için bir C++ projesi gerektirir
-
Eklentileri manuel olarak derleme hakkında daha fazla bilgi için Building Plugins öğreticisine bakın
Kurulumdan sonra, SetVADProvider fonksiyonunu Silero sınıf sağlayıcısı ile kullanarak bunu VAD sağlayıcınız olarak seçebilirsiniz.
Konuşma Başlangıcı ve Sonu Algılama
Voice Activity Detection yalnızca konuşma varlığını algılamakla kalmaz, aynı zamanda konuşma etkinliğinin başlangıcını ve sonunu algılamaya da 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.
Konuşma başlangıcı ve sonu algılamanın hassasiyetini minimum konuşma süresi ve sessizlik süresi gibi parametreleri ayarlayarak özelleştirebilirsiniz. Bu parametreler, kısa gürültüler veya konuşma arasındaki çok kısa duraklamalar gibi yanlış pozitifleri önlemek için algılamayı ince ayarlamaya yardımcı olur.
Minimum Konuşma Süresi
Minimum Konuşma Süresi parametresi, bir konuşma başlangıcı olayını tetiklemek için gereken minimum sürekli ses etkinliği miktarını ayarlar. Bu, konuşma olarak değerlendirilmemesi gereken kısa gürültüleri filtreleyerek yalnızca sürekli ses etkinliğinin tanınmasını sağlar. 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 algılamanın 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 Delegate'lerine Bağlanma
Konuşma başladığında veya bittiğinde belirli delegate'lere bağlanabilirsiniz. Bu, konuşma etkinliğine dayalı olarak özel davranışları tetiklemek için kullanışlıdır; örneğin metin tanımayı başlatmak veya durdurmak ya da diğer ses kaynaklarının ses seviyesini ayarlamak gibi.
- 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
- Varsayılan 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 uygundur
En uygun olduğu alanlar:
- Sessiz ortamlarda basit ses algılama
- Mobil uygulamalar
- Performansın öncelikli olduğu projeler
- Evrensel platform desteği gerektiğinde
Silero VAD
Avantajlar:
- Sesi algılamada 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 uygun olduğu alanlar:
- Hassas ses algılaması 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.