主要内容

因特网低比特率编解码器(iLBC)用于VoIP

这个例子实现了Internet低比特率编解码器(iLBC),并说明了它的使用。iLBC设计用于编码和解码语音,以便通过VoIP (Internet Voice Over Protocol)传输。

网络电话

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

iLBC的基本设计和性能

iLBC是为压缩在因特网上传输的语音而设计的。因此,它的算法只意味着覆盖90- 4000hz的狭窄频率范围,它实现了调至正常语音的感知编码。iLBC编码器的所有输入信号必须是脉冲码调制(PCM)语音信号,采样频率为8000 Hz,采样范围为-32768到+32767的16位采样。

iLBC被定义为两种不同的传输速率,一个数据包在每30毫秒或每20毫秒的语音之后被编码。每30毫秒编码一次的优点是编码的数据速率较低:13.33 kbit/sec,而20毫秒帧的编码速率为15.20 kbit/sec。然而,每30毫秒编码一次会导致接收到的语音多50%的延迟,这可能会导致不希望的延迟。

由于iLBC的所有输入必须为8000hz 16位PCM语音,因此输入速率为(8000hz) *(16位)= 128kbit /sec。因此,在13.33 kbit/sec和15.20 kbit/sec模式下,iLBC分别将语音压缩到原始数据速率的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)。解码器的传输速率必须设置为与编码器相同,否则将发生错误。此外,用户可以指定对编码器和解码器中的所有内部计算是使用双精度还是单精度。

双击Lossy Channel子系统会弹出一个对话框,允许设置丢失包的百分比。iLBC解码器的包丢失隐藏算法被调整为纠正0-10%的包丢失。高于10%的丢包率很容易被听到。

iLBC编码器和解码器块在该模型中作为子系统实现。为了适应一定程度的重用,他们还利用了一个示例库,可以在dspilbclib。这个库包含编码器和解码器使用的四个助手块。您可以随意打开库并查看下面的块,看看iLBC是如何在Simulink®中实现的。金宝app

双击开关块将在音频播放原始语音信号和iLBC解码信号之间切换。时间范围块绘制原始语音和iLBC解码语音。观察解码后的语音与原始语音的匹配程度。

另请参阅

||

相关的话题