تحسين الكلام — DeepFilterNet3
أزل ضوضاء الخلفية من تسجيلات الكلام باستخدام DeepFilterNet3. يعمل النموذج على Neural Engine عبر CoreML لاستدلال فعّال، بينما تجري كلّ معالجة الإشارة (STFT، مجموعة مرشّحات ERB، deep filtering) على وحدة المعالجة المركزيّة عبر Accelerate/vDSP.
يتبع مسار DSP بالكامل libdf: تحجيم التحليل 1/960، وقيمة alpha للتطبيع 0.99، والحشو الصفري عند حواف المرشح العميق، والترتيب الصحيح لمصفوفات NumPy بنسقي C/Fortran. على مجموعة ثابتة من 20 مقطعًا من VoiceBank-DEMAND، حقق Swift قيم PESQ 3.097 وSTOI 0.964 وSI-SDR 19.12 dB، مقابل 3.029 و0.962 و18.31 dB لإصدار DF3 الرسمي بلغة Python.
عينة قبل/بعد
مقطع كلام مشوش عولج بواسطة DeepFilterNet3 لتسمع تأثير مزيل الضجيج CoreML قبل تشغيله محلياً.
البنية
يستخدم DeepFilterNet3 بنية ذات فاكَّين تفصل بين تحسين الغلاف الطيفي واستعادة التفاصيل الطيفيّة الدقيقة.
| المرحلة | التفاصيل |
|---|---|
| STFT | تحويل فورييه قصير الزمن عبر vDSP |
| Encoder | 4 طبقات SepConv2d + SqueezedGRU |
| ERB Decoder | قناع sigmoid يُطبَّق على نطاقات التردّد بمقياس ERB |
| DF Decoder | معاملات ترشيح عقديّة بخمسة taps |
| iSTFT | STFT العكسي لإعادة بناء الإشارة في المجال الزمني |
يقدّر ERB Decoder قناع ربح على مقياس Equivalent Rectangular Bandwidth (ERB)، ويتولّى التشكيل الطيفي الواسع. ويتنبّأ DF Decoder بمعاملات ترشيح عقديّة بخمسة taps للتفاصيل الدقيقة، ويطبّق مرشّحات مكتسَبة مباشرة في مجال التردّد.
خطّ المعالجة
- STFT — تحليل الصوت المشوّش إلى تمثيل زمنيّ-تردّديّ باستخدام vDSP
- سمات ERB — تخطيط حُزَم STFT إلى نطاقات تردّد بمقياس ERB
- الشبكة العصبيّة — يعالج Encoder السمات على Neural Engine؛ ويتنبّأ فاكّا ERB وDF بمعاملات التحسين
- التقنيع بـ ERB — تطبيق قناع الربح sigmoid لقمع الضوضاء في الغلاف الطيفي
- Deep filtering — تطبيق المعاملات العقديّة بخمسة taps لاستعادة التفاصيل الطيفيّة الدقيقة
- iSTFT — إعادة بناء الصوت النظيف من الطيف المحسَّن
النموذج
| الإصدار | الحجم | الدقّة |
|---|---|---|
| افتراضي | ~2.2 MB | أوزان بلوحة 8 بت وحساب FP16 |
الاستخدام من سطر الأوامر
# Denoise audio (output to _denoised.wav)
.build/release/speech denoise noisy.wav
# Specify output file
.build/release/speech denoise noisy.wav -o clean.wav
# Use another compatible HuggingFace repository
.build/release/speech denoise noisy.wav --model owner/DeepFilterNet3-CoreML
الخيارات
| الخيار | الوصف |
|---|---|
--output, -o | مسار ملفّ الخرج (الافتراضي <input>_denoised.wav) |
--model | معرّف مستودع نموذج متوافق على HuggingFace (الافتراضي: aufklarer/DeepFilterNet3-CoreML) |
يعمل DeepFilterNet3 على Neural Engine عبر CoreML، لا على GPU عبر MLX. هذا يعني أنّه يعمل بكفاءة حتّى عندما تكون نماذج أخرى مبنيّة على GPU (ASR وTTS) قيد التشغيل. لا حاجة إلى تجميع metallib.
تنزيلات النماذج
| النموذج | الحجم | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML، لوحة 8 بت) | ~2.2 MB | aufklarer/DeepFilterNet3-CoreML |
الدمج مع نماذج أخرى
يُعدّ تحسين الكلام مفيدًا بشكل خاصّ كخطوة معالجة أوّليّة قبل نماذج أخرى:
- قبل التفريغ — أزل الضوضاء من الصوت قبل تشغيل ASR لتحسين معدّل خطأ الكلمات في التسجيلات المشوّشة
- قبل embedding المتحدّث — يُنتج الصوت الأنظف embeddings متحدّث أكثر موثوقيّة
- قبل تحديد المتحدّثين — قد تُحسّن إزالة الضوضاء دقّة التجزئة
# Denoise then transcribe
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav
واجهة Swift
import SpeechEnhancement
let model = try await SpeechEnhancer.fromPretrained()
let cleanAudio = try model.enhance(audio: noisySamples, sampleRate: 48000)
متاح أيضاً على Android، وعلى Linux وWindows عبر Speech Core (ONNX Runtime).