ما هو تنسيق الصوت iLBC؟
تم إنشاء Internet Low Bitrate Codec أصلاً بواسطة Global IP Solutions (GIPS) — شركة سويدية لهندسة الصوت تم الاستحواذ عليها من قبل Google في عام 2010. تم تعريفه من قبل مجموعة مهندسي الإنترنت (IETF) تحت RFC 3951 مع تغليف حمولة RTP الموضح في RFC 3952، صُمم iLBC خصيصًا لنقل الكلام بشكل قوي عبر روابط IP غير المستقرة.
في حين أن المتصفحات الحديثة غالبًا ما تستخدم ترميز Opus للاتصالات الفورية الحديثة، يظل iLBC معيارًا أساسيًا خاليًا من الرسوم مدمجًا في بنى الاتصالات المؤسسية، عملاء SIP، ملفات توافقية عكسية لـ WebRTC، وأجهزة VoIP القديمة التي تصنعها Cisco وPolycom وأنظمة PBX Asterisk.
الخصائص الرئيسية لـ iLBC
| المعامل | المواصفة |
|---|---|
| التوحيد | IETF RFC 3951 (ترميز)، RFC 3952 (حمولة RTP) |
| ملحقات الملفات الشائعة | .ilbc, .lbc |
| نوع وسائط MIME | audio/iLBC |
| تردد العينة | $8\text{ kHz}$ (نطاق ضيق) |
| دقة التكميم | PCM خطي 16-بت |
| قنوات الصوت | أحادي (خطاب قناة واحدة) |
| أطوال الإطار المدعومة | وضع $20\text{ ms}$ و وضع $30\text{ ms}$ |
| معدلات البت التشغيلية | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| بتات الحمولة لكل كتلة | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| معرف رأس سحري | #!iLBC20\n ($20\text{ ms}$) or #!iLBC30\n ($30\text{ ms}$) |
| الترخيص | مجاني من الرسوم (مفتوح المصدر بنظام BSD من 3 بنود عبر WebRTC) |
الميزات المتعمقة وتصميم الهندسة المعمارية
ترميز الإطارات المستقل (عدم انتشار الأخطاء)
تنسيقات ضغط الكلام التقليدية مثل G.729 ومُرمّزات عائلة CELP تستخدم التنبؤ بين الإطارات، حيث يعتمد كل إطار صوتي على معلومات الحالة ومتجهات متنبئ النغمة من الإطار السابق. إذا سقط حزمة في شبكة مزدحمة، فإن الحالة المفقودة تنتقل إلى الأمام، مما يخلّ بالتشويش على الصوت المتدفق لعدة مئات من المللي ثانية.
iLBC يزيل هذه الاعتمادية. كل إطار كلام في iLBC يتم ترميزه بشكل مستقل. إذا سقط الحزمة $N$ أثناء النقل، فإن الحزمة $N+1$ تُفكّ شفرتها بدقة صوتية كاملة.
وضعا التشغيل المزدوج ($20\text{ ms}$ مقابل $30\text{ ms}$)
لتمكين مهندسي الاتصالات من إدارة مرنة للكمون، يحدد iLBC وضعين تشغيليين إلزاميين:
- $20\text{ ms}$ وضع الإطار ($15.20\text{ kbit/s}$):
- يقوم بترميز 160 عينة صوتية لكل إطار إلى 38 بايت ($304\text{ bits}$).
- يوفر زمن تأخير تخزين مؤقت خوارزمي أقل، مما يجعله مناسبًا للاتصالات التفاعلية.
- $30\text{ ms}$ وضع الإطار ($13.33\text{ kbit/s}$):
- يقوم بترميز 240 عينة صوتية لكل إطار إلى 50 بايت ($400\text{ bits}$).
- يقلل استهلاك البتات بحوالي $12%$، مما يحسن كفاءة حمولة الشبكة على الاتصالات طويلة المدى.
إخفاء فقدان الحزم المتقدم (PLC)
عند حدوث حزم مفقودة، يستخدم iLBC مرشح تركيب LPC (الترميز التنبؤي الخطي) ذو المتغيرات الحالة لإعادة بناء تمثيلات دورات النغمة المفقودة باستخدام حالات الحدود من الإطارات المجاورة. بدلاً من إنشاء نقرات أو طقطقات رقمية أو كتمات قاسية، تتدهور حزم الصوت المفقودة بشكل سلس.
جودة الصوت مقابل ملف تعريف معدل البت
في ظل ظروف الشبكة المثالية (فقدان حزم 0٪)، يحقق iLBC درجة الرأي المتوسط (MOS) تقريبًا 4.14 (من 5.0). بينما هو أقل قليلًا من G.711 PCM غير المضغوط ($\mu$-law عند $\sim 4.3$)، يحافظ iLBC على وضوح الصوت عند معدلات فقدان الحزم تصل إلى $5\%\text{ إلى }10\%$، حيث ينخفض وضوح G.729 أو G.711 بشكل كبير.
4. كيفية فتح وتشغيل ملفات الصوت .ilbc
لأن .ilbc هو تنسيق تدفق هاتفية خام متخصص وليس حاوية وسائط مستهلكة عامة (مثل MP3 أو WAV)، لا يمكن لمشغلات المستهلكين الرئيسية دائمًا اكتشافه دون حزم ترميز مخصصة.
الطريقة 1: استخدام Audacity (استيراد بيانات خام)
يمكن لبرنامج Audacity استيراد تفريغ PCM خام أو ملفات صوت iLBC مفككة:
- شغّل Audacity.
- انتقل إلى ملف > استيراد > بيانات خام…
- اختر الملف واضبط الترميز إلى Signed 16-bit PCM، ترتيب البايت إلى Little-endian، قناة واحدة (أحادي)، ومعدل العينة إلى 8000 هرتز.
الطريقة 2: تشغيل عبر سطر الأوامر باستخدام FFplay
إذا كان بناء FFmpeg الخاص بك مُجمّعًا مع امتداد libilbc:
ffplay -f ilbc sample.ilbc
الطريقة 3: محللات VoIP المتخصصة
يمكن لأدوات تشخيص الشبكة مثل Wireshark استخراج وإعادة بناء حمولات صوت .ilbc مباشرةً من جلسات حزم SIP/RTP الملتقطة وتشغيلها عبر أداة مشغل RTP المدمجة.
5. كيفية إنشاء وتحويل ملفات الصوت .ilbc
يتطلب العمل مع صوت .ilbc إدخال صوتي بدقة 16‑بت، قناة واحدة، وتردد $8000\text{ Hz}$.
الترميز إلى iLBC باستخدام FFmpeg
لتحويل عينة صوتية موجودة بصيغة .wav أو .mp3 إلى تدفق بت .ilbc:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: يعيد أخذ عينات الصوت إلى معدل 8 كيلوهرتز المطلوب.-ac 1: يدمج الصوت متعدد القنوات إلى قناة أحادية.-c:a libilbc: يستخدم مشفرlibilbcالمرجعي.
تحديد وضع الإطار ($20\text{ ms}$ أو $30\text{ ms}$)
يمكنك اختيار وضع الإطار باستخدام العلامة -mode:
# Encode using 30ms mode (13.33 kbit/s)
ffmpeg -i input_speech.wav -ar 8000 -ac 1 -c:a libilbc -mode 30 output_30ms.ilbc
# Encode using 20ms mode (15.20 kbit/s)
ffmpeg -i input_speech.wav -ar 8000 -ac 1 -c:a libilbc -mode 20 output_20ms.ilbc
فك ترميز ملف .ilbc إلى WAV قياسي
لتحويل ملف .ilbc إلى ملف WAV غير مضغوط يمكن تشغيله في أي مكان:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. الأسئلة المتكررة (FAQ)
س1: ما المشكلة الأساسية التي تم إنشاء تنسيق الصوت iLBC لحلها؟
تم تصميم تنسيق iLBC للحفاظ على وضوح الكلام عبر شبكات IP من خلال جعل كل إطار صوتي مستقلاً، مما يمنع أخطاء فقدان الحزم من الانتشار إلى إطارات الكلام اللاحقة.
س2: ما هما معدلَي البت التشغيليين لملف .ilbc؟
يتعامل تدفق .ilbc إما بمعدل $13.33\text{ kbit/s}$ عند استخدام إطارات $30\text{ ms}$ أو $15.20\text{ kbit/s}$ عندما يتم تكوينه لإطارات $20\text{ ms}$.
س3: هل يمكن استخدام تنسيق iLBC لبث الموسيقى عالية الدقة؟
لا، iLBC هو برنامج ترميز صوت ضيق النطاق مقيد تمامًا بمعدل أخذ عينات $8\text{ kHz}$، ومُحسّن حصريًا للكلام البشري بين $90\text{ Hz}$ و $4000\text{ Hz}$.
س4: هل ترميز الصوت iLBC خالٍ من الرسوم؟
نعم، iLBC موحد بالكامل وفقًا لـ IETF RFC 3951 ومُصدر تحت ترخيص BSD ثلاثي البنود مفتوح المصدر وخالٍ من الرسوم عبر مشروع WebRTC.
س5: كيف يقارن iLBC بترميز Opus الحديث؟
في حين أن iLBC قدم إخفاء فقدان الحزم للاتصالات الصوتية ضيقة النطاق في شبكات النطاق العريض المبكرة، يدعم برنامج الترميز الحديث Opus معدلات بتات ديناميكية، صوت كامل النطاق ($48\text{ kHz}$)، وتأخير خوارزمي أقل.
7. المواصفات الرسمية والمراجع
- مواصفة IETF RFC 3951: معيار ترميز الصوت والبيانات منخفض معدل البت للإنترنت (iLBC)
- تنسيق الحمولة IETF RFC 3952: تنسيق حمولة بروتوكول النقل في الوقت الحقيقي (RTP) لـ iLBC
- مشروع WebRTC مفتوح المصدر: ترخيص ترميز WebRTC وتنفيذ iLBC
- توثيق ترميز FFmpeg: إرشادات دمج libilbc في FFmpeg