本文是该系列的第19篇。语音编码压缩的目的是在尽量不损失信息的情况下降低码率,从而节省存储空间和通信带宽。To Multimedia File这个block就提供几种语音压缩方式:CCITT A律、CCITT μ律、GSM 6.10、PCM、ADPCM。本文将介绍一种很简单的增量调制(DM)编码方式。
DM编解码
DM(Delta Modulation)编码的原理很简单,信号处理的学习者对这个概念也不陌生(博主是在《现代通信技术概论》这本书中第一次接触到这个概念)。其编码原理如下:
第一幅图为语音信号,第二幅图为编码后的PWM信号。在对语音信号采样时,编码系统会比较相邻两个时刻的采样值,若信号幅度增加,则编码为1;若信号幅度减少,则编码为0(也可以相反)。系统的编码结果仅仅需要1比特来表示信号的增量关系。
解码时选择一个固定的量化阶数,根据DM编码值为1或0来决定输出信号是加上一个量化阶数、还是减去一个量化阶数。
System Generator设计
在Simulink中添加block按下图连接:
使用Delay做一个单位的延迟,存储“过去时刻的采样值”a,并与当前时刻的采样值b一同输入到Relational这个block中进行对比,构成DM编码;编码结果经过一个非门用来控制加法器(AddSub,Operation配置为Addition or subtraction),决定加上或减去量化阶数,构成DM解码。
编码器输出的1表示正的增量,0表示负的增量;但是AddSub的sub端口为1时执行a-b(减去量化阶数),为0时执行a+b(加上量化阶数)。由于两个部分的逻辑恰好相反,因此中间加一个Invert block取反。
性能分析
运行仿真,播放解码后的音频文件会发现噪声很严重,信号质量明显下降。这也是DM编解码的固有缺陷。PCM编码是对每个采样值的幅度都用一定位宽的数据量化;DM编码每个采用值只用1比特量化。虽然码率降低了很多,但信噪比也大大下降。
DM编码有如下两个固有缺陷:
斜率过载:当输入信号变化速率过快时,比较器的输出跟不上输入信号的快速变化。
粒状噪声:当输入信号变化较慢时,相邻两个采样值的差值非常接近0,此时比较器的输出会在0和1之间跳变。
用到的block功能如下:
Invert:对输入的定点数据按位取反;
Relational:比较器,可判断的等式包括a=b、a!=b、a小于b、a>b、a=b,输出结果为bool类型;
Constant:输出常数值,但由于设置的位宽有限,软件会选择一个所能表示的与设定值最接近的值。