aspose.info
VI

Hướng Dẫn Định Dạng Âm Thanh iLBC: Tính Năng, Kiến Trúc & Cách Mở Tệp .ilbc

Cập nhật

1. Định dạng âm thanh iLBC là gì?

Internet Low Bitrate Codec ban đầu được tạo ra bởi Global IP Solutions (GIPS) — một công ty kỹ thuật âm thanh của Thụy Điển, được Google mua lại vào năm 2010. Được Đội ngũ Kỹ thuật Internet (IETF) định nghĩa trong RFC 3951 với việc bao gói tải trọng RTP được mô tả trong RFC 3952, iLBC được thiết kế đặc biệt để truyền giọng nói ổn định qua các liên kết IP không ổn định.

Trong khi các trình duyệt web hiện đại thường sử dụng codec Opus cho giao tiếp thời gian thực hiện đại, iLBC vẫn là một tiêu chuẩn quan trọng, không có bản quyền, được nhúng trong các ngăn xếp điện thoại doanh nghiệp, khách hàng SIP, hồ sơ tương thích ngược WebRTC, và các thiết bị VoIP kế thừa do Cisco, Polycom và hệ thống PBX Asterisk sản xuất.

2. Các đặc điểm chính của iLBC

Tham sốThông số
Tiêu chuẩn hoáIETF RFC 3951 (Codec), RFC 3952 (Tải trọng RTP)
Các phần mở rộng tệp phổ biến.ilbc, .lbc
Kiểu phương tiện MIMEaudio/iLBC
Tần số mẫu$8\text{ kHz}$ (băng hẹp)
Độ phân giải lượng tửPCM tuyến tính 16-bit
Kênh âm thanhMono (Giọng nói kênh đơn)
Độ dài khung được hỗ trợ$20\text{ ms}$ chế độ và $30\text{ ms}$ chế độ
Tốc độ bit hoạt động$15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$)
Số bit tải trọng mỗi khối$304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$)
Định danh tiêu đề ma thuật#!iLBC20\n ($20\text{ ms}$) hoặc #!iLBC30\n ($30\text{ ms}$)
Cấp phépMiễn phí bản quyền (mã nguồn mở BSD 3 điều khoản qua WebRTC)

3. Các tính năng chi tiết & Thiết kế kiến trúc

Mã hoá khung độc lập (Không lan truyền lỗi)

Các định dạng nén giọng nói truyền thống như G.729 và các codec họ CELP sử dụng dự đoán liên khung, trong đó mỗi khung âm thanh phụ thuộc vào thông tin trạng thái và các vector dự đoán cao độ từ khung trước. Nếu một gói tin bị mất trên mạng đông đúc, trạng thái bị thiếu sẽ lan truyền về phía trước, làm méo âm thanh downstream trong vài trăm mili giây.

iLBC loại bỏ sự phụ thuộc này. Mỗi khung giọng nói trong iLBC được mã hoá một cách độc lập. Nếu gói tin $N$ bị mất trong quá trình truyền, gói tin $N+1$ sẽ giải mã với độ trung thực âm học đầy đủ.

Hai chế độ hoạt động ($20\text{ ms}$ so với $30\text{ ms}$)

Để cung cấp cho các kỹ sư viễn thông khả năng quản lý độ trễ linh hoạt, iLBC định nghĩa hai chế độ hoạt động bắt buộc:

  1. $20\text{ ms}$ Chế độ khung ($15.20\text{ kbit/s}$):
    • Mã hoá 160 mẫu âm thanh mỗi khung thành 38 byte ($304\text{ bits}$).
    • Cung cấp độ trễ đệm thuật toán thấp hơn, phù hợp cho các giao tiếp tương tác.
  2. $30\text{ ms}$ Chế độ khung ($13.33\text{ kbit/s}$):
    • Mã hoá 240 mẫu âm thanh mỗi khung thành 50 byte ($400\text{ bits}$).
    • Giảm tiêu thụ bit khoảng $12%$, tối ưu hoá hiệu suất tải trọng mạng trên các kết nối đường dài.

Giảm thiểu mất gói dữ liệu nâng cao (PLC)

Khi các gói tin bị mất xảy ra, iLBC sử dụng bộ lọc tổng hợp LPC (Linear Predictive Coding) biến trạng thái để tái tạo các biểu diễn chu kỳ cao độ bị thiếu bằng cách sử dụng các trạng thái biên từ các khung lân cận. Thay vì tạo ra tiếng click, tiếng pop kỹ thuật số hoặc âm thanh cắt đột ngột, các gói tin thoại bị mất sẽ giảm dần một cách nhẹ nhàng.

Chất lượng âm thanh so với hồ sơ bitrate

