إصلاح تشوه الصوت في أوبونتو 24.04 من خلال تعديلات على إعدادات ALSA

قد ينجم تشوه الصوت في أوبونتو 24.04 عن عدة عوامل: التطبيق، أو PipeWire، أو WirePlumber، أو ALSA، أو برنامج تشغيل النواة، أو حتى جهاز الصوت نفسه. الحل الأمثل هو تحديد الجهاز المتأثر أولًا، ثم تغيير إعدادات كل مخزن مؤقت أو جهاز على حدة. في بيئة سطح مكتب أوبونتو 24.04 القياسية، يعمل PipeWire فوق ALSA، ويتولى WirePlumber إدارة أجهزة ALSA، لذا يُنصح معظم المستخدمين بضبط خصائص ALSA المعروضة عبر WirePlumber قبل استبدال إعدادات ALSA الافتراضية للنظام.

كانت حزمة PipeWire 1.0.4 مُضمّنة في إصدار Ubuntu 24.04، بينما لا تزال حزم Noble الحالية في Ubuntu تستخدم WirePlumber 0.4.17 بدلاً من صيغة التكوين الأحدث 0.5. يُعدّ هذا الإصدار مهمًا لأن WirePlumber 0.4 يستخدم أجزاء Lua ~/.config/wireplumber/main.lua.d/. ينطبق بناء الجملة الأحدث، wireplumber.conf.dالذي قد تراه في وثائق المصدر الحالية، على WirePlumber 0.5 والإصدارات الأحدث. تحقق من الإصدار المُثبّت قبل نسخ أي تكوين.

المراجع الرسمية: ملاحظات إصدار Ubuntu 24.04 LTS ، حزمة WirePlumber الخاصة بـ Ubuntu لتحديثات Noble ، مرجع تكوين ALSA الخاص بـ WirePlumber 0.4 ، ومرجع المكون الإضافي ALSA PCM .

مرجع سريع: ما الذي يجب تجربته أولاً

الأعراضالفحص العملي الأولتعديل محتمل
صوت طقطقة تحت ضغط وحدة المعالجة المركزيةتأكد من الحوض الصحيح وانتبه للتسرباتاختبر حجم فترة ALSA أكبر، مثل 1024 أو 2048 إطارًا
التشويش موجود فقط في محول الصوت الرقمي التناظري USB واحدحدد عقدة ALSA/PipeWire بدقةطبّق القاعدة على تلك العقدة فقط؛ تجنّب تطبيق قاعدة عامة.
ضوضاء عند استيقاظ الجهاز من وضع الخموليُعاد تشغيل الصوت بعد عدة ثوانٍ من الصمتقم بزيادة أو تعطيل مهلة التعليق لتلك العقدة المحددة
مشاكل في تطبيق قديم يعمل بنظام ALSA فقطاختبر التطبيق باستخدام aplayPCM صريحاستخدم لكل مستخدم ~/.asoundrcمع plug/dmix
التشوه عند معدل عينة واحداختبار المواد بتردد 44.1 كيلوهرتز و 48 كيلوهرتزفضّل استخدام معدل نقل بيانات مدعوم من الجهاز، ودع برنامج PipeWire يعيد أخذ العينات عند الحاجة.

1. تحديد مكونات ALSA المادية ومجموعة الصوت

ابدأ بسرد أجهزة التشغيل والتحقق من خادم الصوت النشط. لا تفترض أنه hw:0,0مكبرات الصوت؛ فقد يتغير ترقيم بطاقات الصوت بين عمليات إعادة التشغيل، سواءً كانت سماعات رأس HDMI أو USB أو كاميرات الويب أو محطات الإرساء.

aplay -l
wpctl status
pactl info
wireplumber --version
pipewire --version
يعرض طرفية أوبونتو مخرجات الأمر aplay -l باستخدام جهاز تناظري مدمج وجهاز تشغيل HDMI

التعليق: aplay -lيفصل هذا التصنيف جهاز التشغيل التناظري المدمج عن HDMI، مما يساعد على تجنب تطبيق تعديل ALSA على البطاقة الخاطئة.

إذا pactl infoظهرت رسالة "PulseAudio (on PipeWire)"، فهذا أمر طبيعي في أوبونتو 24.04. يوفر PipeWire واجهة متوافقة مع PulseAudio. في أوبونتو 24.04/Noble الافتراضي، wireplumber --versionمن المفترض أن يظهر الإصدار 0.4.x، إلا إذا قمت بتثبيت إصدار مختلف.

