一种甚低码率声码器的设计

2018-12-27 03:23强,张玲,朱兰,明
关键词:浊音基音子帧

李 强,张 玲,朱 兰,明 艳

(重庆邮电大学 信号与信息处理重庆市重点实验室,重庆 400065)

0 引 言

低码率和甚低码率语音编码技术主要应用在保密通信、卫星移动通信、军事通信和水下通信等频带资源极其宝贵的领域。在低码率语音编码标准中,混合激励线性预测(mixed excitation linear prediction, MELP)将混合激励信号作为合成滤波器的输入[1],以线性预测编码(linear prediction coding, LPC)为基础,采用附加参数来获得更加准确的激励源信息[2],在低于2.4 kbit/s的编码速率上可重构出较高质量的合成语音。因此,MELP算法在600 bit/s~2.4 kbit/s速率的声码器中应用较多。

目前,很多研究者在MELP算法基础上,通过改进语音特征参数提取方法,采用高效的矢量量化技术,进一步提高了合成语音质量,设计出满足应用需求的不同速率声码器。文献[3]对8 kHz采样的语音信号以180个样点为1个子帧,3个子帧组成一个超帧,根据子帧的清/浊音类型将超帧划分为8种不同的模式,对不同模式采用不同的比特分配方案,实现了一个0.9 kbit/s MELP声码器;文献[4]将240个样点作为1个子帧,相邻2个子帧构成一个超帧,对每个超帧用72 bit进行联合量化,实现了一个码率为1.2 kbit/s的MELP声码器。

本文提出了一种600 bit/s的MELP声码器实现方法,通过采用多帧联合量化、帧间预测和线性插值等方法提高了语音特征参数的编码效率。针对传统的矢量量化算法空间复杂度较高、分类不够准确、量化效率不高等缺点,设计了一种基于高斯混合模型的预测分类分裂矢量量化(GMM-based predictive switched split vector quantization, GMM-PSSVQ)算法。以合成语音的谱失真为评价指标,对GMM-PSSVQ算法进行性能测试,结果表明,该算法能有效减少线谱频率(line spectrum frequency, LSF)的量化失真。通过客观感知语音质量评估(perceptual evaluation of speech quality, PESQ)和判断韵字测试(diagnostic rhymer test, DRT)对本文实现的声码器进行性能评估,测试结果表明,该声码器合成的语音具有较高的清晰度和可懂度。

1 基于GMM的预测分类分裂矢量量化器

在常用的矢量量化技术中,分裂矢量量化具有量化过程简单、空间复杂度较高的特点;而预测矢量量化通过消除语音特征参数在帧内和帧间的相关性,降低码书的空间复杂度。由于以一帧语音特征参数作为一个矢量进行整体量化时,存储量和计算量较大,且量化误差相对独立,因此,在很多语音编码中,将预测矢量量化和分裂矢量量化相结合得到预测分裂矢量量化(predictive split vector quantization, PSVQ)算法[5],在提高量化质量的同时降低空间复杂度。而分类矢量量化按一定规则将输入矢量进行分类后,选择不同的码本对矢量进行量化,以降低时间复杂度[6]。因此,将分类矢量量化应用于PSVQ算法中,可以进一步提高量化性能。由于GMM可以很好地逼近语音特征参数的概率分布,且所需参数较少,为了提高分类的准确性,本文采用GMM[7]对量化矢量进行聚类分析,设计出了一种基于GMM的预测分类分裂矢量量化算法。

GMM-PSSVQ算法包括编码端设计,解码端设计和码本设计3个部分。下面以LSF参数量化为例,说明GMM-PSSVQ算法的具体应用。

1.1 编码端的设计

设第n帧的LSF矢量为f(n),设计步骤如下。

(1)

2)求残差矢量r(n)

r(n)=z(n)-p(n)

(2)

(2)式中,p(n)为LSF的预测值,其计算公式为

p(n)=α×r(n-1)

(3)

(3)式中:α为预测系数;r(n-1)是前一帧量化后的LSF残差。若编码帧为第1帧,则p(n)={0,0,…,0};

3)对r(n)进行分类分裂矢量量化:首先,将r(n)分裂成K个子矢量;然后,依次搜索M个码本集。选择与所有子矢量总失真最小的码本集,记录并传输码本集编号;最后,用选中的码本集中的子码本对每个子矢量进行矢量量化,记录并传输索引值。在设计矢量量化器时,K值越大,量化效果越差,但空间复杂度越小;而M值越大,分类越准确,但空间复杂度却越高。

