主要内容

互联网低比特率编解码器(ILBC)用于VoIP

此示例实现Internet低比特率编解码器(ILBC)并说明其使用。ILBC专为通过VoIP(互联网协议的语音)编码和解码用于传输的语音。

网络电话

通过互联网协议的语音是一系列技术,允许IP网络用于语音应用,如电话和电话会议。通常需要压缩来减少这些应用程序的带宽需求。为了提高效率,VoIP通常使用轻量级但不可靠的用户数据报协议(UDP)实现。在有损网络上,为了保持接收到的语音质量,需要进行丢包校正。

基本ILBC设计和性能

ILBC专为压缩通过互联网传输的语音而压缩。因此,其算法仅涵盖90-4000Hz的窄频率范围,并且它将引用调整到正常语音的感知编码。对ILBC编码器的所有输入信号必须是脉冲代码调制(PCM)语音信号,以8000Hz采样,16位样本范围为-32768至+32767。

ILBC为两种不同的传输速率定义,具有在每30毫秒或一次后编码的数据分组。每30ms编码的优点是编码数据速率较低:13.33kbit / sec,而不是15.20kbit / sec,适用于20ms帧。然而,每30ms的编码导致接收的语音中的延迟更长50%,这可能导致不希望的延迟。

由于对ILBC的所有输入必须是8000 Hz,16位PCM语音,因此输入速率为(8000Hz)*(16位)= 128 kbit / sec。因此,ILBC分别将语音压缩为13.33kbit / sec和15.20kbit / sec模式的原始数据速率的10.4%和11.9%。

除了编码到低数据传输速率之外,ILBC还提供了一种用于容易地实现分组丢失校正(PLC)系统的框架。编解码器旨在通过互联网进行实时演讲,但互联网在实时路由信息中的路由信息​​受到随机延迟,这使得许多数据包对ILBC解码器无用。PLC的作业是根据缺少的数据包来插入缺少数据包的语音。虽然ILBC未定义特定的PLC算法,但该示例实现了一个简单的PLC用于图示。

iLBC示例模型

下面显示的模型在语音信号中读取,并且在通过ILBC之后,使用默认音频设备播放输出。

使用ILBC示例模型

这个示例模型的顶层仅由少数简单块组成。基本操作是加载语音信号并将其传递给iLBC Encoder块,将其转换为iLBC信息流。接下来,数据包通过一个模拟的有损通道发送,这将导致随机数据包被设置为全零。最后,数据包被发送到iLBC Decoder块,被转换回语音信号,然后播放。此外,还有一个手动开关,可以在模型运行时进行切换,以比较原始语音信号和解码信号。

双击模型右上角的配置块会弹出一个对话框,可以将数据传输速率更改为两种iLBC模式之一(13.33 kbit/sec或15.20 kbit/sec)。解码器的传输速率必须设置为与编码器相同,否则将发生错误。此外,用户可以指定是否对编码器和解码器中的所有内部计算使用双精度或单精度。

双击有损通道子系统会导致一个对话框,允许设置丢失的数据包的百分比。ILBC解码器的数据包丢失隐藏算法被调整为校正0-10%的数据包丢失。丢包率高于10%将很容易听到。

ILBC编码器和解码器块在该模型中实现为子系统。为了适应重用水平,它们还利用了一个示例库,可以在dspilbclib。此库包含编码器和解码器使用的四个辅助块。随意打开图书馆并在块下面看,看看ILBC如何在Simulink®中实现。万博1manbetx