1. فرمت صوتی iLBC چیست؟
کدک اینترنت با بیتریت پایین در ابتدا توسط Global IP Solutions (GIPS) — یک شرکت مهندسی صوتی سوئدی که در سال ۲۰۱۰ توسط گوگل خریداری شد — ایجاد شد. این کدک توسط گروه کاری مهندسی اینترنت (IETF) تحت RFC 3951 تعریف شده و بستهبندی بار RTP در RFC 3952 تشریح شده است، iLBC بهطور خاص برای انتقال گفتار مقاوم بر روی لینکهای IP ناپایدار طراحی شده است.
در حالی که مرورگرهای وب مدرن اغلب از کدک Opus برای ارتباطات بلادرنگ استفاده میکنند، iLBC همچنان یک استاندارد کلیدی و بدون حق امتیاز است که در پشتههای تلفنساز سازمانی، کلاینتهای SIP، پروفایلهای سازگاری عقبگرد WebRTC و دستگاههای قدیمی VoIP تولید شده توسط Cisco، Polycom و سیستمهای PBX Asterisk تعبیه شده است.
2. ویژگیهای کلیدی 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}$) یا #!iLBC30\n ($30\text{ ms}$) |
| مجوزدهی | بدون حق امتیاز (منبع باز BSD با ۳ بند از طریق WebRTC) |
3. ویژگیهای عمیق و طراحی معماری
کدگذاری فریم مستقل (انتشار خطای صفر)
فرمتهای فشردهسازی گفتار سنتی مانند G.729 و کدکهای خانواده CELP از پیشبینی بینفریم استفاده میکنند، بهطوری که هر فریم صوتی به اطلاعات وضعیت و بردارهای پیشبینیکننده pitch از فریم قبلی وابسته است. اگر بستهای در شبکه شلوغ از دست برود، آن وضعیت گمشده به جلو منتقل میشود و صدای بعدی را برای چند صد میلیثانیه مخدوش میکند.
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 (کدگذاری پیشبینی خطی) متغیر حالت استفاده میکند که بازنماییهای چرخهپچاز دست رفته را با استفاده از حالتهای مرزی فریمهای همسایه بازسازی مینماید. به جای ایجاد کلیکها، پاپهای دیجیتال یا قطعهای سخت، بستههای صوتی از دست رفته بهصورت ملایم کاهش کیفیت مییابند.
کیفیت صدا در مقابل نمایهٔ بیتریت
در شرایط ایدهآل شبکه (بدون از دست رفتن بسته)، iLBC نمرهٔ میانگین نظر (MOS) حدود 4.14 (از 5.0) را به دست میآورد. اگرچه کمی پایینتر از G.711 PCM بدون فشردهسازی ($\mu$-law با $\sim 4.3$) است، iLBC وضوح صدا را حتی در نرخ از دست رفتن بستههای تا $5%\text{ to }10%$ حفظ میکند، جایی که قابلیت درک G.729 یا G.711 بهطور قابلتوجهی کاهش مییابد.
۴. نحوه باز کردن و پخش فایلهای صوتی .ilbc
به دلیل اینکه .ilbc یک قالب جریان تلفنی خام تخصصی است نه یک کانتینر رسانهای عمومی مصرفکننده (مانند MP3 یا WAV)، پخشکنندگان اصلی مصرفکننده همیشه نمیتوانند آن را بدون بستههای کدک اختصاصی تشخیص دهند.
روش ۱: استفاده از Audacity (وارد کردن دادههای خام)
Audacity میتواند فایلهای خام PCM یا فایلهای صوتی iLBC رمزگشاییشده را وارد کند:
- Audacity را اجرا کنید.
- به File > Import > Raw Data… بروید.
- فایل را انتخاب کنید و رمزگذاری را به Signed 16-bit PCM، ترتیب بایت را به Little-endian، 1 Channel (Mono) و نرخ نمونهبرداری را به 8000 Hz تنظیم کنید.
روش ۲: پخش خط فرمانی با استفاده از FFplay
اگر نسخهٔ FFmpeg شما با افزونهٔ libilbc کامپایل شده باشد:
ffplay -f ilbc sample.ilbc
روش ۳: تجزیهگرهای اختصاصی VoIP
ابزارهای تشخیص شبکه مانند Wireshark میتوانند بارهای صوتی .ilbc را مستقیماً از جلسات بستهٔ SIP/RTP ضبطشده استخراج و بازسازی کنند و از طریق ابزار پخشکننده RTP داخلی آنها را پخش کنند.
۵. نحوه ایجاد و تبدیل فایلهای صوتی .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 قرار دارد و از طریق پروژه WebRTC تحت یک مجوز منبع باز، بدون حق امتیاز و با ۳ بند BSD منتشر شده است.
س5: iLBC نسبت به کدک مدرن Opus چگونه مقایسه میشود؟
در حالی که iLBC در شبکههای پهن باند اولیه برای VoIP نوار باریک قابلیت مخفیسازی از دست رفتن بستهها را فراهم میکرد، کدک مدرن Opus از بیتریتهای پویا، صدا با تمام باند ($48\text{ kHz}$) و تأخیر الگوریتمی کمتر پشتیبانی میکند.
۷. مشخصات رسمی و منابع
- مشخصات IETF RFC 3951: استاندارد گفتار و صدا (iLBC) کدک نرخ بیت پایین اینترنتی
- قالب بار IETF RFC 3952: قالب بار پروتکل حمل و نقل زمان واقعی (RTP) برای iLBC
- پروژه منبع باز WebRTC: مجوز کدک WebRTC و پیادهسازی iLBC
- مستندات کدک FFmpeg: راهنمای ادغام libilbc در FFmpeg