语音编码是语音信号的编码,比特率比原始的数字语言的传输速率低。人类的听觉系统只能捕捉到语音信号的某些方面。因此,感知语音信号的相关信息可以提取其特征,从而在更低的带宽下产生一个等效的波形。线性预测技术于1947年由维纳提出,并于1967年由板仓等人应用于语音的分析与合成方面,该技术已广泛应用于语音信号的压缩。
目前,线性预测编码器多应用码激励线性预测(CELP)和低延迟的码激励线性预测(LD-CELP)方法。它们分别使用向前和向后的线性预测方法,即查表获得编码器与语音剩余信号对应[1-2]。在混合激励线性预测(MELP)[3]中,引入了另一类语音——过渡语音,混合激励即将周期和噪声激励混合,是MELP模型的另一个显著特征。
以上几种方法为目前主流的处理方法,但是对于处理结果、选择条件等并没有完整的相关数据。文中主要针对比特率和感知质量方面对3种线性预测模型进行了比较。在比较声音编码器的过程中,对声音质量的主观测试是评估语音编码器的一个重要步骤。只有在人类对声音质量满意的情况下,一个语音编码器才会被市场接受。在考虑这个因素的情况下,使用平均意见评分(MOS)这一最常见的评估方法对结果进行了主观评价。
1 语音编码算法线性预测模型以CELP、ld-CELP和MELP算法为核心,如图 1所示。在LPC模型中,声音信号被分为语音和非语音信号。当声带产生振动,并在LPC源滤波器模型中被表示为周期性的激励时,就产生了声音信号。非语音信号由声道的气流产生,而不涉及声带,这些信号通常被表示为白高斯噪音。
LPC编码器由带有自适应延迟和增益因子的线性预测器组成[4]。由于语音是由语音和非声音信号的组合产生的,所以,它被作为重要的感知语音观察。
1.1 码激励线性预测算法预测剩余信号可用于提高编码器输出的感知质量。一般来说,在有码矢表的码本中获得与剩余信号最接近的匹配。通过码矢指数的选择,可以得到误差度量的最小值。通过码本来获得用于语音信号建模代码的方法叫做语音编码,发送端与接收端使用同样的码本。但是,在接收端,其指数用于获得码矢和合成滤波器。
CELP算法主要利用了分析合成(Analysis-by-Synthesis,AbS)方法,在此方法中,发送端分析信号产生线性预测系数,然后,利用这些系数来合成发送端内部的语音信号。当生成了1个错误信号时,可以从码本中选择1组码矢以减少感知加权平均平方误差。
在CELP发送端中,首先,将输入语音分解为大约30 ms的帧,而后进行短期线性预测,即对每个输入帧的共振峰(光谱包络线峰值)进行估计。CELP算法的感知加权滤波器的传递函数为
$ W\left( z \right) = \frac{{1-Q\left( z \right)}}{{1-Q\left( {\frac{z}{\gamma }} \right)}}, $ | (1) |
$ \begin{array}{l} \;\;\;\;\;\;\;Q\left( z \right) = \sum\limits_{i = 1}^M {{q_i}{z^{-i}}}, \\ Q\left( {\frac{z}{\gamma }} \right) = \sum\limits_{i = 1}^M {{\gamma ^i}{q_i}{z^{-i}}}, 0 < \gamma < 1, \end{array} $ | (2) |
其中:M为LPC预测序列长度;qi为量化LPC系数。
在找到短期LPC系数后,每一帧都被分成4个子帧,即每个7.5 ms。每一子帧均作为长期预测滤波器的输入,用以估计语音信号的音高和强度。在完成解码后,后滤波阶段可以被选择性的添加,以提高输出信号的质量。CELP算法中,位的分配[5]如表 1所示。
在CELP算法中30 ms的帧划分相当于在8 000 Hz采样频率下的240个采样。因此,CELP的比特率是14/30 ms=4.8 kb/s。
1.2 低延迟码激励线性预测算法CELP和LD-CELP算法只在在线性预测中适应的类型上存在差异——分别是向前和向后。低延迟是通过使用后向自适应预测器和短激励向量[2]来实现的。在传输过程中,只有激励码本的指数被传输,而所有其他参数都是通过对先前量子化语音的向后适应进行更新的。LD-CELP算法使用了一个调整系统函数来作为过滤器权重。
$ W\left( z \right) = \frac{{1-Q\left( {\frac{z}{{{\gamma _1}}}} \right)}}{{1-Q\left( {\frac{z}{{{\gamma _2}}}} \right)}}, 0 < {\gamma _1} < {\gamma _2} \le 1, $ | (3) |
其中,Q(z)与Q(z/r)的表达式与公式(2)相同,γ1,γ2均为向后调整系数。在优化的过程中,可以通过不断调整γ1和γ2的数值,获得最优的编码语音质量,LD-CELP的位分配如下表 2所示。
当采样频率为8 000 Hz时,一个矢量对应0.625 ms,LD-CELP的比特率是10/0.625 ms=16 kb/s。
1.3 混合激励线性预测算法在MELP编码器中,有3类语音信号——语音信号、非语音信号和转换语音。第3种通常是在语音发生转换时出现,也就是说,产生了非周期的但不是完全随机的激励。另一个特点是,激励脉冲同样也可以从输入信号中提取出来。脉冲整形滤波器和噪音滤波器用于过滤脉冲序列和白噪音激励。MELP算法位分配如表 3所示[6]。
MELP的22.5 ms帧对应采样频率为8 000 Hz时的180个样本。因此,MELP的比特率是54/22.5 ms=2.4 kb/s。
2 研究方法语音编码器的C语言程序利用GCC(GNU Compiler Collection)编译,并使用Linux平台上的GNU Make工具构建。对于波形转换,使用了声音交换(SoX)软件。SoX是一个用于语音文件处理的开源工具。在每个语音编码器中使用的分析和合成有特定命令如下:
2.1 CELP命令a) 分析:
. /celp -i inputfile. wav -o outputfile
b) 合成:
. /celp -c outputfile. chan -o outputsynth
c) 拷贝spd文件到raw文件:
cp outputsynth. spd outputsynth.raw
d) 转换为wav文件:
sox -r 8000 -b 16 -c 1 -e signed-integer outputsynth. raw outputsynth.wav
e) 播放文件:
padsp play outputsynth.wav
2.2 LD-CELP命令a) 分析:
. /ccelp inputfile. wav encoderout.out
b) 合成:
. /dcelp encoderout. out outputsynth.raw
在LD-CELP和MELP中,将raw格式转换为wav文件格式和播放输出文件的方式与CELP的方式相同,在此不再赘述。
2.3 波形分析文中波形分析主要是用Praat来进行的。Praat是一种专业用于语音分析的工具,它采用标准的语音样本格式.wav进行波形分析。语音文件的时域波形,音高和强度波形均由此工具绘制。声谱分析是在Adobe Audition软件中完成。
2.4 语音质量测试:MOS评价文中对语音质量的评估是用平均意见评分(MOS)测试来完成的。由于时间的限制,共对这些编码器进行了10次MOS评估。以若干英语词组记录的语音样本被作为信号源输入,在一个安静的环境中,3个样本被记录下来,而2个语音样本则在音量很大的背景音乐中被记录。过程中,使用Logitech h110立体声耳机进行录音和回放。评估者接受了对MOS测试的初步培训,并记录了他们的分数。MOS测试评分体系如表 4所示。
在MOS评分体系中,4或5分表明了高质量的语音,而1或2分则表示较为差的语音质量。
3 仿真结果与讨论 3.1 波形分析使用Praat软件的波形分析结果如图 2~图 4所示。图 2展示了原始语音、CELP、LD-CELP和MELP编码器输出的语音信号时域波形图。图 3描述了原始和合成的语音的声谱图。图 4则表现了不同编码器在音高和强度上的比较。
从时域波形可以看出,大部分原始波的整体形状被保留了下来。然而,在某些部分,峰值被剪掉了,这导致了语音输出的清晰度下降。声谱图显示了语音波形在时间函数上的频率内容。音高和强度对比图也显示了在输出端3种编码方法有微小的变化。因此,对感知质量的可靠估计只能通过使用人类的听力进行主观测试来完成。
3.2 主观MOS评价所有记录的输入语音文件都以8 kHz的速率进行采样。表 5中显示了语音输入文件的详细信息。可以看到,输入语音文件平均大小为393.6 kB,平均长度为24.59 s。与每个输入语音文件对应的MOS分数和每个解码器获得的平均MOS分数如表 6所示。
从表 6的MOS评分可以看出,LD-CELP在三者中具有最高的语音质量(听觉感知质量),而CELP与MELP则评价较低。与此同时,CELP的质量得分略高于MELP。
4 结论通过仿真与测评的比较表明,编码方案的选择主要取决于编码器的应用条件。在需要低延迟和高质量的应用中,如双向通信系统,16kb/s的LD-CELP算法是理想的候选方法。在低比特率更重要的情况下,MELP是最好的候选方法,可以在低于2.4 kb/s的比特率工作时,仍输出不过于失真(听觉感知质量2~3)的语音。当需要低比特率和高质量时,4.8 kb/s的CELP编码器相比之下是最合适的编码器。在研究中,由于时间限制,对MOS测试的评估者数量限制为10。在未来的研究中,为了获得更准确的结果,需要增加评估者的数量或加入客观评价的体系。
[1] | Sooraj S, Anselam A S, Pillai S S. Performance analysis of CELP codec for Gaussian and fixed codebooks[J]. International Conference on Communication Systems and Networks, 2016: 211–215. |
[2] | Juinhwey C, Cox R V, Lin Y C, et al. A low-delay CELP coder for the CCITT 16 kb/s speech coding standard[J]. IEEE Journal on Selected Areas in Communications, 1992, 10(5): 830–849. DOI:10.1109/49.138988 |
[3] |
黄李海, 胡晓毅, 解永军, 等.
基于MELP的水下实时语音通信机的研究与实现[J]. 电子技术应用, 2013, 39(3): 17–19.
HUANG Lihai, HU Xiaoyi, XIE Yongjun, et al. Research and implementation of underwater acoustic real-time voice communication prototype based on MELP[J]. Application of Electronic Technique, 2013, 39(3): 17–19. (in Chinese) |
[4] | Makhoul J. Linear prediction:A tutorial review[J]. Proceedings of the IEEE, 1975, 63: 561–580. DOI:10.1109/PROC.1975.9792 |
[5] |
李强, 舒勤军, 谢虹恩, 等.
一种基于混合MELP/CELP的4 kbit/s声码器[J]. 重庆邮电大学学报(自然科学版), 2017, 29(2): 143–148.
LI Qiang, SHU Qinjun, XIE Hongen, et al. A 4 kbit/s vocoder based on hybrid MELP/CELP[J]. Journal of Chongqing University of Posts and Telecommunicatons (Natural Science Edition), 2017, 29(2): 143–148. DOI:10.3979/j.issn.1673-825X.2017.02.001 (in Chinese) |
[6] | Lynn M, Supplee R P, Co hn, et al. Mc-Cree, MELP:the new Federal Standard at 2400 bps[J]. IEEE Interna-tional Conference on Acoustics, Speech, and Signal Processing, 1997(2): 1591–1594. |
[7] | Mallat Y, Ayadi M, Ayari A, et al. QoS/QoE-CAODV: Routing protocol for cognitive radio Ad-Hoc network[C]//International Conference on Advanced Information Networking and Applications Workshops Crans-Montand, Switzerland: IEEE, 2016: 748-753. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7471292 |