2. تأكد من وجود التشوه قبل تغيير الإعدادات

استخدم اختبارًا قابلًا للتكرار بدلًا من الحكم على التغييرات من مقاطع فيديو عشوائية على الإنترنت. speaker-testيُسهّل استخدام ملف WAV قصير أو مقطع موسيقي معروف إجراء مقارنات قبل وبعد التغيير. تحقق أيضًا مما إذا كانت المشكلة تحدث على مخرج الصوت التناظري، وHDMI، والبلوتوث، وUSB بالتساوي. إذا تأثر مسار واحد فقط، فحدد الحل في ذلك المسار.

speaker-test -c 2 -t wav
aplay /usr/share/sounds/alsa/Front_Center.wav

بالنسبة لأجهزة USB، تعرض النواة معلومات التدفق ضمن /proc/asound/. يختلف المسار الدقيق حسب البطاقة، لذا تحقق /proc/asound/cardsأولاً بدلاً من نسخ رقم البطاقة بشكل أعمى.

يعرض طرفية أوبونتو معلومات دفق ALSA PCM بما في ذلك معدل 48000 هرتز، وقناتين، وتنسيق S16_LE

التعليق: يمكن لمعلومات تدفق ALSA أن تكشف عن معدل العينة النشط وعدد القنوات وتنسيق العينة لتدفق التشغيل؛ رقم البطاقة يعتمد على الجهاز.

3. قم بعمل نسخة احتياطية من إعدادات المستخدم الحالية

قبل إجراء أي تعديلات، احتفظ بأي تعديلات موجودة على ALSA أو WirePlumber. تُعدّ التغييرات على مستوى المستخدم أكثر أمانًا من تعديل الملفات الموجودة ضمن /usr/share، لأن ترقيات الحزم قد تستبدل ملفات النظام.

cp -a ~/.asoundrc ~/.asoundrc.backup 2>/dev/null || true
mkdir -p ~/.config/wireplumber/main.lua.d
cp -a ~/.config/wireplumber/main.lua.d ~/.config/wireplumber/main.lua.d.backup 2>/dev/null || true

إذا كنت قد نسخت سابقًا ملف إعدادات من دليل مكتوب لبرنامج WirePlumber 0.5، فقم بإزالته أو نقله بعيدًا قبل الاختبار على نظام Ubuntu 24.04 الافتراضي. يستخدم برنامج WirePlumber 0.4 و 0.5 تنسيقات إعدادات مختلفة.

4. ضبط سلوك مخزن ALSA المؤقت من خلال WirePlumber 0.4

في نظام أوبونتو 24.04، يُعد هذا عادةً التعديل الأكثر أهمية على مستوى ALSA، لأن WirePlumber يُنشئ ويُهيئ عُقد PipeWire المدعومة بـ ALSA. تُشير وثائق WirePlumber الأصلية api.alsa.period-sizeإلى حجم الفترة بالعينات، وإلى api.alsa.headroomالتخزين المؤقت الإضافي بين مؤشرات الأجهزة والبرامج. تُعامل معظم أجهزة USB كأجهزة دفعية، ويؤثر حجم الفترة على كلٍ من تردد المقاطعة وسلوك التخزين المؤقت.

إنشاء قاعدة مستخدم:

nano ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua

استخدم قاعدة تستهدف عقدة الإخراج التي بها مشكلة فقط. أولاً، احصل على اسم العقدة باستخدام wpctl statusأو pw-cli list-objects Node. ثم عدّل هذا المثال:

local rule = {
  matches = {
    {
      { "node.name", "matches", "alsa_output.*" },
    },
  },
  apply_properties = {
    ["api.alsa.period-size"] = 1024,
    ["api.alsa.headroom"] = 0,
  },
}

table.insert(alsa_monitor.rules, rule)

