iLBC (internet Low Bitrate Codec)

iLBC (internet Low Bitrate Codec) is designed for narrow band speech and has two supported bit rates. The payload bit rate of 13.33 kbit/s has an encoding frame length of 30 milliseconds while the payload bit rate of 15.20 kbit/s has an encoding frame length of 20 milliseconds. iLBC uses a block-independent linear-predictive coding (LPC) algorithm. When the codec operates at block lengths of 20 ms, it produces 304 bits per block. Similarly, for block lengths of 30 ms it produces 400 bits per block. The two modes for the different frame sizes operate in a very similar way. Where they differ, it is usually explicitly noted by x/y, where x refers to the 20 ms mode and y refers to the 30 ms mode.

The iLBC speech codec is eminently suitable for robust voice communication over IP. The codec smoothly handles the case of lost frames through graceful speech quality degradation; lost frames may often occur in connection with lost or delayed IP packets. Standard low bit rate codecs exploit dependencies between speech frames, which unfortunately result in error propagation when packets are lost or delayed. In contrast, iLBC encoded speech frames are independent and so this problem will not occur. This unique technology gives iLBC robustness against packet loss and delay.

The iLBC algorithm results in a speech coding system with a controlled response to packet loss similar to what is known from pulse code modulation (PCM) with packet loss concealment (PLC), such as the ITU-T G.711 standard which operates at a fixed bit rate of 64 kbit/s. At the same time, the algorithm enables fixed bit rate coding with a quality-versus-bit rate tradeoff close to state-of-the-art. For example, in comparison to G.729A, iLBC yields slightly better voice quality for about the same complexity of algorithms yet also has a higher robustness in dealing with packet loss. Some of the applications for which this coder is suitable are: real time communications such as telephony and videoconferencing, streaming audio, archival, and messaging.

Features

  • MIPS/memory requirements for various platforms are available
  • PSQM/PSQM+ values under different network conditions are also available.
  • Bitrate 13.33 kbps (399 bits, packetized in 50 bytes) for the frame size of 30 ms and 15.2 kbps (303 bits, packetized in 38 bytes) for the frame size of 20 ms
  • Basic quality higher then G.729A, high robustness to packet loss
  • Computational complexity in a range of G.729A
  • Speech quality better than G.729A and G.723.1.
  • Better packet loss robustness compared to other low-bit rate codecs,including G.729A,G.729E,G.723.1 and G.728.
  • iLBC supports multiple frame sizes giving increased flexibility to meet the needs of different applications and/or VoIP equipment.
  • Provide low delay and high packet loss robustness for low-bit rate codecs.
  • iLBC delivers the same basic quality as G.729E and exceeds G.729E under packet loss conditions
  • Gain-shape waveform matching forward in time
  • Gain-shape waveform matching backward in time
  • Start state encoding
  • Pitch enhancement
  • Packet loss concealment
  • Optimized for high performance on leading edge DSP architectures
  • Multichannel implementation

Configurations

  • DAA interface using linear codec at 8.0 kHz sample rate
  • Direct interface to 8.0 kHz PCM data stream (A-law or μ-law)
  • North American/International Telephony (including caller ID) support available
  • Simultaneous DTMF detector operation available - (less than 10 talkoff hits on Bellcore test tape set)
  • MF tone detectors, general purpose programmable tone detectors/generators available
  • Data/Facsimile/Voice Distinction available
  • Common compressed speech frame stream interface to support systems with multiple speech coders
  • Dynamic speech coders selection if multiple speech codecs available
  • Can be integrated with G.168 Echo Canceller and Tone Detection/Regeneration modules
  • Multiple ports can be executed on a single DSP

Reference

http://www.vocal.com/speech_coders/ilbc.html

http://www.vocal.com/audio_examples/other_coders.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iLBC (internet Low Bitrate Codec) is a speech codec used for encoding and decoding speech signals. To decode an iLBC-encoded audio file, you can use a decoder library or tool that supports iLBC decoding. Here is an example of how you can decode an iLBC file using the libilbc library in C: 1. Install the libilbc library on your system. 2. Include the necessary header files in your C code: ```c #include <stdio.h> #include <stdlib.h> #include <ilbc/ilbc.h> ``` 3. Write a function to perform the iLBC decoding: ```c void ilbc_decode(const char* input_file, const char* output_file) { FILE* fin = fopen(input_file, "rb"); FILE* fout = fopen(output_file, "wb"); // Get input file size fseek(fin, 0, SEEK_END); long input_size = ftell(fin); rewind(fin); // Allocate memory for input and output buffers int16_t* input_buffer = (int16_t*)malloc(input_size); int16_t* output_buffer = (int16_t*)malloc(input_size * 2); // Double the size for stereo audio // Read the input file into the input buffer fread(input_buffer, sizeof(int16_t), input_size / sizeof(int16_t), fin); // Create an iLBC decoder instance iLBC_Dec_Inst_t* dec_inst = iLBC_create(1); // 1 for 20ms frame size // Perform the decoding int num_frames = input_size / (2 * sizeof(int16_t)); // Assuming mono audio, 2 bytes per sample iLBC_decode(dec_inst, input_buffer, num_frames, output_buffer); // Write the decoded audio to the output file fwrite(output_buffer, sizeof(int16_t), num_frames * sizeof(int16_t), fout); // Cleanup fclose(fin); fclose(fout); free(input_buffer); free(output_buffer); iLBC_free(dec_inst); } ``` 4. Call the `ilbc_decode` function with the input and output file paths: ```c int main() { const char* input_file = "encoded.ilbc"; const char* output_file = "decoded.pcm"; ilbc_decode(input_file, output_file); return 0; } ``` Make sure to replace "encoded.ilbc" with the path to your iLBC-encoded file and "decoded.pcm" with the desired output file path. After running the program, you should have the decoded audio in the output file. Please note that this is just a basic example, and you may need to modify it according to your specific requirements and the iLBC decoder library you are using.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值