تحسين الكلام — DeepFilterNet3
أزل ضوضاء الخلفية من تسجيلات الكلام باستخدام DeepFilterNet3. يعمل النموذج على Neural Engine عبر CoreML لاستدلال فعّال، بينما تجري كلّ معالجة الإشارة (STFT، مجموعة مرشّحات ERB، deep filtering) على وحدة المعالجة المركزيّة عبر Accelerate/vDSP.
البنية
يستخدم 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 — إعادة بناء الصوت النظيف من الطيف المحسَّن
إصدارات النموذج
| الإصدار | الحجم | الدقّة |
|---|---|---|
| INT8 (افتراضي) | ~2.2 MB | كَمّيّ بـ 8 بت |
| FP32 | ~4.3 MB | دقّة كاملة |
يضمّ النموذج نحو 2.1M معلمة. يُستخدَم إصدار INT8 افتراضيًّا، ويوفّر جودة معادلة بحجم النصف.
الاستخدام من سطر الأوامر
# إزالة ضوضاء الصوت (الخرج إلى _denoised.wav)
.build/release/speech denoise noisy.wav
# تحديد ملفّ الخرج
.build/release/speech denoise noisy.wav -o clean.wav
# استخدام إصدار FP32 من النموذج
.build/release/speech denoise noisy.wav --model fp32
الخيارات
| الخيار | الوصف |
|---|---|
--output, -o | مسار ملفّ الخرج (الافتراضي <input>_denoised.wav) |
--model | إصدار النموذج: int8 (افتراضي) أو fp32 |
يعمل DeepFilterNet3 على Neural Engine عبر CoreML، لا على GPU عبر MLX. هذا يعني أنّه يعمل بكفاءة حتّى عندما تكون نماذج أخرى مبنيّة على GPU (ASR وTTS) قيد التشغيل. لا حاجة إلى تجميع metallib.
تنزيلات النماذج
| النموذج | الحجم | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML FP16) | ~4.2 MB | aufklarer/DeepFilterNet3-CoreML |
الدمج مع نماذج أخرى
يُعدّ تحسين الكلام مفيدًا بشكل خاصّ كخطوة معالجة أوّليّة قبل نماذج أخرى:
- قبل التفريغ — أزل الضوضاء من الصوت قبل تشغيل ASR لتحسين معدّل خطأ الكلمات في التسجيلات المشوّشة
- قبل embedding المتحدّث — يُنتج الصوت الأنظف embeddings متحدّث أكثر موثوقيّة
- قبل تحديد المتحدّثين — قد تُحسّن إزالة الضوضاء دقّة التجزئة
# إزالة الضوضاء ثمّ التفريغ
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav
واجهة Swift
import SpeechEnhancement
let model = try await DeepFilterNet3.loadFromHub()
let cleanAudio = try await model.denoise(audioFile: "noisy.wav")
try cleanAudio.write(to: "clean.wav")
متاح أيضًا على Android وLinux عبر ONNX Runtime.