استعادة الكلام — Sidon
أعِد الكلام المشوّش أو ذا الصدى أو محدود النطاق إلى صوت نظيف بمعدّل 48 kHz باستخدام Sidon — نموذج واحد يجمع بين إزالة الضوضاء وإزالة الصدى وتوسيع عرض النطاق. يعمل بالكامل على الجهاز (CoreML على Apple Silicon، وONNX Runtime في غيره). ولأنّه يعيد بناء الكلام من تمثيلات مكتسَبة بدلًا من مجرّد تقنيع الضوضاء، فهو فعّال بشكل خاصّ في تحضير مرجع استنساخ الصوت: ينظّف التسجيل مع الحفاظ على هويّة المتحدّث.
تحسين الكلام (DeepFilterNet3) هو مُخمِّد ضوضاء صغير جدًّا يعمل في الوقت الحقيقي. أمّا Sidon فنموذج استعادة توليديّة أثقل: يزيل الصدى أيضًا ويعيد بناء التفاصيل عالية التردّد إلى 48 kHz. استخدم DeepFilterNet3 لإزالة الضوضاء المباشرة، وSidon للتنظيف غير المتزامن للمراجع والتسجيلات الأرشيفيّة.
البنية
Sidon خطّ معالجة من مرحلتين: متنبّئ سمات ذاتيّ الإشراف ينقّي تمثيل الكلام، ثمّ vocoder عصبيّ يعيد تركيب موجة نظيفة منه.
| المرحلة | التفاصيل |
|---|---|
| الواجهة الأماميّة | سمات log-mel من w2v-BERT 2.0 SeamlessM4T (16 kHz ← 160 بُعدًا) |
| المتنبّئ | w2v-BERT 2.0 (8 طبقات) مع رأس تنقية مضبوط بـ LoRA ← سمات منقّاة |
| الـ Vocoder | فاكّ DAC يعيد تركيب صوت 48 kHz من السمات المنقّاة |
خطّ المعالجة هو 16 kHz audio → features → predictor → DAC decoder → 48 kHz audio. الإجمالي ≈ 246M معلمة (193.6M للمتنبّئ + 52.4M للـ vocoder).
خطّ المعالجة
- استخراج السمات — حساب سمات log-mel من w2v-BERT 2.0 من المدخل بمعدّل 16 kHz (Accelerate/vDSP على Apple، وC++ على المنصّات الأخرى)
- المتنبّئ — يخطّط مرمّز w2v-BERT المضبوط بـ LoRA السمات المشوّشة/ذات الصدى إلى سمات نظيفة
- الـ Vocoder — يعيد فاكّ DAC بناء موجة نظيفة بمعدّل 48 kHz من السمات المنقّاة
- التقطيع — يُعالَج الصوت الأطول في نوافذ ثابتة (~10 ث) ويُخاط على المحور الزمنيّ بمعدّل 48 kHz
الجودة
على مقطع مرجعيّ ذي صدى، ترفع الاستعادة الجودة الإدراكيّة مع الحفاظ على هويّة المتحدّث سليمة (MOS بلا مرجع):
| الصوت | DNSMOS OVRL | UTMOS | تشابه المتحدّث (cosine) |
|---|---|---|---|
| المدخل (ذو صدى) | 2.90 | 2.99 | — |
| بعد استعادة Sidon | 3.29 | 3.40 | 0.79 |
أكبر مكسب في درجة الخلفية (إزالة الصدى). ويُحافَظ على تشابه المتحدّث، وهو ما يهمّ عند تنظيف مرجع استنساخ.
إصدارات النموذج
يضغط التكميم المتنبّئ؛ بينما يبقى vocoder الـ DAC بدقّة أعلى (لجودة الصوت). على Apple، يستخدم int8 تجزئة k-means؛ وعلى ONNX، يكون int8 على الأوزان فقط لكلّ قناة.
| الصيغة | الدقّة | حجم الحزمة |
|---|---|---|
| CoreML | int8 (المتنبّئ) + FP16 (vocoder) | ~407 MB |
| CoreML | FP16 | ~713 MB |
| ONNX | int8 (المتنبّئ) + FP16 (vocoder) | ~286 MB |
| ONNX | FP16 | ~470 MB |
| ONNX | FP32 | ~939 MB |
الاستخدام من سطر الأوامر
# Restore audio (denoise + dereverb) to clean 48 kHz
.build/release/speech restore noisy.wav -o clean.wav
# Clean a voice-cloning reference before TTS
.build/release/speech speak "Hello world" --voice-sample ref.wav --clean-reference
يُخرج Sidon صوتًا بمعدّل 48 kHz بغضّ النظر عن معدّل عيّنة المدخل (يرفع معدّل العيّنات ويستعيد عرض النطاق). إنّه نموذج استعادة غير متزامن — أثقل من DeepFilterNet3 — ويُفضَّل تشغيله على ملفّ لا على بثّ مباشر.
تنزيلات النماذج
| النموذج | الصيغة | HuggingFace |
|---|---|---|
| Sidon (CoreML) | fp16 + int8 | aufklarer/Sidon-CoreML |
| Sidon (ONNX) | int8 + fp16 + fp32 | soniqo/Sidon-ONNX |
الدمج مع نماذج أخرى
يُعدّ Sidon أكثر فائدة كخطوة معالجة أوّليّة:
- قبل استنساخ الصوت — نظّف مرجعًا مشوّشًا/ذا صدى ليرث الاستنساخُ الصوتَ لا الغرفة
- قبل التفريغ — استعِد التسجيلات الأرشيفيّة أو البعيدة المجال لتحسين دقّة ASR
- قبل embedding المتحدّث — يُنتج الصوت الأنظف embeddings أكثر موثوقيّة
واجهة Swift
import SpeechRestoration
let restorer = try await SpeechRestorer.fromPretrained()
let cleanAudio = try restorer.restore(audio: noisySamples, sampleRate: 16000)
متاح أيضًا على Android وLinux وWindows عبر Speech Core (ONNX Runtime). مبنيّ على Sidon (MIT).