لا تعتبر القيمة 1024 قيمة سحرية مطلقة، بل هي قيمة اختبارية متحفظة. إذا استمر التشوه، قارن القيم 512 و1024 و2048 واحدة تلو الأخرى. قد تُحسّن الفترات الزمنية الأطول من تحمل تأخيرات الجدولة في بعض الأنظمة، ولكنها تزيد من زمن الاستجابة؛ بينما قد تُقلل الفترات الزمنية الأقصر من زمن الاستجابة، ولكنها تزيد من وتيرة المقاطعات، وقد تُعرّض النظام لنقص البيانات عند تعرضه لضغط عالٍ. احتفظ بأصغر قيمة تظل مستقرة لحجم العمل لديك.

إذا كان الجهاز يعاني من خلل في عمليات الإدخال/الإخراج المُرتبطة بالذاكرة، فإن WirePlumber يُتيح أيضًا الوصول إلى الذاكرة api.alsa.disable-mmap. تُشير وثائق المصدر بوضوح إلى أن هذا حل احتياطي للتوافق، وتُلاحظ أن الوصول للقراءة/الكتابة يكون أبطأ، لذا لا تُفعّله إلا إذا كان الخلل مرتبطًا بشكل واضح بسلوك الذاكرة المُرتبطة بالذاكرة.

["api.alsa.disable-mmap"] = true,

خيار آخر خاص بالجهاز هو تعطيل خاصية التعليق session.suspend-timeout-seconds. إذا كان محول الصوت الرقمي إلى التناظري (DAC) يُصدر صوت طقطقة أو تشويشًا في كل مرة يستيقظ فيها، فإن تجربة مهلة زمنية أطول - أو 0تعطيل وضع التعليق لهذا الجهاز - قد يساعد في تحديد السبب. يُبقي تعطيل وضع التعليق جهاز ALSA مشغولًا، لذا فهو حل وسط وليس توصية افتراضية.

5. استخدم ملف .asoundrc فقط عندما يستخدم التطبيق ALSA بشكل مباشر.

قد يكون استخدام ملف PCM لكل مستخدم ~/.asoundrcمفيدًا للتطبيقات القديمة التي تتجاوز PipeWire وتفتح ملفات ALSA PCM مباشرةً. كما قد يكون مفيدًا لاختبار معدل العينة الثابت أو سلوك المزج البرمجي. مع ذلك، قد يؤدي تجاوز إعدادات ALSA الافتراضية على مستوى النظام إلى تعارض مع إضافة PipeWire ALSA، لذا يُنصح باستخدام ملف PCM مُسمى كلما أمكن ذلك بدلاً من استبداله pcm.!default.

dmixعلى سبيل المثال، يدعم الملحق الخاص بـ ALSA القيم الصريحة rateلـ period_sizeو و و buffer_size. يمكن أن يبدو ملف PCM التجريبي المسمى على النحو التالي:

pcm.stable_test {
    type plug
    slave.pcm "stable_dmix"
}

pcm.stable_dmix {
    type dmix
    ipc_key 2048
    ipc_key_add_uid true
    slave {
        pcm "hw:0,0"
        rate 48000
        period_time 0
        period_size 1024
        buffer_size 4096
    }
}

استبدل hw:0,0البطاقة والجهاز الفعليين من الموقع المذكور aplay -l. ثم اختبر دون تغيير الإعدادات الافتراضية للنظام.

aplay -D stable_test /usr/share/sounds/alsa/Front_Center.wav
باستخدام برنامج GNU nano على نظام Ubuntu، يتم تعديل ملف .asoundrc الخاص بالمستخدم مع إعدادات PCM للأجهزة، ومعدل 48000 هرتز، وحجم الفترة 1024، وحجم المخزن المؤقت 4096

التعليق: يمكن لكل مستخدم .asoundrcتحديد معلمات ALSA ثابتة للاختبار الخاضع للتحكم؛ hwيجب استخدام الهدف المباشر بحذر لأنه يتجاوز تحويل التنسيق التلقائي.

يشير مشروع ALSA إلى أن dmixلديه تكوينًا أساسيًا ثابتًا ما لم تُحدد قيمًا في تعريف الجهاز التابع، بينما plugيمكن للملحق إجراء تحويل التنسيق ومعدل البت. لهذا السبب، يُعدّ الجمع بين plugPCM مُسمى وPCM مُعدّل بشكل منفصل dmixأكثر أمانًا للتجارب من إجبار كل برنامج على فتح الجهاز الخام مباشرةً.

6. أعد تشغيل خدمات الصوت الخاصة بالمستخدم وأعد الاختبار

