主页(http://www.pttcn.net):语音编解码器 语音编码器分为三种类形:(a)波形编器;(b)声码器;(c)混合编码器。 波形编码器会尽可能构出包括背景噪单在内的模拟波形。由于波形编码器作用于所有输入信号,因此会产生高质量的样值。然而,波形编码器工作在高比特率。例如:ITU-G.711规范(PCM)用的比特率为64Kbps。 声码器(vocoder)不会再生原始波形。这组编码器会提取一组参数,这组参数被送到接收端,用来导出语音产生模形。线性预测编码(LPC)用来获取一时变数字滤波器的参数。这个滤波器用来模拟说话人的声道输出[WEST96]。在电话系统中使用声码器,语音质量不够好。在VOIP中常用的语音编码器是混合编码器,它融入了波形编码器和声器的长处,它的另一特点是它工作在非常低的比特率(4-6Kbps)。混合编码器采用合成分析(AbS)。 为了说明问题,考虑人的声道产生的一个语音模式:当人说话产生语音信号时就会发出浊音(如音素pa、da等)和清音(如音素sh、th)。激励信号就是由输入的语音信号导出的,其方法是使合成语音与输入语音的差别非常小。LPC的用法、激励的产生以及对合成分析(AbS)系统的误差检查均如图4-1所示。 长话质量编码器在比特率高于8Kbps时容易实现,如图4-2所示。长话质量的语音平均意见得分(MOS)必须在分或许分以上。传统的PCN语音在比特率小于32 Kbps,语音质量会严重恶化,在这里就不讨论PCN了。混合编码和声码器在比特率相当低的MOS上的得分是可接受的。在现阶段,大多数基于VOIP的编码器的工作范围在5.2~8kbps。研究表明,标准的编码器在比特率为4 Kbps时能提供可接受的NOS得分,一些分用系统在4.8 Kbps的MOS上的得分为3.8。 矢量量化和码激励线性预测 一种较好的方法就是用预测存储的最优参数(码元矢量)的码本对输入语音信号的表示矢量进行编码,这种技术称为矢量量化(VQ,vector quantization)。 将VQ和AbS技术结合在一起会进一步提高编码性能。AbS VQ是技术构成CELP的基础。VQ和AbS VQ的主要区别在于进行矢量量化码簿搜索时采用的量化失真测量定义的不同 如果以8 kHz采样率及13位精度来对出自GSM蜂窝手机麦克风的音频数据进行采样,则可得到104kbps的源数据速率。GSM系统中有四种编解码器,分别执行:全速率、增强型全速率(EFR)、自适应多速率(AMR)及半速率语音压缩。表1给出了一些声码器的参数比较。 全速率 全速率语音编解码器是改良的线性预测编码器(LPC),它将人类声域建模成一系列不同宽度的圆柱体。通过迫使空气通过这些柱体,即可产生语音。LPC编码器用一组联立方程来进行建模。 标准LPC编码器不能提供电话系统所需的话音质量(虽能听清语句,但很难或不可能分辨出说话的人)。GSM系统中采用两种技术来提高LPC编码器的质量,即:长期预测(LTP)与规则脉冲激励(RPE),而全速率编解码器就被称为RPE-LTP线性预测编码器。 输入至RPE-LTP编码器的数据为包括160个采样值的20ms语音,每一个采样值都拥有13位精度。数据首先通过预加重滤波器来提高信号的高频分量,以获得更好的传输效率。滤波器一般还消除信号上的任何偏移以简化进一步的计算。 正如前面所提到的,语音产生模型可看成是空气通过一组不同大小的圆柱体。短期分析级采用自动相关来计算与模型所用的8个圆柱体有关的8个反射系数,同时采用一种称为Schur递归的技术来有效地求解所得到的方程组。参数被变换成可以更少的位数来进行更佳量化的LAR(log-area ratio)。这些是传输流的前8个参数。 然后再将编码后的LAR解码成系数,并用来对输入采样值进行滤波。解码LAR的原因是为了确保编码器使用解码器上的相同信息来进行滤波。这一级上的其余采样值用于编解码器的LTP级。 160个采样值被分成4个子窗口,每一个子窗口都拥有40个采样值。长期预测器为每一子窗口产生2个参数:滞后与增益。滞后由当前帧与后两帧之间的交叉相关峰值确定,而增益则由归一化交叉相关系数决定。滞后与增益参数被应用到长期滤波器上,同时对现有短期剩余信号进行预测。 RPE级通过十取一及交错将40个剩余采样值转换成13个参数,并用APCM将所得出的13个值编码,其中最大值用对数编码成6位,然后再将13个参数均表示成3位,总共45位。 最后一级是从计算出的长期剩余及分析信号来更新短期剩余信号,然后再用此数据来计算下一帧。 增强型全速率 全速率编解码器是一种用来传输语音并在计算上相当有效的方法,但通过使用更为密集的算法,语音质量还能提高。全速率编解码器首先在1990年代初的DSP上实现,当时在经济上虽不能采用质量更好的编码器但却是一种更为密集的算法。 至1990年代中,功能更强的DSP内核的可用性已不再是一个问题,因此增强型全速率编解码器开始在手机中出现。 EFR声码器是一种代数码激励线性预测(ACELP)编码器,且不同于采用分析加合成方法的全速率系统。它计算虽更加密集但能在输出端得到更为精确的结果。预处理级由80Hz高通滤波器及一些缩减电路组成,以使实现更为容易。每帧进行两次短期分析,由与两个30mS(1.5个语音帧)、长度集中在不同子帧上的不同非对称窗口自动关联。所得到的系数被变换成线谱对(line spectral pairs)并被量化成38位,以获得更好的传输效率。 同时执行开环间隔(pitch)分析来计算每帧的间隔滞后估计值,然后再用此估计值启动闭环搜索(以得出更快的结果)。再将所得到的闭环值应用于合成器及与非量化输入比较后的结果上(即分析加合成),最小的加权误差从自适应编码本(codebook)上得出并被编码成每子帧35位。 然后再用代数(固定) 编码本、并再一次用分析加合成方法来对量化后余下的剩余信号进行建模。所得到的编码本增益被编码成每子帧5位。 最后,正如全速率声码器中一样,针对下一帧将存储器刷新。 EFR声码器的12.2kbps输出等于每帧244位。但编码语音是通过拥有260位容量的常规GSM全速率空中信道来传输,其余16位被填以CRC以及重复一些用于冗余的最重要编解码器参数。 自适应多速率 当全部参数均能解码时,全速率及EFR编解码器可实现良好的语音再现。由于传输信道的冗余(请记住,原始信道容量比数据载荷大10kbps),故许多原始位可以出错且参数仍能恢复。 但当参数丢失或错误时,所接收信号的质量将迅速下降(参见图3中的最右侧黑色曲线)。 这也是AMR编解码器组所试图解决的问题。通过指定8个全都共享公共数学算法的声码器组,可改变信道的冗余量。以此种方式,语音传输的质量可能会由于降至更低的编码速率上而稍微有所下降,但覆盖编码参数的信心则得以提高。 结果是在载波干扰增加的情况下可获得感觉更好的语音信号质量(如图3)。 AMR编解码器组由速率从12.2kbps至4.75kbps的ACELP声码器组成,故可提供87%至480%的冗余。在一种很糟的情况下,即全速率及EFR帧丢失很久后,4.75kbps编解码器数据仍能恢复。 半速率 GSM所采用的空中接口允许使用两个完全独立的半速率子信道,故能使蜂窝单元的语音容量加倍。半速率声码器采用矢量和激励线性预(VSELP)编码器,它以一种类似EFR及AMR编解码器的分析加合成方式工作,速率为5.7kbps。 半速率声码器的输出帧包含用来指示帧声音内容的2个位。该声码器工作方式在每种模式下略微有些不同,故可获得最佳的音频数据再现质量。 人们对半速率语音的感觉普遍不佳,所以今天一般不采用此项技术。但以其自适应模式,AMR声码器的6种较低速率将适合半速率空中信道的可用容量,结果是采用带AMR的半速率信道将在高流量领域变得更为普遍。 非连续传输 在典型的谈话过程中,语音仅占总时间的大约40%。为减少对无线接口的干扰,可采用非连续传输(DTX),即移动电话仅在有语音信号时才进行传输。此功能要求有如下几项内容,即:语音活动检测(VAD)、用于空中接口的静寂描述符(SID)帧及舒适噪音产生等。 为减少猝发传输的总时间,语音解码器必须能确定什么时候有语音。由于编码的自然特性,可通过分析中间参数来精确确定是否有语音。重要的是要保证阈值合适,太灵敏会由于无线传输次数太多而对空中接口不利,而灵敏度不够则会切断语音并使声音质量严重下降。 尽管在理论上VAD是实现DTX所需的全部,但来自接收器的完全静寂降低整体感觉质量。为解决此问题,接收器采用了“舒适噪音”功能,即利用SID帧参数的逐渐衰减来产生类似发射器背景噪音的声音。 当VAD确定没有语音时,在空中接口上不进行传输(实际情况比这更复杂一些,但其基本原理一样)。经过一段预定时间间隔后,再发送一个包含一组参数的SID帧,这些参数用于接收器舒适噪音产生功能。 最佳实现 语音编码功能可解释为像卷积这样的数学密集型处理,在带有处理这类计算指令(例如乘法-累加指令)的专用DSP上能得到最佳实现。尽管这可以在通用处理器上实现,但要求有更高数量级的时钟速度来与同样的执行速度相匹配。 不同处理内核中所实现的EFR及全速率声码器执行速度不同。作为一种与时钟速度有关的比较,DSP全速率实现的速度大约要比奔腾处理器实现的速度快3.5倍,而经彻底优化后的SC140实现的速度要比奔腾处理器实现的速度整整快18倍。 在语音编解码器中采用了许多优化技术。最初一般将数据偏移以使计算更加容易并能再利用存储器空间。例如,用剩余滤波器写入输入阵列而不使用新存储器空间。 处理器可采用定制浮点实现来在内核中提供浮点支持。这些实现不是位精确的,这意味着它们不能得出像定点参考实现一样精确的数学结果。但通过软硬件中针对这类数学算法的优化,速度可明显提高。而输出参数,当被送入定点解码器时,将产生感觉上一样的声音帧。 测试位序列 为检验依从性,ETSI颁布了一组全面的测试位序列。它们由输入文件(160个13位采样值)、编码文件(通过解码器的结果)、一些解码文件(用于直接提供给解码器)以及输出文件(代表来自输出的160个采样值)组成。 而像VAD及舒适噪音产生等额外功能,则用各种序列进行隐含测试。同时也对不同输入压缩扩展方案(A-law和(-law)进行测试。 浮点实现一般不遵循ETSI位序列,但能产生一组感觉上与定点编码器及解码器相兼容的参数。 对语音编码器实现的定性评价,可用Racal仪器公司带VQA的AIME系统来测试。这种系统允许建立原始流量信道(无需完全的GSM协议实现),且能执行全速率的空中传输双向语音编码。 (中国集群通信网 | 责任编辑:陈晓亮) |