1. מהו פורמט האודיו iLBC?
הInternet Low Bitrate Codec נוצר במקור על ידי Global IP Solutions (GIPS) — חברה שוודית להנדסת שמע שנרכשה על ידי Google בשנת 2010. הוגדר על ידי Internet Engineering Task Force תחת 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}$) or #!iLBC30\n ($30\text{ ms}$) |
| רישוי | חינם ממ תמלוגים (קוד פתוח BSD בת 3 סעיפים דרך WebRTC) |
3. תכונות מעמיקות ועיצוב ארכיטקטוני
קידוד מסגרת עצמאי (הפצת שגיאות אפס)
פורמטים מסורתיים של דחיסת דיבור כגון 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{ to }10%$, שבו הבהירות של G.729 או G.711 יורדת משמעותית.
4. איך לפתוח ולנגן קבצי שמע .ilbc
מכיוון ש-.ilbc הוא פורמט זרם טלפוניה גולמי ייעודי ולא מכולה מדיה כללית לצרכן (כמו MP3 או WAV), נגנים נפוצים לצרכן אינם תמיד יכולים לזהות אותו ללא חבילות קודק ייעודיות.
שיטה 1: שימוש ב‑Audacity (ייבוא נתונים גולמיים)
Audacity יכול לייבא קבצי דמפ PCM גולמיים או קבצי קול iLBC מפוענחים:
- הפעל Audacity.
- נווט אל File > Import > Raw Data…
- בחר את הקובץ והגדר את הקידוד ל‑Signed 16-bit PCM, סדר הבתים ל‑Little-endian, 1 Channel (Mono), וקצב הדגימה ל‑8000 Hz.
שיטה 2: נגינה משורת פקודה באמצעות FFplay
אם גרסת FFmpeg שלך נבנתה עם הרחבת libilbc:
ffplay -f ilbc sample.ilbc
שיטה 3: אנליזרים ייעודיים ל‑VoIP
כלי אבחון רשת כגון Wireshark יכולים לחלץ ולבנות מחדש מטעני קול .ilbc ישירות משיחות חבילות SIP/RTP שנלכדו ולנגן אותם דרך כלי RTP Player המובנה.
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)
Q1: איזו בעיה ראשית נוצר פורמט האודיו iLBC כדי לפתור?
פורמט iLBC תוכנן לשמור על הבנת הדיבור ברשתות IP על‑ידי הפיכת כל מסגרת אודיו לעצמאית, מה שמונע משגיאות אובדן חבילות להתפשט למסגרות דיבור הבאות.
Q2: מהם שני קצבי הביט של קובץ .ilbc?
זרם .ilbc פועל באחת משתי הקצבים $13.33\text{ kbit/s}$ כאשר משתמשים במסגרת של $30\text{ ms}$ או $15.20\text{ kbit/s}$ כאשר מוגדר למסגרות של $20\text{ ms}$.
Q3: האם ניתן להשתמש בפורמט iLBC לשידור מוזיקה באיכות גבוהה?
לא, iLBC הוא קודק קול צמוד רוחב פס המוגבל בקפדנות לקצב דגימה של $8\text{ kHz}$, מותאם באופן בלעדי לדיבור אנושי בטווח שבין $90\text{ Hz}$ ל-$4000\text{ Hz}$.
Q4: האם קודק האודיו iLBC חופשי מתמלוגים?
כן, iLBC מתוקן במלואו תחת IETF RFC 3951 ומשוחרר ברישיון קוד פתוח, ללא תמלוגים, ברישיון BSD בת שלוש תנאים דרך פרויקט WebRTC.
Q5: איך iLBC משווה לקודק המודרני Opus?
בעוד iLBC סיפק הסתרת אובדן חבילות עבור VoIP צמוד רוחב פס ברשתות רחבות פס מוקדמות, קודק Opus המודרני תומך בקצב ביטים דינמי, אודיו ברוחב פס מלא ($48\text{ kHz}$) ועקביות אלגוריתמית נמוכה יותר.
7. מפרטים רשמיים והפניות
- מפרט IETF RFC 3951: קודק קצב סיביות נמוך לאינטרנט (iLBC) תקן דיבור ואודיו
- פורמט מטען IETF RFC 3952: פרוטוקול תעבורה בזמן אמת (RTP) פורמט מטען עבור iLBC
- פרויקט קוד פתוח WebRTC: רישוי קודק WebRTC & יישום iLBC
- תיעוד קודקוד FFmpeg: הנחיות אינטגרציה של libilbc ב-FFmpeg