بعد تغيير قاعدة WirePlumber، أعد تشغيل حزمة الصوت الخاصة بالمستخدم. أغلق التطبيقات التي تستخدم الصوت حاليًا أولًا.

systemctl --user restart wireplumber pipewire pipewire-pulse

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

لوحة إعدادات الصوت في أوبونتو تعرض مكبرات الصوت المدمجة المحددة بملف تعريف إخراج ستيريو تناظري

التعليق: بعد إعادة تشغيل خدمات الصوت، تحقق من أن نظام Ubuntu لا يزال يحدد جهاز الإخراج والملف الشخصي المقصودين قبل الحكم على ما إذا كان التشوه قد تم إصلاحه.

كيفية الحكم على نجاح التعديل

  • يتم تشغيل ملف الاختبار نفسه بشكل متكرر دون حدوث طقطقة أو طنين أو تشويش أو انقطاعات قصيرة.
  • لا يعود التشوه بعد أن يبقى الجهاز في وضع الخمول ثم يستيقظ.
  • لا تزال تطبيقات سطح المكتب العادية والمتصفحات ومكالمات الفيديو تستخدم جهاز الإخراج المتوقع.
  • يظل زمن الاستجابة مقبولاً لحالة استخدامك؛ إذ يمكن لتشغيل الموسيقى تحمل تخزين مؤقت أكثر من المراقبة المباشرة أو الألعاب.
  • يظل الإصلاح مستقرًا بعد تسجيل الخروج ثم تسجيل الدخول مرة أخرى أو إعادة تشغيل الجهاز.

عندما لا تكون تعديلات ALSA هي الحل المناسب

لا تُزيد من حجم المخزن المؤقت إذا كان العطل ناتجًا بوضوح عن تشويه في الدائرة الكهربائية، أو كابل غير مُحكم، أو إشارة دخل تناظرية مُشبعة، أو موزع USB معطل، أو سماعة تالفة. تحقق أيضًا من مستويات الخلاط alsamixer؛ فالتشويه الذي يحدث فقط عند مستوى صوت قريب من 100% قد يكون مرتبطًا بمستوى التضخيم وليس بمشكلة في جدولة الإشارات.

إذا بدأت المشكلة بعد تحديث نواة النظام أو البرامج الثابتة، فجرّب نواة أخرى مدعومة من قائمة GRUB قبل إنشاء قواعد صوتية أكثر تعقيدًا. إذا كانت المشكلة تقتصر على البلوتوث، فركّز على برنامج ترميز/ملف تعريف البلوتوث بدلًا من إعدادات فترة ALSA. إذا كانت المشكلة تقتصر على HDMI، فتحقق أولًا من ملف تعريف HDMI وجهاز الاستقبال/الشاشة.

قائمة التحقق من التراجع

  • قم بإزالة أو إعادة تسمية ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua.
  • استعد ~/.asoundrcمن النسخة الاحتياطية، أو قم بإزالة الملف المخصص للاختبار فقط.
  • أعد التشغيل wireplumber، pipewireو pipewire-pulse.
  • أعد تشغيل البرنامج wpctl statusللتأكد speaker-testمن عودة السلوك الافتراضي.

خلاصة القول

بالنسبة لنظام Ubuntu 24.04، ابدأ بتطبيق قواعد ALSA المُستهدفة في WirePlumber 0.4 بدلاً من استبدالها على مستوى النظام بأكمله .asoundrc. حدد عقدة الإخراج بدقة، وغيّر خاصية واحدة في كل مرة، وقارن ملف الصوت التجريبي نفسه بعد كل تغيير. يُعد حجم الفترة 1024 نقطة بداية تشخيصية مناسبة، ولكن القيمة الصحيحة تعتمد على الجهاز وحجم العمل. احتفظ بقواعد PCM disable-mmapالمُخصصة، وعلق التغييرات، واستخدمها فقط dmixفي الحالات التي تُشير فيها اختباراتك تحديدًا إلى هذه السلوكيات.

اترك تعليقاً

حمّل لعبة FlightGear مجاناً: دليل التثبيت الرسمي

حمّل لعبة FlightGear مجاناً: دليل التثبيت الرسمي

حمّل برنامج FlightGear مجاناً من الموقع الرسمي. قارن بين حزم Windows و macOS و Linux، وثبّت ملفات البيانات، وابدأ رحلتك الأولى.

