كيف يكون ضغط FLAC عديم الفقد؟ شرح مخالف للحدس
6 دقيقة للقراءة
السؤال المخالف للحدس
عبارة «ينخفض حجم الملف إلى النصف دون أن يضيع شيء» تبدو غير منطقية عند سماعها أول مرة. فإن خفّضت شيئًا إلى النصف فلا بد أن شيئًا قد ذهب، أليس كذلك؟
في الحقيقة لا. ولفهم السبب ينبغي أولًا إدراك مدى إسراف البيانات غير المضغوطة.
لماذا WAV مسرف إلى هذا الحد؟
يحتوي ملف WAV على قيم السعة اللحظية لموجة صوتية مقيسة 44100 مرة في الثانية. وتُكتب كل قياسة عددًا من 16 بت — أي قيمة بين -32768 و+32767.
والآن النقطة الحاسمة: القياسات المتجاورة لا تختلف كثيرًا بعضها عن بعض.
فالموجة الصوتية ظاهرة فيزيائية؛ ولا يقفز ضغط الهواء من -30000 إلى +30000 في لحظة. والعيّنات المتتالية متقاربة عادة. لكن WAV لا يعبأ بذلك — إذ يكتب كل عيّنة بستة عشر بتًا كاملة كأنها عدد مستقل تمامًا.
وهنا تكمن المساحة القابلة للضغط. فالبيانات تشغل حيزًا أكبر بكثير من المعلومات التي تحملها.
الفكرة الجوهرية في FLAC: سجّل الفارق
لنبدأ بمثال بسيط. لنفترض هذه العيّنات المتتالية:
1000, 1005, 1009, 1012, 1014, 1015
فإن كتبتها كما هي وجب إنفاق حيّز كامل من 16 بت لكل منها. أما إن كتبت الفوارق بينها:
1000, +5, +4, +3, +2, +1
فباستثناء القيمة الأولى تكون كلها من خانة واحدة. وكتابة هذه الأعداد لا تحتاج إلى 16 بت — بل يكفي 4 أو 5 بتات ويزيد. ولم تضع أي معلومة: فإن عرفت القيمة الأولى والفوارق أعدت بناء المتوالية الأصلية بالضبط.
وما يفعله FLAC نسخة أكثر تطورًا بكثير من هذا المبدأ.
التنبؤ الخطي: تنبّأ ثم اكتب الفارق
لا يكتفي FLAC بأخذ الفارق مع الجار. بل يبني بدلًا من ذلك نموذج تنبؤ لكل كتلة صوتية.
ويجيب النموذج عن سؤال: «بالنظر إلى العيّنات القليلة السابقة، كيف أتنبأ على أفضل وجه بالعيّنة التالية؟» ويُسمى ذلك التنبؤ الخطي. ويحسب المرمّز المعاملات التي تعمل على أفضل نحو لتلك الكتلة.
ثم يسجّل:
- معاملات النموذج (بضعة أعداد لكل كتلة — حيّز ضئيل جدًا).
- قيم البواقي: الفارق بين تنبؤ النموذج والعيّنة الفعلية.
فإن كان النموذج جيدًا كانت البواقي أعدادًا صغيرة. والأعداد الصغيرة تحتاج إلى بتات قليلة.
لماذا لا يحدث فقد؟
الجواب أن العملية تجري بـحساب دقيق تمامًا.
فمفكّك الترميز يقرأ معاملات النموذج المخزّنة في الملف ويجري التنبؤ نفسه بالضبط الذي أجراه المرمّز. ثم يضيف البقية المسجّلة إلى ذلك التنبؤ:
العيّنة الفعلية = التنبؤ + البقية
بلا تدوير ولا تقريب ولا «قريب بما يكفي». ولأن الحساب يجري بالأعداد الصحيحة تكون النتيجة العيّنة الأصلية بعينها. في كل مرة ولكل عيّنة.
وهنا بالضبط يكمن الفرق عن الصيغ ذات الفقد. فـ MP3 يقول «إن استبعدت هذه المعلومة لن يلاحظ أحد» — ويستبعدها فعلًا. أما FLAC فيقول «أستطيع كتابة هذه المعلومة على نحو أوجز» — ولا يستبعد شيئًا.
ترميز البواقي بكفاءة
في الخطوة الأخيرة يكتب FLAC قيم البواقي بترميز إنتروبي. وهذا الترميز مُحسَّن لتوزيع تكون فيه القيم الصغيرة متكررة والكبيرة نادرة — وهو تمامًا كيفية توزع بواقي الصوت.
فتُكتب القيم الصغيرة المتكررة ببتات قليلة جدًا، والقيم الكبيرة النادرة ببتات أكثر. وينخفض متوسط عدد البتات انخفاضًا كبيرًا.
ماذا يفعل مستوى الضغط؟
يحدّد مستوى الضغط 0-8 في FLAC مقدار الجهد الذي يبذله المرمّز:
- كم نموذج تنبؤ سيجرّب؟
- كيف سيختار أحجام الكتل؟
- هل سيستفيد من العلاقة بين القنوات (في الاستريو ينضغط ترميز الوسط والجانب عادة أفضل من اليسار واليمين)؟
فعند مستوى مرتفع يجرّب المرمّز خيارات أكثر ويختار أفضلها. ويستغرق ذلك وقتًا أطول وينتج ملفًا أصغر قليلًا.
لكن الجودة لا تتغير أبدًا. فالملفات المنتَجة عند المستوى 0 والمستوى 8 تعطي بيانات PCM متطابقة بتًا ببت عند فك الترميز. فالمستوى ليس إعداد جودة بل إعداد ميزانية حسابية.
وفي جانب فك الترميز يكاد فارق المستويات لا يُحسّ؛ فالملف يُفك سريعًا عند أي مستوى.
لماذا تتفاوت نسبة الضغط؟
تعرف الجواب الآن: القابلية للتنبؤ.
- الكلام والعزف الصوتي المنفرد والمقاطع الهادئة: موجة منتظمة وتنبؤ دقيق وبواقٍ صغيرة. تنضغط جيدًا جدًا.
- الموسيقى الكلاسيكية وتسجيلات القاعات: ديناميكية واسعة لكن بنية منتظمة. تنضغط جيدًا.
- مزائج الروك والإلكترونيك الكثيفة والماسترينغ العدواني: إشارة مشبعة ومعقّدة والتنبؤ يتعثّر. وينخفض المكسب.
- الضجيج الأبيض: غير قابل للتنبؤ بحكم تعريفه. ولا ينضغط تقريبًا.
فإن انضغط تسجيلك انضغاطًا رديئًا فذلك لا يعني أنك اخترت الإعداد الخاطئ — إنما تلك طبيعته.
الفرق الجوهري عن الضغط ذي الفقد
يجدر عرض ما سبق مرة أخرى على نحو مقارن، لأن هنا عادة ينشأ الالتباس.
المرمّز ذو الفقد مثل MP3 يسأل: «إن استبعدت هذه المعلومة فهل سيلاحظ المستمع؟» ويعتمد على نماذج للسمع البشري فيحدّد المكوّنات التي يقل احتمال سماعها ويحذفها فعلًا. والمكسب كبير — إذ يصغر الملف أضعافًا — لكن البيانات المحذوفة لا تبقى في أي موضع من الملف. وحتى لو حوّلت ذلك الملف لاحقًا إلى FLAC فلن تعود المعلومات، إذ لا شيء ليُعاد.
والمرمّز عديم الفقد مثل FLAC يسأل سؤالًا آخر: «كيف أكتب هذه المعلومة على نحو أوجز؟» فلا يستبعد شيئًا بل يجعل التعبير أكفأ فحسب. والمكسب أكثر تواضعًا — نحو نصف الحجم — لكن الرحلة ذهابًا وإيابًا كاملة.
وكلا النهجين مشروع، إنما يخدم كل منهما غرضًا مختلفًا. فالصيغة ذات الفقد منطقية للاستماع المحمول؛ والصيغة عديمة الفقد لا غنى عنها للأرشفة والإنتاج. وما لا ينبغي الخلط فيه: أن الانتقال إلى صيغة عديمة الفقد لا يستعيد بيانات فُقدت سابقًا في صيغة ذات فقد. بل يحمي ما يأتي بعد ذلك فحسب.
الفرق بين FLAC وZIP
إن ضغطت ملف WAV بصيغة ZIP فقد أجريت ضغطًا عديم الفقد أيضًا. لكن المكسب ضئيل جدًا عادة.
والسبب أن ZIP عام الغرض ويبحث عن تسلسلات بايتات متكررة. وهو يعمل ببراعة في ملف نصي تتكرر فيه كلمة بعينها مئات المرات. أما في البيانات الصوتية فتكاد تنعدم تسلسلات البايتات المتكررة تكرارًا مطابقًا.
أما FLAC فيعرف ماهية البيانات. وهو لا يبحث عن أنماط بايتات بل عن بنية موجية. وهذه المعرفة بالمجال تفسّر فارق الأداء الكبير بينهما.
ميزة إضافية: فحص السلامة
يكتب FLAC مجاميع تحقق لكل كتلة وللملف كله. وهذه ميزة حقيقية يفتقر إليها WAV.
فحين تفتح قرص أرشيف بعد سنوات تستطيع التأكد قطعًا مما إذا كانت ملفات FLAC لديك ما زالت سليمة. أما في ملف WAV فتُنتج المنطقة التالفة صوتًا خاطئًا في صمت؛ ولملاحظتها عليك سماع الملف من أوله إلى آخره.
الخلاصة
يوفّر FLAC المساحة دون استبعاد أي شيء من البيانات الصوتية، لأن بيانات PCM غير المضغوطة مسرفة أصلًا: فهي تكتب كل عيّنة بحجمها الكامل كأنها مستقلة، بينما العيّنات المتجاورة مترابطة ترابطًا وثيقًا. ويلتقط FLAC هذا الترابط بنموذج تنبؤ ولا يسجّل سوى خطأ التنبؤ. وحين يعيد فك الترميز التنبؤ نفسه ويضيف إليه الخطأ تعود البيانات الأصلية بالضبط. ولهذا يمكنك استخدام أداة تحويل WAV إلى FLAC بكل ثقة: فالشيء الوحيد الذي تخسره هو مساحة القرص.
الأسئلة الشائعة
إن اخترت مستوى الضغط 8 فهل تختلف جودة الصوت عن المستوى 0؟
لا، سيكون الصوت متطابقًا تمامًا. فمستوى الضغط لا يحدّد سوى عدد نماذج التنبؤ التي يجرّبها المرمّز وكيفية اختياره أحجام الكتل. وأيًّا كان المستوى الذي تختاره، تكون بيانات PCM التي تحصل عليها عند فك الترميز مطابقة بتًا ببت للأصل. والفارق الوحيد في حجم الملف وزمن الترميز.
لماذا لا تنضغط بعض الملفات تقريبًا؟
يحقق FLAC مكسبه من الجزء القابل للتنبؤ من الموجة. فكلما كانت بنية التسجيل أكثر انتظامًا وقابلية للتنبؤ كان نموذج التنبؤ أدق وكانت الفوارق الواجب تسجيلها أصغر. وفي التسجيلات المشوّشة أو الشديدة الكثافة أو المضغوطة بقوة في مرحلة الماسترينغ يصعب التنبؤ وينخفض المكسب. والضجيج الأبيض لا ينضغط عمليًا لأنه غير قابل للتنبؤ بحكم تعريفه.
ما الفرق بين FLAC وZIP؟
كلاهما عديم الفقد، لكنهما مُحسَّنان لأنواع بيانات مختلفة. فـ ZIP عام الغرض ويبحث عن تسلسلات بايتات متكررة؛ وهذه التكرارات نادرة في البيانات الصوتية، ولهذا فإن ضغط ملف WAV بصيغة ZIP لا يعطي عادة إلا القليل جدًا. أما FLAC فيعرف بنية موجة الإشارة الصوتية ويحقق ضغطًا أعلى بكثير بنمذجة العلاقة الرياضية بين العيّنات المتجاورة.
كيف أعرف ما إذا كان ملف FLAC لدي قد تلف؟
يكتب FLAC مجاميع تحقق لكل كتلة وللملف كله، فتستطيع بأدوات فحص السلامة التأكد من سلامة ملفك تأكدًا قاطعًا. وهذه ميزة مهمة على WAV في الأرشفة الطويلة، لأن المنطقة التالفة في ملف WAV تُنتج صوتًا خاطئًا في صمت وستضطر إلى سماع الملف كله لملاحظتها.
جرّب ذلك الآن باستخدام WAV → FLAC Dönüştür.
جرّب WAV → FLAC Dönüştür