1. iLBC Ses Formatı Nedir?
The Internet Low Bitrate Codec, ilk olarak Global IP Solutions (GIPS) tarafından oluşturulmuştu—2010 yılında Google tarafından satın alınan bir İsveç ses mühendisliği firması. Internet Engineering Task Force tarafından RFC 3951 kapsamında tanımlanmış ve RTP yükü kapsüllemesi RFC 3952‘de açıklanmıştır; iLBC, kararsız IP bağlantılarında sağlam ses iletimi için özel olarak tasarlanmıştır.
Günümüz web tarayıcıları modern gerçek zamanlı iletişim için sıkça Opus kodeğini kullansa da, iLBC, kurumsal telefon sistemleri, SIP istemcileri, WebRTC geriye uyumluluk profilleri ve Cisco, Polycom ve Asterisk PBX sistemleri tarafından üretilen eski VoIP cihazları içinde gömülü, önemli, telif ücreti gerektirmeyen bir standart olarak kalmaktadır.
2. iLBC’nin Temel Özellikleri
| Parametre | Şartname |
|---|---|
| Standardizasyon | IETF RFC 3951 (Kodek), RFC 3952 (RTP Yükü) |
| Ortak Dosya Uzantıları | .ilbc, .lbc |
| MIME Medya Türü | audio/iLBC |
| Örnekleme Frekansı | $8\text{ kHz}$ (Dar bant) |
| Kuantizasyon Çözünürlüğü | 16-bit lineer PCM |
| Ses Kanalları | Mono (Tek kanallı konuşma) |
| Desteklenen Çerçeve Uzunlukları | $20\text{ ms}$ modu ve $30\text{ ms}$ modu |
| Operasyonel Bit Hızları | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| Blok Başına Yük Bitleri | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| Sihirli Başlık Tanımlayıcısı | #!iLBC20\n ($20\text{ ms}$) veya #!iLBC30\n ($30\text{ ms}$) |
| Lisanslama | Telif Ücreti Yok (WebRTC üzerinden 3 maddeli BSD açık kaynak) |
3. Derinlemesine Özellikler ve Mimari Tasarım
Bağımsız Çerçeve Kodlaması (Sıfır Hata Yayılımı)
Geleneksel ses sıkıştırma formatları, G.729 ve CELP ailesi kodekleri gibi, çerçeve-ara tahmin kullanır; burada her ses çerçevesi önceki çerçeveden gelen durum bilgisi ve perde tahmin vektörlerine bağlıdır. Yoğun bir ağda bir paket düşerse, eksik durum ileriye yayılır ve birkaç yüz milisaniye boyunca aşağı akış sesini bozar.
iLBC bu bağımlılığı ortadan kaldırır. iLBC’deki her ses çerçevesi bağımsız olarak kodlanır. Paket $N$ iletim sırasında düşerse, paket $N+1$ tam akustik doğrulukla çözümlenir.
İki Çalışma Modu ($20\text{ ms}$ vs. $30\text{ ms}$)
Telekomünikasyon mühendislerine esnek gecikme yönetimi sağlamak için iLBC iki zorunlu çalışma modu tanımlar:
- $20\text{ ms}$ Kare Modu ($15.20\text{ kbit/s}$):
- Her karede 160 ses örneğini 38 bayta ($304\text{ bits}$) kodlar.
- Daha düşük algoritmik tampon gecikmesi sağlar, bu da etkileşimli iletişimler için çok uygundur.
- $30\text{ ms}$ Kare Modu ($13.33\text{ kbit/s}$):
- Her karede 240 ses örneğini 50 bayta ($400\text{ bits}$) kodlar.
- Bit tüketimini yaklaşık $12%$ azaltır, uzun mesafe bağlantılarında ağ yükü verimliliğini optimize eder.
Gelişmiş Paket Kaybı Gizleme (PLC)
Paket kayıpları meydana geldiğinde, iLBC durum değişkenliğine sahip bir LPC (Doğrusal Öngörücü Kodlama) sentez filtresi kullanarak eksik pitch-döngüsü temsillerini komşu karelerden alınan sınır durumlarıyla yeniden oluşturur. Tıklama, dijital patlama ya da sert susturma oluşturmak yerine, kaybolan ses paketleri zarif bir şekilde bozulur.
Ses Kalitesi vs. Bit Hızı Profili
İdeal ağ koşulları altında (%0 paket kaybı), iLBC yaklaşık 4.14 (5.0 üzerinden) Ortalama Görüş Puanı (MOS) elde eder. Sıkıştırılmamış G.711 PCM ($\mu$-law at $\sim 4.3$) değerinin biraz altında olmasına rağmen, iLBC paket kayıp oranları $5%\text{ to }10%$ kadar yüksek olduğunda ses netliğini korur; bu durumda G.729 veya G.711 anlaşılabilirliği önemli ölçüde düşer.
4. .ilbc Ses Dosyalarını Açma ve Çalma
.ilbc özel bir ham telefonik akış formatı olduğu için, MP3 veya WAV gibi genel amaçlı tüketici medya kapsayıcısı yerine, ana akım tüketici oynatıcıları genellikle özel codec paketleri olmadan bunu her zaman algılayamaz.
Yöntem 1: Audacity Kullanarak (Ham Veri İçe Aktarma)
Audacity, ham PCM dökümlerini veya çözümlenmiş iLBC ses dosyalarını içe aktarabilir:
- Audacity‘yi başlat.
- File > Import > Raw Data… menüsüne gidin
- Dosyayı seçin ve kodlamayı Signed 16-bit PCM, Bayt sırasını Little-endian, 1 Channel (Mono) ve Örnekleme hızını 8000 Hz olarak ayarlayın.
Yöntem 2: FFplay ile Komut Satırı Oynatma
FFmpeg derlemeniz libilbc uzantısı ile derlenmişse:
ffplay -f ilbc sample.ilbc
Yöntem 3: Özel VoIP Analizörleri
Wireshark gibi ağ tanı araçları, yakalanan SIP/RTP paket oturumlarından .ilbc ses yüklerini doğrudan çıkarıp yeniden oluşturabilir ve yerleşik RTP Player yardımcı programı ile oynatabilir.
5. .ilbc Ses Dosyalarını Oluşturma ve Dönüştürme
.ilbc ses ile çalışmak 16-bit, tek kanallı, $8000\text{ Hz}$ giriş sesini gerektirir.
FFmpeg Kullanarak iLBC Kodlama
Mevcut bir .wav veya .mp3 ses örneğini bir .ilbc bit akışına dönüştürmek için:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: Gerekli 8 kHz hızına yeniden örnekler.-ac 1: Çok kanallı sesleri mono’ya indirger.-c:a libilbc:libilbcreferans kodlayıcısını kullanır.
Çerçeve Modunu Belirleme ($20\text{ ms}$ veya $30\text{ ms}$)
-mode bayrağını kullanarak çerçeve modunu seçebilirsiniz:
# 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
Bir .ilbc Dosyasını Standart WAV’a Geri Çözme
Bir .ilbc dosyasını her yerde oynatılabilir sıkıştırılmamış bir WAV dosyasına dönüştürmek için:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. Sıkça Sorulan Sorular (SSS)
Q1: iLBC ses formatı hangi temel sorunu çözmek için oluşturuldu?
iLBC formatı, her ses çerçevesini bağımsız hâle getirerek IP ağları üzerinden konuşma anlaşılabilirliğini korumak ve paket kaybı hatalarının sonraki ses çerçevelerine yayılmasını önlemek için tasarlanmıştır.
Q2: Bir .ilbc dosyasının iki çalışma bit hızı nedir?
Bir .ilbc akışı, $30\text{ ms}$ çerçeveler kullanıldığında $13.33\text{ kbit/s}$ ya da $20\text{ ms}$ çerçeveler için yapılandırıldığında $15.20\text{ kbit/s}$ hızında çalışır.
Q3: iLBC formatı yüksek kaliteli müzik akışı için kullanılabilir mi?
Hayır, iLBC, $8\text{ kHz}$ örnekleme oranıyla sınırlı, dar bantlı bir ses kodekidir ve yalnızca $90\text{ Hz}$ ile $4000\text{ Hz}$ arasındaki insan konuşması için optimize edilmiştir.
Q4: iLBC ses codec’i telif ücreti gerektirmiyor mu?
Evet, iLBC, IETF RFC 3951 kapsamında tamamen standartlaştırılmıştır ve WebRTC projesi aracılığıyla açık kaynaklı, telif ücreti gerektirmeyen 3 maddeli BSD lisansı altında yayınlanmıştır.
Q5: iLBC, modern Opus codec’i ile nasıl karşılaştırılır?
iLBC, erken genişbant ağlarda dar bantlı VoIP için paket kaybı gizleme sağlarken, modern Opus kodeği dinamik bit hızlarını, tam bant ($48\text{ kHz}$) sesini ve daha düşük algoritmik gecikmeyi destekler.
7. Resmi Özellikler ve Referanslar
- IETF RFC 3951 Özellikleri: İnternet Düşük Bit Hızlı Kodek (iLBC) Konuşma ve Ses Standardı
- IETF RFC 3952 Yük Formatı: iLBC için Gerçek Zamanlı Taşıma Protokolü (RTP) Yük Formatı
- WebRTC Açık Kaynak Projesi: WebRTC Kodek Lisanslaması ve iLBC Uygulaması
- FFmpeg Codec Belgeleri: FFmpeg libilbc Entegrasyon Kılavuzu