1.2 解码端的设计

解码是编码的逆过程,实现步骤如下。

1)解码出重构矢量。根据接收到的码本号查找相应码本集,在每个子码本中查找编号与索引值相同的码矢,解码出每个子矢量的量化值,重构成一个N维残差矢量r′(n);

2)将r′(n)与预测值p(n)相加得到z′(n)为

z(n)=r(n)+p(n)

(4)

(5)

1.3 码本设计

设训练矢量集为F,训练矢量个数为N,将训练矢量中的LSF参数表示为

(6)

码本设计步骤如下。

(7)

2)利用(8)式分别对每个训练矢量去平均值,得到矢量z(n)为

(8)

3)根据(2)式求出z(n)的预测残差矢量r(n);

4)用含有M个高斯分量的GMM对r(n)进行建模,将r(n)矢量集分成M类;

5)对每个类的所有r(n),分裂成K个子矢量,得到K个子矢量集,然后用LBG[8]算法对每个子矢量集分别设计码本,最终得到M个码本集,每个码本集中有K个子码本。

1.4 性能分析

为了评估GMM-PSSVQ算法性能,运用多级矢量量化(multi-stage vector quantizations, MSVQ)算法、PSVQ算法和本文的GMM-PSSVQ算法对标准2.4 kbit/s MELP语音编码器中的10维LSF参数进行量化,测试和对比3种量化方式下合成语音的谱失真。采用MSVQ算法时,对LSF进行3级矢量量化;在PSVQ算法中,将训练矢量分裂成3个子矢量,每个子矢量的维数分别为4,3和3;在GMM-PSSVQ算法中,将高斯分量M设置为2,即用1 bit传输分类信息,再将输入矢量分裂成K个子矢量,每个子矢量的维数分别为4,3和3。测试语音数据来自《SJ20852-2002军用通信系统音质评价测试语音数据库》。从数据库中选择男女各45条,总时长约20 min的语音用于提取LSF参数。测试结果如表1所示,括号中的数字分别对应每个子矢量的量化比特数。

表1 3种量化方法的平均谱失真结果对比图Tab.1 Comparison of average spectral distortion results of three quantization methods

由表1可知,GMM-PSSVQ算法与PSVQ算法、MSVQ算法相比,在每帧编码比特数为20 bit时,平均谱失真分别下降了0.055 3 dB和0.059 9 dB;在编码比特数为22 bit时,平均谱失真分别下降了0.045 8 dB和0.035 dB;在编码比特数为24 bit时,谱失真分别下降了0.029 dB和0.015 8 dB。测试结果说明,GMM-PSSVQ算法能有效地减少LSF参数的量化失真。

2 600 bit/s MELP声码器的设计

美国联邦标准的2.4 kbit/s MELP声码器对8 kHz的语音信号,以180个样点为一帧,用54 bit进行编码。编码端提取和量化的语音特征参数有LSF、基音周期、增益、非周期标志、残差谐波幅度和带通清/浊音强度。在解码端,为了提高合成语音质量,在MELP声码器中引入了混合脉冲、噪声激励、自适应增强和残差谐波幅度等机制[9]。

LSF、基音周期、增益和带通清/浊音强度提取的准确性决定了声码器合成语音的质量,而残差谐波幅度需要根据其他参数的量化结果计算,对语音的质量影响不大[10],为了节省量化比特数和降低声码器算法复杂度,本文算法只对LSF、基音周期、增益和带通清/浊音强度这4种参数进行量化。以20 ms,即160个样点为1个子帧,连续5个子帧组成1个超帧,对每个超帧用60 bit进行量化编码,实现一个编码速率为600 bit/s的声码器。

2.1 超帧结构

本文把连续5个子帧的清/浊音状态值视为1个超帧结构。浊音子帧用V表示,清音子帧用U表示。通过对大量的语音信号进行U/V状态的提取,统计出了每种超帧结构出现的概率,取概率最大的16种结构作为本文设计声码器的超帧类型,剩余16种超帧结构归类到与之相近的超帧类型中,超帧结构划分如表2所示。

2.2 语音特征参数量化

编码端针对不同的超帧结构采取不同的方式对语音特征参数进行量化。