Trong điều kiện mạng lý tưởng (mất gói 0%), iLBC đạt Điểm Đánh Giá Trung Bình (MOS) khoảng 4.14 (trên thang 5.0). Mặc dù hơi thấp hơn so với G.711 PCM không nén ($\mu$-law ở $\sim 4.3$), iLBC vẫn giữ được độ rõ của giọng nói ở mức mất gói lên tới $5\%\text{ đến }10\%$, trong khi khả năng hiểu của G.729 hoặc G.711 giảm đáng kể.

4. Cách mở và phát tệp âm thanh .ilbc

Vì .ilbc là định dạng luồng điện thoại thô chuyên biệt chứ không phải là container đa phương tiện đa năng cho người tiêu dùng (như MP3 hoặc WAV), các trình phát phổ biến cho người tiêu dùng không phải lúc nào cũng phát hiện được nó nếu không có các gói codec chuyên dụng.

Phương pháp 1: Sử dụng Audacity (Nhập dữ liệu thô)

Audacity có thể nhập các tệp dump PCM thô hoặc các tệp âm thanh iLBC đã giải mã:

  1. Khởi chạy Audacity.
  2. Đi tới File > Import > Raw Data…
  3. Chọn tệp và đặt mã hoá thành Signed 16-bit PCM, thứ tự byte thành Little-endian, 1 Channel (Mono), và tần số mẫu thành 8000 Hz.

Phương pháp 2: Phát qua dòng lệnh bằng FFplay

Nếu bản dựng FFmpeg của bạn được biên dịch với phần mở rộng libilbc:

ffplay -f ilbc sample.ilbc

Phương pháp 3: Trình phân tích VoIP chuyên dụng

Các công cụ chẩn đoán mạng như Wireshark có thể trích xuất và tái tạo các tải trọng giọng nói .ilbc trực tiếp từ các phiên gói SIP/RTP đã ghi lại và phát chúng qua tiện ích RTP Player tích hợp.

5. Cách tạo và chuyển đổi tệp âm thanh .ilbc

Làm việc với âm thanh .ilbc yêu cầu đầu vào âm thanh 16-bit, kênh đơn, $8000\text{ Hz}$.

Mã hoá sang iLBC bằng FFmpeg

Để chuyển đổi một mẫu âm thanh .wav hoặc .mp3 hiện có thành luồng bit .ilbc:

ffmpeg -i input_speech.wav \
  -ar 8000 \
  -ac 1 \
  -c:a libilbc \
  output_audio.ilbc
  • -ar 8000: Làm lại mẫu âm thanh để đạt tần số 8 kHz yêu cầu.
  • -ac 1: Hạ trộn âm thanh đa kênh thành mono.
  • -c:a libilbc: Sử dụng bộ mã hoá tham chiếu libilbc.

Xác định chế độ khung ($20\text{ ms}$ hoặc $30\text{ ms}$)

Bạn có thể chọn chế độ khung bằng cách sử dụng cờ -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

Giải mã tệp .ilbc trở lại định dạng WAV chuẩn

Để chuyển đổi tệp .ilbc thành tệp WAV không nén có thể phát ở bất kỳ đâu:

ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav

6. Câu hỏi thường gặp (FAQ)

Câu 1: Vấn đề chính mà định dạng âm thanh iLBC được tạo ra để giải quyết là gì?

Định dạng iLBC được thiết kế để duy trì khả năng hiểu lời nói qua các mạng IP bằng cách làm cho mỗi khung âm thanh độc lập, ngăn lỗi mất gói lan truyền vào các khung lời nói tiếp theo.

Câu 2: Hai tốc độ bit hoạt động của tệp .ilbc là gì?

Một luồng .ilbc hoạt động ở mức $13.33\text{ kbit/s}$ khi sử dụng khung $30\text{ ms}$ hoặc $15.20\text{ kbit/s}$ khi được cấu hình cho khung $20\text{ ms}$.

Câu 3: Định dạng iLBC có thể được sử dụng để truyền phát nhạc chất lượng cao không?

Không, iLBC là một codec giọng nói hẹp dải bị giới hạn nghiêm ngặt ở tần số mẫu $8\text{ kHz}$, được tối ưu hóa chỉ dành cho giọng nói con người trong khoảng $90\text{ Hz}$ đến $4000\text{ Hz}$.

Câu 4: Bộ mã âm thanh iLBC có miễn phí bản quyền không?

Có, iLBC đã được tiêu chuẩn hoá đầy đủ theo IETF RFC 3951 và được phát hành dưới giấy phép mã nguồn mở, không thu phí bản quyền 3-clause BSD thông qua dự án WebRTC.

Câu 5: iLBC so sánh như thế nào với bộ mã Opus hiện đại?

Trong khi iLBC cung cấp khả năng che giấu mất gói cho VoIP hẹp dải trong các mạng băng rộng đầu tiên, codec Opus hiện đại hỗ trợ bitrate động, âm thanh toàn dải ($48\text{ kHz}$), và độ trễ thuật toán thấp hơn.


7. Các thông số kỹ thuật và tài liệu tham khảo chính thức