أو كي سامبلر: برنامج مجاني وبسيط لأخذ عينات موسيقية لإيقاعات لوحة المفاتيح

أو كي سامبلر: برنامج مجاني وبسيط لأخذ عينات موسيقية لإيقاعات لوحة المفاتيح

يقوم برنامج OKSampler بربط مقاطع MP3 بمفاتيح لوحة المفاتيح، كما يتيح تكرار الصوت. تعرّف على وظائف هذا البرنامج المجاني القديم، وحدود ميزاته القديمة، وما يجب التحقق منه قبل التنزيل.

تطبيق مهام جوجل لسطح المكتب: كيفية استخدامه على الكمبيوتر

تطبيق مهام جوجل لسطح المكتب: كيفية استخدامه على الكمبيوتر

افتح مهام جوجل في متصفح، وأضف اختصارًا لمتصفح كروم أو قم بتشغيلها على غرار التطبيقات، وقم بإدارة المهام المؤرخة من خلال التقويم وجيميل.

كيفية لعب لعبة Don't Starve Together على نظام لينكس

كيفية لعب لعبة Don't Starve Together على نظام لينكس

قم بتثبيت نسخة لينكس من لعبة Don't Starve Together عبر Steam، وابدأ عالمًا جديدًا، أو انضم إلى أصدقائك باتباع خطوات الإعداد واستكشاف الأخطاء وإصلاحها هذه.

كيفية تشغيل لعبة Squad على نظام Linux باستخدام Steam Proton

كيفية تشغيل لعبة Squad على نظام Linux باستخدام Steam Proton

قم بإعداد Squad على نظام Linux باستخدام Steam Play و Proton، ثم قم بتثبيت اللعبة، واختر أداة التوافق، وقم باستكشاف مشكلات مكافحة الغش وإصلاحها.

كيفية تثبيت نظام لينكس منت ديبيان الإصدار الخامس "إلسي" من خلال USB

كيفية تثبيت نظام لينكس منت ديبيان الإصدار الخامس "إلسي" من خلال USB

قم بتنزيل ملف LMDE 5 ISO المؤرشف والتحقق منه، ثم أنشئ قرص USB قابلًا للإقلاع، واختر إعدادات التثبيت الآمنة. انتهى دعم Elsie؛ راجع إصدار LMDE الحالي.

كيفية إنشاء قرص USB قابل للتشغيل لنظام التشغيل Windows 11 على نظام Linux

كيفية إنشاء قرص USB قابل للتشغيل لنظام التشغيل Windows 11 على نظام Linux

قم بإنشاء قرص USB لتثبيت نظام التشغيل Windows 11 على نظام Linux باستخدام Ventoy: احصل على ملف ISO الرسمي، وقم بتثبيت Ventoy بأمان، وانسخ الصورة، وقم بتشغيل جهاز الكمبيوتر المستهدف.

كيفية تشغيل لعبة It Takes Two على نظام لينكس باستخدام Steam Proton

كيفية تشغيل لعبة It Takes Two على نظام لينكس باستخدام Steam Proton

تعلم كيفية تشغيل لعبة It Takes Two على نظام Linux باستخدام Steam Proton، وتثبيت إصدار Steam، وتمكين التوافق، وإعداد وضع اللعب التعاوني، وحل مشاكل التشغيل.

كيفية تثبيت برنامج Wireshark على أنظمة Linux: أوبونتو، فيدورا، آرتش، وغيرها

كيفية تثبيت برنامج Wireshark على أنظمة Linux: أوبونتو، فيدورا، آرتش، وغيرها

قم بتثبيت Wireshark على Ubuntu أو Debian أو Fedora أو Arch أو openSUSE باستخدام أوامر الحزمة الحالية، ثم قم بتكوين التقاط الحزم المباشر بأمان.

كيفية لعب Slay the Spire على نظام Linux: قم بتثبيته وتشغيله باستخدام Steam

كيفية لعب Slay the Spire على نظام Linux: قم بتثبيته وتشغيله باستخدام Steam

قم بتثبيت Steam على نظام Linux، ثم احصل على نسخة Slay the Spire الأصلية لنظام Linux من مكتبتك، وقم بتشغيلها. يتضمن ذلك خطوات عملية لحل مشاكل بدء التشغيل الشائعة.