1)超帧结构状态值的量化。由于需要传输16种不同超帧模式的状态值,因此,在帧结构中,采用了4 bit对超帧模式进行标量量化。

2)LSF参数的量化。对超帧中的2~3个子帧的10维LSF参数进行预测分裂矢量量化,具体步骤如下。

步骤1将LSF系数表示为f=[f0,f1,…,f9];

步骤2对LSF矢量去均值,得到z(n);

(9)

表2 超帧结构划分Tab.2 Partition of super frame structure

步骤3用一阶滑动平均预测法求出当前帧的LSF预测残差矢量,具体计算方法由(4)式和(5)式给出,其中,预测值的预测系数α取0.65。

对LSF残差矢量r(n)进行分裂矢量量化。若子帧为清音帧,用9 bit进行量化,将r(n)划分成维数均为5的2个子矢量,对每个子矢量分别用5 bit和4 bit进行矢量量化;若子帧为浊音帧,用16 bit进行量化,将r(n)划分成维数分别为4,3和3的3个子矢量,分别对3个子矢量用7,5和4 bit进行矢量量化。

3)基音周期的量化。对于没有浊音子帧的超帧,无需量化基音周期;对于只有一个浊音子帧的超帧,将浊音子帧的基音周期值取对数后进行7 bit标量量化;对于有2个或2个以上浊音子帧的超帧,将该超帧中所有子帧的基音周期组成一个5维矢量,取对数后用9 bit进行矢量量化。在搜索码本时,采用加权欧氏距离测度。当子帧为清音帧时,权值为0;当子帧为浊音帧时,权值为1。

4)增益的量化。每个子帧需提取2个增益值,一个超帧中的10个增益值组成一个10维矢量G=[g1,g2,…,g10],然后用8 bit对矢量G进行单级矢量量化。

5)带通清/浊音强度的量化。对每个子帧分成5个子带,然后分别判断出每个子带的清/浊强度,用“1”表示清音子带,“0”表示浊音子带。由于每个子帧第1子带的清/浊音强度作为该子帧的清/浊判决标识,随超帧的状态值一起量化。每个子帧的其余4个子带的清/浊音强度组成一个20维矢量进行矢量量化。如果超帧没有浊音子帧,不传输带通清/浊音强度值;如果超帧只有一个浊音子帧,对超帧的20维清/浊音状态矢量进行4 bit的矢量量化;对于有2个或2个以上浊音子帧的超帧,对超帧的20维清/浊音状态进行5 bit矢量量化。

在设计矢量量化码本时,首先提取大量语音的带通清/浊音强度参数,对这20维矢量可能出现的各种结果进行统计排序,取前16或32个矢量作为码本。

2.3 纠错编码

本文将某些超帧结构中没有使用的比特用于前向纠错编码,以保护该帧结构中某些重要的特征参数,具体方案如下。

1)在UUUUU模式下,对27 bit的LSF系数用7个汉明(7,4)码编码保护;

2)在VUUUU模式下,对4 bit状态值进行汉明(7,4)码编码保护;

3)在UUUUV模式下,对4 bit状态值进行汉明(7,4)码编码保护。

2.4 比特分配

本文设计的声码器在16种超帧模式下,帧结构的比特分配方案如表3所示。

2.5 解码器的设计

解码端从接收到的比特流中解析出超帧的状态值,确定超帧的模式,根据超帧模式依次解码出语音特征参数的初值。对编码端没有传送参数的子帧,其值先通过线性插值得出,然后进行参数完整性重构。残差谐波幅度值设置为默认值1.0,抖动值与标准MELP中的设置方法一样。最后利用解析出的语音特征参数重构出合成语音。

(10)

(11)

2)基音周期的译码。解码得到超帧模式后,根据超帧中浊音子帧的个数对基音周期进行解码即可。若子帧全为清音帧,将5个基音周期值都设为50;若超帧中有一个浊音帧,解码出浊音帧的值,将清音子帧的基音周期值设为50;在其他情况下,直接根据索引解码出基音周期值。

3)增益的译码。增益值的译码根据索引值搜索码本直接得到。

4)带通清/浊音强度译码。解码端解码出超帧状态值后,根据表2可以得到每个子帧第1子带的清/浊音状态值,然后对高四位子带的清/浊音强度进行解码。对于不含浊音子帧的超帧,将所有子帧高四位子带的带通清/浊音强度都设为0;对于含有浊音帧的超帧,根据索引值搜索相应码本得到高四位子带的带通清/浊音强度。

