إصلاح الأخطاء: تشويه الصوت وتعليق PipeWire (Linux)

يصف هذا المستند كيفية حل تشويه الصوت (“klirren”)، والمؤثرات الصوتية الآلية، وتوقف صوت النظام الذي يمكن أن يحدث عند استخدام SL5-aura-service إلى جانب تطبيقات الوسائط الأخرى مثل OBS، أو AnyDesk، أو تدفقات TTS عالية التردد.

                                                            ## أعراض
  • يبدو إخراج/إدخال الصوت مشوهًا أو معدنيًا أو “مرنًا”.

  • يتوقف صوت النظام مع ظهور الرسالة: “جارٍ إنشاء اتصال بـ PulseAudio” أو “الرجاء الانتظار”.

  • إجمالي فقدان الصوت بعد تحميل وحدة المعالجة المركزية العالية أو استخدام الدفق المتزامن.

  • تظهر سجلات دفتر اليومية: spa.alsa: hw:X: snd_pcm_status error: لا يوجد مثل هذا الجهاز.

                                                 ## السبب الجذري
    

في Manjaro وغيره من توزيعات Linux الحديثة، يقوم PipeWire بإدارة الصوت. عادة ما ينبع التشويه من:

  1. ** نقص سعة المخزن المؤقت: ** تعارض بين التدفقات المتزامنة (على سبيل المثال، يقوم AnyDesk بالتقاط الصوت أثناء تشغيل TTS/OBS).

  2. ** عدم تطابق معدل العينة: ** التبديل المتكرر بين 44.1 كيلو هرتز و48 كيلو هرتز.

  3. مشكلات توقيت USB: يؤدي ارتفاع حمل الناقل إلى قطع اتصال سماعات رأس USB (مثل Plantronics/Poly) مؤقتًا.

                                                                       ---
    
                                                           ## الحلول
    

1. الاسترداد الفوري (إعادة الضبط “النووي”)

إذا تم تجميد حزمة الصوت أو تشويهها، قم بإنهاء جميع العمليات المتعلقة بالصوت. سيتم إعادة تشغيلهم تلقائيًا على الفور.

# Force kill PipeWire and its PulseAudio compatibility layer
killall -9 pulseaudio pipewire pipewire-pulse
                ### 2. إعدادات الوقاية والاستقرار

                                            #### تعطيل AnyDesk Audio

غالبًا ما يحاول برنامج AnyDesk الاتصال بجهاز الصوت، مما يتسبب في حدوث تعارضات في الأجهزة.

  • الإجراء: افتح إعدادات AnyDesk -> الصوت -> قم بتعطيل “إرسال الصوت” و “إعادة إنتاج الصوت”.

                  #### إصلاح معدل عينة PipeWire (مستحسن)
    

قم بإجبار PipeWire على البقاء عند 48 كيلو هرتز لتجنب إعادة تشكيل القطع الأثرية أثناء تشغيل TTS.

  1. قم بإنشاء دليل التكوين: mkdir -p ~/.config/pipewire

  2. انسخ التكوين الافتراضي: cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/

  3. قم بتحرير ~/.config/pipewire/pipewire.conf وقم بتعيين:

default.clock.rate = 48000
                                 4. إعادة تشغيل الخدمات:
systemctl --user restart pipewire pipewire-pulse wireplumber
                                                                      ---

                 ## 3. استرداد ما بعد الإنتاج (FFmpeg)

إذا قمت بتسجيل جلسة وكان الصوت مشوهًا (“clirring”)، فاستخدم سلسلة التصفية ffmpeg التالية لإصلاح الملف.

                              ### أمر الإصلاح الموصى به

يطبق هذا الأمر أداة إزالة المقص وتقليل الضوضاء ومرشح الترددات المنخفضة لإزالة القطع الأثرية الرقمية عالية التردد دون إعادة تشفير الفيديو.

                                   تم اختباره وجيد جدًا:
ffmpeg -i input_video.mp4 
    -af "adeclip, afftdn, lowpass=f=5000, volume=1.5" \
    -c:v copy reparatur_output.mp4  
                قد يكون أفضل مع (لم يتم اختباره):
ffmpeg -i input_video.mp4 \
  -af "adeclip, afftdn, lowpass=f=3500, volume=1.8" \
  -c:v copy repaired_audio_output.mp4
                                              لم يتم اختباره:
ffmpeg -i input_video.mp4 -af "arnndn=m=cb.rnnn, lowpass=f=5000" -c:v copy ki_reparatur.mp4
                                       ** انهيار التصفية: **
        - `adeclip`: لتقريب مسامير القطع الرقمية.
  • afftdn: يقلل من الضوضاء الرقمية المستندة إلى FFT.

  • lowpass=f=3500: يقطع الترددات التي تزيد عن 3.5 كيلو هرتز حيث يحدث معظم “التشويش” (يجعل الصوت أكثر وضوحًا/أكثر دفئًا).

  • الحجم=1.8: يعوض فقدان الحجم أثناء التصفية.

  • -c:v نسخة: يحافظ على جودة الفيديو الأصلية (سريعة للغاية).

                                                                        ---
    
                                               ## أدوات التصحيح
    

لمراقبة سلامة الصوت في الوقت الفعلي أثناء التطوير:

  • pw-top: يعرض الأخطاء في الوقت الفعلي (عمود ERR) وحالة المخزن المؤقت.

  • journalctl --user -u Pipewire: التحقق من قطع اتصال الأجهزة.