Konuşma İyileştirme — DeepFilterNet3
DeepFilterNet3 kullanarak konuşma kayıtlarındaki arka plan gürültüsünü temizleyin. Model, verimli çıkarım için CoreML üzerinden Neural Engine'de çalışır; tüm sinyal işleme (STFT, ERB filtre bankası, deep filtering) ise Accelerate/vDSP üzerinden CPU'da koşar.
Mimari
DeepFilterNet3, spektral zarf iyileştirmesini ince taneli spektral detay kurtarmadan ayıran çift-decoder bir mimariye sahiptir.
| Aşama | Ayrıntılar |
|---|---|
| STFT | vDSP üzerinden kısa zamanlı Fourier dönüşümü |
| Encoder | 4 SepConv2d katmanı + SqueezedGRU |
| ERB Decoder | ERB ölçeğindeki frekans bantlarına uygulanan sigmoid maske |
| DF Decoder | 5-tap karmaşık değerli filtreleme katsayıları |
| iSTFT | Zaman alanındaki sinyali yeniden oluşturmak için ters STFT |
ERB Decoder, Eşdeğer Dikdörtgen Bant Genişliği (ERB) ölçeğinde bir kazanç maskesi tahmin ederek geniş spektral şekillendirmeyi yönetir. DF Decoder ise ince detay için 5-tap karmaşık filtreleme katsayıları öngörerek öğrenilmiş filtreleri doğrudan frekans alanında uygular.
İşleme Pipeline'ı
- STFT — Gürültülü sesi vDSP ile zaman-frekans temsiline ayrıştırın
- ERB Özellikleri — STFT bin'lerini ERB ölçeğindeki frekans bantlarına eşleyin
- Sinir Ağı — Encoder, özellikleri Neural Engine'de işler; ERB ve DF decoder'ları iyileştirme parametrelerini tahmin eder
- ERB Maskelemesi — Spektral zarftaki gürültüyü bastırmak için sigmoid kazanç maskesi uygulayın
- Deep Filtering — İnce spektral detay kurtarma için 5-tap karmaşık katsayıları uygulayın
- iSTFT — İyileştirilmiş spektrumdan temiz sesi yeniden oluşturun
Model Varyantları
| Varyant | Boyut | Hassasiyet |
|---|---|---|
| INT8 (varsayılan) | ~2.2 MB | 8-bit nicelendirilmiş |
| FP32 | ~4.3 MB | Tam hassasiyet |
Modelin yaklaşık 2.1M parametresi vardır. INT8 varyantı varsayılan olarak kullanılır ve yarı boyutta eşdeğer kalite sağlar.
CLI Kullanımı
# Sesi temizle (çıktı _denoised.wav)
.build/release/speech denoise noisy.wav
# Çıktı dosyasını belirt
.build/release/speech denoise noisy.wav -o clean.wav
# FP32 model varyantını kullan
.build/release/speech denoise noisy.wav --model fp32
Seçenekler
| Seçenek | Açıklama |
|---|---|
--output, -o | Çıktı dosya yolu (varsayılan <input>_denoised.wav) |
--model | Model varyantı: int8 (varsayılan) veya fp32 |
DeepFilterNet3, MLX üzerinden GPU'da değil, CoreML üzerinden Neural Engine'de çalışır. Bu, diğer GPU tabanlı modeller (ASR, TTS) çalışırken bile verimli çalıştığı anlamına gelir. metallib derlemesine gerek yoktur.
Model İndirmeleri
| Model | Boyut | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML FP16) | ~4.2 MB | aufklarer/DeepFilterNet3-CoreML |
Diğer Modellerle Birleştirme
Konuşma iyileştirme, diğer modellerden önce bir ön işleme adımı olarak özellikle yararlıdır:
- Transkripsiyondan önce — Gürültülü kayıtlarda kelime hata oranını iyileştirmek için ASR'den önce sesi temizleyin
- Konuşmacı embedding'inden önce — Daha temiz ses, daha güvenilir konuşmacı embedding'leri üretir
- Diyarizasyondan önce — Gürültü giderme, segmentasyon doğruluğunu artırabilir
# Önce temizle sonra transkripte et
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav
Swift API
import SpeechEnhancement
let model = try await DeepFilterNet3.loadFromHub()
let cleanAudio = try await model.denoise(audioFile: "noisy.wav")
try cleanAudio.write(to: "clean.wav")
Ayrıca ONNX Runtime aracılığıyla Android ve Linux'ta da mevcuttur.