表3 不同超帧模式下的比特分配方案Tab.3 Scheme of bit allocation in different super frame modes

3 声码器的性能测试

3.1 客观PESQ值测试

为了验证600 bit/s MELP声码器的性能,对用该声码器合成的语音进行客观PESQ值测试[11]。从《SJ20852-2002军用通信系统音质评价测试语音数据库》中随机选择男女各8组语音作为测试对象。并通过与本实验室研究并实现的1.2 kbit/s MELP声码器性能进行比较,分析本文声码器合成语音质量。测试结果如表4所示。

表4 600 bit/s和1.2 kbit/s MELP声码器合成语音的PESQ值对比Tab.4 PESQ value comparison of synthesized speech of 600 bit/s and 1.2 kbit/s MELP vocoder

本文设计的600 bit/s声码器合成语音女声平均PESQ值为2.21,男声平均PESQ值为2.39,总的平均值为2.30。与1.2 kbit/s声码器相比,在编码速率降低了一半的情况下,平均PESQ值只下降了0.21,说明本文采用多帧联合量化编码方法设计出的声码器具有较好的语音质量。这2种不同速率的声码器合成的女声语音质量都要低于男声,这是由于MELP声码器在合成语音时,脉冲整型滤波器的系数是根据男声基音周期的固定三角脉冲计算得到的,对男声的滤波效果要好于女声。

3.2 主观DRT测试

甚低码率声码器大多采用参数编码方式,合成语音的清晰度和可懂度是其最重要的一个性能指标。因此,本文采用DRT对声码器的合成语音进行主观质量评估。从《GBT 16532.1996通信设备清晰度DRT法评价用语音材料库》的2个基本字表中随机选择12张发音字表,男声和女声各半。与发音字表对应的12条测试语音采用本文设计的600 bit/s声码器进行编解码得到合成语音。选择男女各5名在校大学生作为测试人。测试环境、测试设备、测试记录表和数据统计方法均满足《GBT 13504.2008汉语清晰度诊断押韵测试(DRT)法》。表5和表6分别表示女声和男生DRT得分统计结果。其中,加下划线的数字是按照Chauvent准则应于剔出的数字。

表5 女声DRT得分统计表Tab.5 DRT scoring statistics of female voice

表6 男声DRT得分统计表Tab.6 DRT scoring statistics of male voice

表5和表6中的鼻音性和低沉性的DRT得分在均在75%以下,说明鼻音和低沉音的合成语音清晰度较低。这是因为MELP声码器基于线性预测模型,采用的是全极点模型来模拟声道,而鼻音和低沉音需要用零极点模型才能进行较好的模拟。因此,MELP声码器在对鼻音和低沉音进行编码时,产生的失真较大。测试结果中的紧密性的DRT得分达到了75%以上,清晰度为中等;而浊音性、送气性和持续性的DRT得分在85%以上,清晰度为良好;女声和男声的平均DRT得分分别达到了83.47%和84.38%,清晰度接近良好。由于整句话中相邻字、相邻词之间存在着较强的相关性,即使几个字听不太清楚,听者也可以正确理解整句话的意思,因此,当DRT得分在80%以上时,整句话的可懂度能接近100%。

4 结 论

本文在MELP算法原理的基础上,实现了一种码率为600 bit/s的甚低码率声码器。通过采用多帧联合编码技术,以超帧为单位,分模式对子帧的语音特征参数进行联合量化编码,提高了声码器的编码效率。经谱失真测试,表明采用本文设计的GMM-PSSVQ量化器,可对LSF参数进行高效的矢量量化,降低了量化误差,提高了合成语音质量;经客观PESQ和主观DRT测试,表明本文设计的声码器具有较高的清晰度和可懂度,可应用在频带资源极其宝贵的通信领域中。

猜你喜欢
浊音基音子帧
基于多分类支持向量机和主体延伸法的基音检测算法
基于基音跟踪的语音增强研究
日语半浊音的变化规律研究
清浊音分离抗噪的语音识别算法的研究
有关鼻浊音使用实态的研究
——以NHK新闻为中心
中国移动LTE FDD&TDD载波聚合部署建议
LAA系统在非授权频段上的动态子帧配置策略
一种基音周期检测中减小中值平滑误差的方法
TD—LTE特殊子帧配比的优化设计
Relay技术在LTE覆盖解决方案中的应用研究