الخطوة التانية: الـ amplitude بتبقى منفصلة
الـ sampling (أخذ العينات) بيحل نص مشكلة التحويل من تناظري لرقمي: بيخلّي الزمن منفصل، فبيحوّل الموجة المستمرة لسلسلة قيم على فترات ثابتة. بس القيم دي لسه مستمرة — تقدر تاخد أي رقم حقيقي جوه مدى معيّن. والنظام الرقمي الحقيقي ميقدرش يخزّن ويعالج غير مجموعة محدودة من الأرقام، فلازم عملية تانية: الـ quantization (التكميم)، يعني إنك تودّي قيم الـ amplitude (السعة) المستمرة لمجموعة محدودة من المستويات المنفصلة.
الـ quantization مفيش منه مهرب في أي نظام رقمي لازم يخزّن أو يعالج signals حقيقية. كل تسجيل صوت، وكل صورة رقمية، وكل قراءة sensor فيها quantization. وعلى عكس الـ aliasing (الإيهام الترددي) — اللي ممكن يتمنع خالص بالـ anti-aliasing filter المناسب — الـ quantization دايمًا بيدخّل غلطة صغيرة بس مبتتشالش. وإنك تفهم الغلطة دي وتقيسها وتخلّيها في حدود مقبولة هو فن اختيار الـ bit depth (عمق البت) المناسب.
الـ quantization بيودّي كل قيمة sample مستمرة لأقرب قيمة في مجموعة محدودة من المستويات المسموحة. والفرق بين القيمة الحقيقية والقيمة المقرّبة اسمه الـ quantization error (خطأ التكميم) (أو الـ quantization noise). وبـ b bit، بيبقى عندك L = 2b مستوى مختلف.
المستويات والـ step size والـ bit depth
الـ quantizer اللي فيه b bit بيقسم مدى الـ amplitude بتاع الـ input [xmin, xmax] لـ L = 2b فترة متساوية. وعرض كل فترة هو الـ quantization step size (حجم خطوة التكميم) Δ:
الـ input بيتقرّب لأقرب مستوى. كل sample بتتقرّب بحيث الفرق عن قيمتها الحقيقية ميعدّيش ±Δ/2. وغلطة التقريب دي — الـ quantization noise — هي اللي بتفصل التمثيل المستمر المثالي عن التمثيل الرقمي العملي. وكل ما تستخدم bits أكتر، Δ بيصغر والتمثيل الرقمي بيقرّب من الـ signal الأصلية.
عشان تحسّ بالحجم: quantizer بـ 1 bit عنده مستويين بس — يقدر يمثّل الـ signal كـ"عالية" أو "واطية". أما quantizer بـ 8 bit فعنده 256 مستوى. وquantizer بـ 16 bit (اللي بيستخدمه صوت الـ CD) عنده 65,536 مستوى. ونظام تسجيل الاستوديو بـ 24 bit عنده أكتر من 16 مليون مستوى. الفرق في الدقة ضخم.
الـ quantization error: أرضية الـ noise اللي مبتتشالش
الـ quantization error e[n] للـ sample رقم n هو الفرق بين الـ sample الحقيقية x[n] والنسخة المكمّمة منها x̂[n]:
لما الـ signal تستخدم مستويات quantization كتير — يعني لما عدد الـ bits يكفي إن الـ signal تعدّي خطوات كتير — الـ quantization error بيقرّب من متغيّر عشوائي uniform على [−Δ/2, Δ/2]. والنموذج الإحصائي ده، اللي اسمه نموذج الـ quantization noise، دقيق بشكل ملفت في الأنظمة المتصمّمة كويس، وبيخلّينا نطلّع معادلة بسيطة لنسبة الـ signal للـ noise اللي بتنتج.
الـ variance (القدرة) بتاعة الـ quantization noise في النموذج ده بتساوي Δ2/12. ولو الـ input sine wave بـ amplitude A (المدى من القمة للقاع 2A بيساوي مدى الـ quantizer)، تبقى قدرة الـ signal A2/2 والـ step size Δ = 2A/2b = A⋅21−b. ولما تعوّض بتطلع معادلة الـ SQNR المشهورة.
الـ SQNR: قاعدة 6 ديسيبل لكل bit
الـ signal-to-quantization-noise ratio (نسبة الإشارة إلى ضجيج التكميم) أو SQNR بتقيس قدرة الـ signal أكبر قد إيه من قدرة الـ quantization noise. لـ input جيبي مالي مدى الـ quantizer ومتكمّم بـ b bit:
قاعدة "6 ديسيبل لكل bit" سهلة الحفظ والتطبيق بشكل ملفت. ADC بـ 16 bit بيدّي حوالي 6.02 × 16 + 1.76 = 98.1 ديسيبل من الـ dynamic range (النطاق الديناميكي) لـ input جيبي مالي المدى — واسع كفاية يغطّي المدى كله من أهدى همسة بتتسمع لحفلة صاخبة من غير تشويه. أما نظام 24 bit فبيوصل لحوالي 146 ديسيبل، أكتر من الـ dynamic range بتاع ودن الإنسان.
معادلة الـ SQNR بتفترض input جيبي مالي المدى. والـ signals الحقيقية نادرًا ما بتستخدم المدى الكامل للـ quantizer — المقاطع الهادية بتبقى قريبة من تحت في مقياس الـ amplitude حيث المستويات المتاحة أقل، فالـ SQNR الفعلية بتقل. وعشان كده مهندسين التسجيل بيستخدموا الـ gain staging (ضبط الكسب): يظبطوا مستوى الـ signal على مدى دخل الـ converter عشان يستخدموا أكبر عدد من مستويات الـ quantization.
الـ saturation والـ clipping
تحليل الـ SQNR بيفترض إن الـ input بيفضل جوه المدى اللي الـ quantizer متصمّم له [xmin, xmax]. لو الـ signal عدّت المدى ده، الـ quantizer بيحصله saturation (إشباع) (بيعمل clipping): كل القيم اللي فوق xmax بتروح لأعلى مستوى، وكل القيم اللي تحت xmin بتروح لأوطى مستوى. والـ clipping (القطع) بيدخّل تشويه حاد في الموجة — قمم الـ signal بتتقصّ وتبقى مفلطحة — وبيطلّع harmonic distortion (تشويه توافقي) قوي صوته خشن ومزعج.
على عكس الـ quantization noise اللي متوزّع بالتساوي على الـ spectrum بمستوى واطي، الـ clipping بيطلّع harmonics منفصلة متركّزة عند مضاعفات الـ frequency الأساسية. وحتى clipping قصير وعابر — sample واحدة برا المدى — غالبًا بيتسمع بوضوح. وعشان كده مراحل دخل الـ converter فيها headroom (هامش): مدى الـ quantizer بيتصمّم أكبر شوية من أقصى signal متوقعة، فبنقبل نقص بسيط في الـ SQNR قصاد حماية من قمم الـ amplitude العابرة.
الـ dithering: تحويل الغلطة لـ noise
لما الـ bit depth أو مستوى الـ signal يقلّوا، الـ quantization error بيبطّل يتصرّف كـ noise عشوائي ويبقى ليه شكل منتظم ودوري. signal بتتغيّر بالراحة قريب من حد quantization بتتنطّط بين مستويين جنب بعض، فبتطلّع أثر نغمي عند frequency الـ signal — بيتسمع كتشويه "زنّ" أو "محبّب" مختلف خالص عن الوِش الناعم بتاع الـ noise اللي مالوش correlation.
الـ dithering (الترذيذ) هو الحل: إنك تضيف شوية noise (ضجيج) عشوائي صغير على الـ signal قبل الـ quantization. الـ noise المضاف بيخلّي الـ quantization error عشوائي، وبيكسر الـ correlation بين الغلطة والـ signal. والنتيجة إن الأثر النغمي المنتظم بيتبدّل بأرضية noise مفرودة ومستواها واطي — أخف بكتير على الإحساس من التشويه النغمي اللي كان مكانها. والـ noise عادةً بيتختار بشكل طيفي معيّن (كثافة احتمالية مثلثية) عشان يقلّل تأثيره على السمع.
أدوات الصوت الاحترافية بتجمع الـ dithering مع الـ noise shaping (تشكيل الضجيج): feedback loop بتعيد توزيع الـ quantization noise على الـ frequencies، وبتزقّه ناحية الـ frequencies اللي ودن الإنسان أقل حساسية ليها (فوق ~16 كيلوهرتز). وتسجيل 16 bit متعمله noise shaping صح ممكن يوصل لنفس أرضية الـ noise اللي بنحسّها في نظام 20 bit جوه أحسّ نطاق للسمع من 2 لـ 5 كيلوهرتز.
الـ bit depths المنتشرة عمليًا
كل تطبيق ليه متطلبات مختلفة في الـ bit depth، بيوازن فيها بين تكلفة التخزين والتعقيد الحسابي والجودة اللي بنحسّها:
الصوت 8 bit (SQNR ≈ 50 ديسيبل) كان منتشر في الأنظمة الرقمية الأولانية ومحوّلات التليفون. الـ 256 مستوى المتاحين خشنين بشكل واضح للمزيكا — درجات الـ quantization بتتسمع — بس كفاية عشان تفهم الكلام. والصيغ القديمة زي μ-law وA-law companding بتحسّن الجودة اللي بنحسّها باستخدام quantization لوغاريتمي بدل الـ quantization المنتظم، فبتخصّص مستويات أكتر لنطاق الـ amplitude الواطي حيث حساسية ودن الإنسان أكبر.
الصوت 16 bit (SQNR ≈ 98 ديسيبل) هو المعيار لصوت جودة الـ CD ومعظم الأجهزة الاستهلاكية. بـ 65,536 مستوى بيغطّوا dynamic range قدره 98 ديسيبل، الـ quantization noise مبيتسمعش في ظروف السماع العادية، خصوصًا مع dithering مناسب. وصيغة الـ 16 bit خدمت الصوت الاستهلاكي أربع عقود.
الصوت 24 bit (SQNR ≈ 146 ديسيبل) هو المعيار لتسجيل الاستوديو والـ post-production. الهامش الواسع معناه إن المهندسين يقدروا يظبطوا مستويات دخل محافظة مع حماية كفاية من الـ clipping، وبعدين يستخدموا الـ dynamic range كله في الـ mixing والـ mastering. ومحطات الـ DAW الحديثة بتعالج الصوت جوّاها بدقة floating-point بـ 32 أو 64 bit عشان أخطاء التقريب متتراكمش عبر مئات مراحل المعالجة.
محوّلات الـ 12 bit منتشرة في الـ microcontrollers والأنظمة المدمجة، وبتوازن بين الدقة وتكلفة الـ chip لقياسات الـ sensors والتحكم في الموتورات والقياس الدقيق. ADC بـ 12 bit بيدّي حوالي 74 ديسيبل SQNR — كفاية لأغلب تطبيقات الـ sensors الصناعية اللي فيها noise البيئة الفيزيائية أصلًا أعلى من أرضية الـ quantization.
الـ quantization غير المنتظم والـ companding
الـ quantization المنتظم — خطوات عرضها متساوي على مدى الـ amplitude كله — مثالي لما توزيع الـ amplitude في الـ signal يبقى منتظم. بس أغلب الـ signals الحقيقية بتقضي وقت أطول بكتير قريب من الصفر مقارنةً بأقصى amplitude ليها. والكلام بالذات توزيع الـ amplitude فيه لوغاريتمي تقريبًا: احتمال إن الـ sample تبقى واطية أعلى بكتير من احتمال إنها تبقى عالية.
للـ signals دي، الـ non-uniform quantization (التكميم غير المنتظم) بيخصّص خطوات أكتر (وأصغر) لنطاق الـ amplitude الواطي، وخطوات أقل (وأكبر) للـ amplitudes العالية اللي نادرًا ما بتحصل. وده بيدّي SQNR متوسطة أحسن عند مستوى الـ signal المعتاد على حساب SQNR أوحش شوية للـ signals الكبيرة. والنتيجة في الإحساس أحسن بكتير: الأصوات الهادية بتطلع بدقة، ودي اللي بتفرق مع الإحساس البشري أكتر.
عمليًا، الـ non-uniform quantization بيتنفّذ بـ الـ companding (الضغط-التمديد) (Companding): بتضغط الـ amplitude بتاع الـ signal لوغاريتميًا قبل الـ quantization المنتظم، وبعدين تمدّها بنفس الطريقة بالعكس بعد إعادة البناء. وقانونين الـ companding المعياريين — μ-law (أمريكا الشمالية، اليابان) وA-law (أوروبا) — حدّدوا جودة صوت التليفون لعقود ولسه مستخدمين في codecs الـ VoIP النهارده.
- الـ quantization بيودّي قيم الـ amplitude المستمرة لمجموعة محدودة من L = 2b مستوى منفصل، وبيدخّل غلطة تقريب متعدّيش ±Δ/2.
- كل bit دقة زيادة بيضاعف عدد المستويات، ويقسم الـ step size Δ على اتنين، ويحسّن الـ SQNR بحوالي 6 ديسيبل.
- الـ SQNR لـ input جيبي مالي المدى تقريبًا 6.02b + 1.76 ديسيبل — قاعدة "6 ديسيبل لكل bit".
- الـ clipping (الـ saturation) بيحصل لما الـ signal تعدّي مدى الـ quantizer؛ وبيطلّع harmonic distortion حاد ضرره أكبر بكتير من الـ quantization noise.
- الـ dithering بيضيف noise عشوائي صغير قبل الـ quantization عشان يخلّي الغلطة عشوائية ويبدّل الآثار النغمية المنتظمة بأرضية noise مالهاش ضرر.
- الـ non-uniform quantization (الـ companding) بيحسّن الجودة اللي بنحسّها للـ signals اللي توزيع الـ amplitude فيها مش منتظم زي الكلام.