1. iLBC 오디오 포맷이란?
Internet Low Bitrate Codec은 원래 Global IP Solutions (GIPS)—2010년에 Google이 인수한 스웨덴 오디오 엔지니어링 회사에 의해 만들어졌습니다. 인터넷 엔지니어링 태스크 포스(IETF)에 의해 RFC 3951 로 정의되고 RTP 페이로드 캡슐화는 RFC 3952 에서 설명된 바와 같이, iLBC는 불안정한 IP 링크에서 강인한 음성 전송을 위해 특별히 설계되었습니다.
현대 웹 브라우저가 실시간 통신을 위해 Opus 코덱을 자주 사용하지만, iLBC는 기업 전화 시스템, SIP 클라이언트, WebRTC 하위 호환 프로파일, 그리고 Cisco, Polycom, Asterisk PBX 시스템이 제조한 레거시 VoIP 장비에 내장된 중요한 로열티 프리 표준으로 남아 있습니다.
2. iLBC의 주요 특성
| 매개변수 | 사양 |
|---|---|
| 표준화 | IETF RFC 3951 (코덱), RFC 3952 (RTP 페이로드) |
| 일반 파일 확장자 | .ilbc, .lbc |
| MIME 미디어 타입 | audio/iLBC |
| 샘플링 주파수 | $8\text{ kHz}$ (협대역) |
| 양자화 해상도 | 16비트 선형 PCM |
| 오디오 채널 | 모노 (단일 채널 음성) |
| 지원되는 프레임 길이 | $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}$) |
| 라이선스 | 로열티 프리 (WebRTC를 통한 3조항 BSD 오픈 소스) |
3. 심층 기능 및 아키텍처 설계
독립 프레임 인코딩 (오류 전파 없음)
G.729와 CELP 계열 코덱과 같은 전통적인 음성 압축 포맷은 프레임 간 예측을 활용합니다. 여기서 각 오디오 프레임은 이전 프레임의 상태 정보와 피치 예측 벡터에 의존합니다. 혼잡한 네트워크에서 패킷이 손실되면, 누락된 상태가 앞으로 전파되어 수백 밀리초 동안 하위 오디오가 손상됩니다.
iLBC는 이러한 의존성을 없앱니다. iLBC의 각 음성 프레임은 독립적으로 인코딩됩니다. 전송 중에 패킷 $N$이 손실되면, 패킷 $N+1$은 완전한 음향 충실도로 디코드됩니다.
두 가지 작동 모드 ($20\text{ ms}$ vs. $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(선형 예측 코딩) 합성 필터를 사용하여 인접 프레임의 경계 상태를 이용해 누락된 피치 사이클 표현을 복원합니다. 클릭, 디지털 팝, 거친 음소거를 생성하는 대신, 손실된 음성 패킷은 점진적으로 품질이 저하됩니다.
오디오 품질 vs. 비트레이트 프로필
이상적인 네트워크 조건(패킷 손실 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와 같은 네트워크 진단 도구는 캡처된 SIP/RTP 패킷 세션에서 .ilbc 음성 페이로드를 직접 추출 및 재구성하고, 내장된 RTP Player 유틸리티를 통해 재생할 수 있습니다.
5. .ilbc 오디오 파일 생성 및 변환 방법
.ilbc 오디오를 사용하려면 16비트, 단일 채널, $8000\text{ Hz}$ 입력 오디오가 필요합니다.
FFmpeg를 사용한 iLBC 인코딩
기존 .wav 또는 .mp3 오디오 샘플을 .ilbc 비트스트림으로 변환하려면:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: 오디오를 필요한 8 kHz 속도로 재샘플링합니다.-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 스트림은 $30\text{ ms}$ 프레임을 사용할 때 $13.33\text{ kbit/s}$ 또는 $20\text{ ms}$ 프레임으로 구성할 때 $15.20\text{ kbit/s}$ 로 동작합니다.
Q3: iLBC 형식을 고음질 음악 스트리밍에 사용할 수 있나요?
아니요, iLBC는 $8\text{ kHz}$ 샘플링 레이트로 엄격히 제한된 협대역 음성 코덱이며, $90\text{ Hz}$에서 $4000\text{ Hz}$ 사이의 인간 음성에만 최적화되어 있습니다.
Q4: iLBC 오디오 코덱은 로열티가 없나요?
예, iLBC는 IETF RFC 3951에 완전히 표준화되어 있으며 WebRTC 프로젝트를 통해 오픈 소스, 로열티 무료 3조항 BSD 라이선스로 제공됩니다.
Q5: iLBC는 최신 Opus 코덱과 어떻게 비교되나요?
iLBC가 초기 광대역 네트워크에서 협대역 VoIP를 위한 패킷 손실 은폐를 제공했지만, 최신 Opus 코덱은 동적 비트레이트, 전체 대역 ($48\text{ kHz}$) 오디오 및 낮은 알고리즘 지연을 지원합니다.
7. 공식 사양 및 참고 자료
- IETF RFC 3951 사양: 인터넷 저비트 전송 코덱 (iLBC) 음성 및 오디오 표준
- IETF RFC 3952 페이로드 형식: iLBC용 실시간 전송 프로토콜 (RTP) 페이로드 형식
- WebRTC 오픈 소스 프로젝트: WebRTC 코덱 라이선스 및 iLBC 구현
- FFmpeg 코덱 문서: FFmpeg libilbc 통합 가이드라인