信号处理内核的发展促进了GSM系统语音编解码器的增强。目前更为密集的分析加合成方法已用于在常见的EFR及AMR语音编码器中,以在容量有限且容易出错的空中接口上提供最高质量的语音传输。
以当前对高速分组数据传输的关注程度,人们很容易忘记GSM数字电信系统的最初主要目的是传输语音。总的感觉是整个系统的复杂性与传输链路的管理有关,但也有很大部分与麦克风捕捉到的音频压缩与解压缩复杂性有关。
为满足这一主要目的的需求,必须以足够高的采样及分辨率来捕获语音,以清楚地再现原始声音,并用一种可在比特率有限及容易出错的无线传输信道上保持音频高保真度的方式来压缩语音。
这一需求很具体,其目的是传输语音,故载荷的频率范围及声音质量均为已知。人类听觉系统的工作方式允许编码器在手机耳机上产生出类似自然声音的听觉效果。GSM系统中所使用的语音编码器的主要原理是对人类音域的数学建模,从而产生出一种用于传输语音的有效压缩方法。术语“声码器”或“语音编码器”专门用来描述这些专门执行语音压缩的系统。
GSM系统对用于传输语音的信道具有一组固定的物理要求。首先,它具有最大22.8kbps的原始数据速率;其次,帧可以被“偷窃”以及用于信令,且语音编码系统对这种情况必须很稳健,尽管存在对可偷窃语音帧的频率及时序的一定限制。
信道容量与编码
GSM物理层是FDMA与TDMA的组合。无线信道在整个GSM频段被分成相隔200kHz的多个信道,这些FDMA信道又被分成8个时隙。GSM物理信道被定义为单个“绝对无线频率信道号”(ARFCN)上的单个时隙--故每一频率均可包含有8个独立物理信道。
“猝发”是指GSM系统中的无线传输量,且包含以周期577(s发送的114位原始信息。由于语音流量信道传输的多帧结构,故每26次猝发最多有24次可包含语音数据(其余2次猝发用于空闲周期或传输信令信息)。因此合计能给出22.8kbps的原始信道容量。
原始信道容量是完美传输条件下的最大用户数据(编码语音)吞吐量。在真实世界中,无线传输并不稳健而且需要为数据增加保护。
增加冗余信息后,GSM系统中的全速率语音信道用于编码语音的容量为13kbps。
语音编解码器
如果以8kHz采样率及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-arearatio)。这些是传输流的前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个语音帧)、长度集中在不同子帧上的不同非对称窗口自动关联。所得到的系数被变换成线谱对(linespectralpairs)并被量化成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协议实现),且能执行全速率的空中传输双向语音编码。