低速语音编码_第1页
低速语音编码_第2页
低速语音编码_第3页
低速语音编码_第4页
低速语音编码_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

低速率语音编码的实现与仿真摘要:近年来,随着通信与计算机网络的飞速发展,低速率语音编码以其低速率且良好的编码质量等特点,在数字通信中越来越受到重视。低速率语音编码方案主要是基于LPC-10,混合激励线性预测(MELP),多带激励编码(MBE),正弦变换编码(SCI)等。它们大都能够工作在2.4kbps速率下。本文对LPC-10进行了研究,以LPC模型为原型,通过联合帧、矢量量化及参数内插等技术,实现了一种低速率语音编码算法。归一化互相关函数基音检测算法(NCCFPDA)的引入,提高了清浊音判决的准确率;线谱对(LSP)参数的量化特性,降低了误差率,提高了算法的稳健性;固定矢量量化码本(LSPVQ码本)提高了量化精度并降低了传输码率;联合帧的应用,较好的平衡了低码率与语音质量严重恶化的矛盾,而与参数内插技术的结合更加降低了传输码率。通过该算法获得了比较满意的合成语音,并在MATLAB中得到实现,验证了算法的可行性。关键词:语音编码,基音检测,LSP,MATLAB目录TOC\o"1-5"\h\z\o"CurrentDocument"第一章绪论 4\o"CurrentDocument"1.1引言 4\o"CurrentDocument"1.2低速率语音编码研究现状 4\o"CurrentDocument"1.3常用低速率语音编码算法 5\o"CurrentDocument"1.3本文主要研究内容及章节安排 6\o"CurrentDocument"第二章LPC-10编码算法 7\o"CurrentDocument"2.1LPC-10编码算法的理论依据 7\o"CurrentDocument"语音信号的产生模型 7\o"CurrentDocument"语音信号的线性预测分析[8] 7\o"CurrentDocument"2.2LPC-10编解码算法的分析⑼ 8\o"CurrentDocument"LPC-10编码算法分析 8\o"CurrentDocument"计算声道滤波参数RC 9\o"CurrentDocument"计算增益RMS 10\o"CurrentDocument"提取基音周期和检测清/浊音 10\o"CurrentDocument"参数编码与解码 10LPC-10解码算法分析 10\o"CurrentDocument"2.3LPC-10声码器存在的问题⑼ 11\o"CurrentDocument"第三章900BIT/S极低速率编码算法 12\o"CurrentDocument"算法概述 12编码原理 13\o"CurrentDocument"预处理 13\o"CurrentDocument"线性预测分析 14\o"CurrentDocument"NCCFPDA算法[12] 16\o"CurrentDocument"矢量量化[9] 19\o"CurrentDocument"参数编码 20\o"CurrentDocument"解码原理 20\o"CurrentDocument"参数解码 21\o"CurrentDocument"合成语音 21\o"CurrentDocument"本章小节 22\o"CurrentDocument"第四章低速率语音编解码算法的仿真实现 23\o"CurrentDocument"仿真实验平台 23\o"CurrentDocument"编解码器的工作流程 23\o"CurrentDocument"4.2语音编码仿真结果 24\o"CurrentDocument"第五章结论与展望 25\o"CurrentDocument"5.1结论 25\o"CurrentDocument"5.2展望 25\o"CurrentDocument"参考文献 26第一章绪论1.1引言语音通信是一种非常重要且普遍的通信方式。随着多媒体信息技术和网络技术的飞速发展,可利用的信道资源越来越多。但信道资源的增长速度仍然无法满足信息时代中信息量的增长速度。因此,如何在不牺牲语音通话质量的前提下,用尽量少的信道资源传输尽可能多的信息,即语音压缩编码技术,成为现代数字通信的重要课题。语音压缩编码,是用尽可能低的数码率获得尽可能好的合成语音质量。算法的实用性,还要求其编码过程的计算代价尽可能小。降低数码率的实质就是压缩频宽,使固定信道容量传输更多路的信号,也可表示为用更小的存储空间存储更多的信息。然而低数码率也意味着算法的复杂度增加,时延大。语音压缩编码算法的研究便在带宽与算法复杂度的矛盾中不断向前发展。从信息论的角度可以大致估计出语音信号压缩编码的极限码率。音素是语音中基本的元素。按照信息理论,每一个音素需要的平均比特数为:I二-工上一r (1.1)例如,英语有42个音素,在正常情况下,谈话速率为平均每秒10个音素。使用音素出现的相对概率表[1]能够计算得到每个符号信息量为5bit,全部信息速率为50bit/s。各种语言的常用音素不尽相同,汉语的常用音素为64个,而人类总语音的音素约为128〜256个。如果按每秒平均发出10个音素的说话速度来计算,此时的最高信息率为-=3Z-25^'==匸。所以,可以大致认为语音压缩编码的极限速率为80bit/s。在此速率下,讲话者的音质、音调等重要信息已全部丢失,但仍保留了全句的内容。从PCM标准编码速率(64kbps)到极限速率(80bps)之间压缩了约800倍,如此巨大的压缩空间对于理论研究和实用化都有极大的吸引力。1.2低速率语音编码研究现状近些年来,语音编码取得了突飞猛进的发展,是国际标准化工作中较为活跃的领域之一。在4kbps速率以上的语音编码已具备比较完善的理论和技术体系,并进入实用阶段。目前对4kbps以下语音编码标准的竞争十分激励,已经有不少地区性标准诞生。在2.4kbit/s速率上,1982年,美国国家安全局(NSA)将LPC-10声码器选为联邦标准(FS-1015);1984年,美国国防部制定了STU-III计划,采用LPC-10e增强型,1986年正式投入使用。1997年,美国又将混合激励线性预测MELP算法选为联邦标准。该算法综合线性预测编码LPC和多带激励MBE算法的优点,MOS得分达到3.4分,在低速率下保持了较好的清晰度和可懂度。随后,以MELP为基础,A.V.McCree等人通过改变帧长、矢量量化以及减少传输比特的方法实现了1.7kbps和1.6kbps的低速率语音编码,T.Wang等人用矢量量化和帧间参数内插技术实现了1.2kps编码算法,而NATOSTANAG4479定义的800bps声码器则采用3帧的超帧结构,然而在2400bps成为标准速率之后,更低的标准速率一直没有确定,无论1200bps还是800bps都没有成为公认的标准速率。⑵⑶尽管通信网络容量在不断增加,但低速率语音压缩编码一直是现在和未来应用感兴趣的领域。目前语音编码的研究热点集中在4kbps速率以下的编码算法,国际上的许多研究机构已把“4kbps速率以下的语音压缩编码”作为未来几年的重点研究课题。1.3常用低速率语音编码算法根据语音信号的不同特征,语音编码可以分为参数编码、波形编码和混合编码[4]。波形编码是将语音信号当作一般波形信号来处理,使重构的语音信号各样本值与原始语音信号的各样本值尽可能接近。因此,波形编码适用于高速率编码中。当码率降到16kbit/s以下时,由于能传输的波形少,波形编码合成语音难与原始语音在波形上很好地匹配,语音质量会急剧下降。因而,低速率声码器普遍不采用这种方式。参数编码,也称作声码器(Vocoder),是根据声音的形成模型,把声音变换成参数的编码方式。其基本思想是对语音信号特征参数进行提取及编码,力图使重建语音信号具有尽可能的可懂性,即保持原语音的语义。由于参数编码是保护语声模型,不注重波形的拟合,重建信号的波形同原语音信号的波形可能会有较大的差别,因此可实现低编码速率,通常可小于4.8kb/s,甚至可以低至600b/s〜2.4kb/s。作为换取低速率的代价是,其合成语音质量较差,特别是自然度较低,且对讲话环境噪声较敏感,时延大。常用的编码方案有线性预测编码(LPC)、多带激励编码(MBE)、余弦变换编码(STC)等。混合编码是将波形编码与参数编码结合而产生的一种编码方式。混合编码采用线性技术构成声道模型,除传输预测参数和清浊音信息外,同时传输预测误差信息和预测参数,将新的激励和激励预测参数相减,从而在接收端构成合成滤波器,使合成滤波器输出的信号波形与原始语音信号的波形最大程度地拟合,以获得自然度较高的语音。混合编码可在4kb/s〜16kb/s上得到高质量合成语音,有一定抗噪和抗误码能力,但时延较大。多脉冲线性预测编码(MPLPC)、规则脉冲激励线性预测编码(RPELPC)、码激励线性预测编码(CELPC)、低时延的码激励线性预测编码(LD-CELPC)等都是混合编码方式。下面介绍几种常用的低速率编码算法。1线性预测编码LPCLPC模型是参数编码中的一个基本模型,也是本文采用的基本模型。它将语音分为清音和浊音两大类。在进行清浊音判决后,分别以相应的激励信号通过全极点系统来合成语音。这种LPC模型能在较低的速率上合成出可懂度较好的语音。因此,1976年美国确定用LPC-10作为2.4kbit/s速率上的语音通信标准。后来出现的MELP、CELP、MBE,SELP等低速率声码器算法都以LPC为基本模型。2码激励线性预测编码CELP由于LPC模型过于简单,合成语音自然度不好,为此ManfredR.Schroeder和BishnuS.Atal提出了用码本作为激励源的线性预测编码技术CELP。CELP以其高质量的合成语音及优良的抗噪声性能在1988年被确定为4.8kbit/s的编码标准(FED-STD)。但该算法码矢量搜索的运算复杂度很大,且它采用的均方误差准则对低速率和极低速率语音编码并不适用,所以CELP在进一步降低速率时难以获得很好的语音质量[5]。3多带激励编码MBE多带激励就是将语音谱按基音谐波频率分成若干子带,对各带信号进行清浊判决,然后根据判决结果采用不同的激励信号合成语音,最后将各带信号相加形成全带合成语音。该算法在2.4〜4.8kbit/s速率上合成出音质比传统声码器好得多的语音,有较好的自然度和容忍噪声的能力。其改进方案IMBE被国际海事卫星组织于1991年定为标准“Inmarsat-MVoiceCodec,Version2"[6]。4正弦变换编码STC正弦变换编码完全脱离了线性预测的框架,对语音信号进行傅里叶分析,提取最能表示语音信号的几个频率成分,并用这些时变的频率、相位和幅度的正弦波合成语音。起初这种编码算法不需要对相位编码,但为提高质量,RobertMcAulay在1985年提出了一种改进的STC算法,主要是在合成端引入了相位参数。自此该算法开始应用到低速率语音编码中,并在低于4kbit/s速率下获得了较好语音质量。1.3本文主要研究内容及章节安排本文主要研究基于LPC-10模型的低速率语音编码技术。通过采用联合帧及参数内插技术实现了速率约为900bit/s的自然度和可懂度较高的合成语音。论文的主要安排:第一章绪论。主要介绍课题研究背景及意义,语音编码的极限速率以及当前低速率语音编码技术的主要方法。第二章LPC-10编码算法。介绍了LPC-10编码算法的理论依据,并对LPC-10的编解码原理进行分析。第三章900bit/s极低速率语音编码算法。在LPC-10编码算法的基础上,通过引入归一化互相关函数基音检测算法(NCCFPDA),线谱对(LSP)系数,联合帧等技术实现了一种900bit/s的极低速率语音编解码算法,详细介绍了该算法的编解码原理。第四章低速率语音编解码算法的实现。利用MATLAB软件平台,对该语音编码算法进行仿真,介绍算法工作流程,得出仿真结果。第五章结论与展望。对本论文所做的工作进行了总结,说明了本文创新点,对下一步的工作进行了展望。第二章LPC-10编码算法LPC-10是一个10阶线性预测声码器,它所采用的算法简单明了,是将线性预测技术应用于语音编码的成功典范,也是最早实用化的低速率语音编码算法。2.1LPC-10编码算法的理论依据LPC-10编码算法的理论依据为语音信号的产生及语音信号的线性预测分析[1]。2.1.1语音信号的产生模型根据对发声器官和语音产生过程的研究,可以建立一个简化的离散时域的语音信号产生模型,包括语音编码在内的语音技术的研究大多是基于这个模型,如图2.1所示[7]。这个模型由激励源、声道模型和辐射模型三个部分组成。激励源为简单的二元激励源,即浊音(Av)和清音(Au)。当发浊音时,激励为周期脉冲;当发清音时,激励为随机噪声。声道模型V(Z)给出了离散时域的声音传输函数,多数情况下它是一个全极点函数。辐射模型R(Z)与嘴型有关,一般忽略不计。由于二元激励不符合激励的实际情况,该模型的合成语音S(n)的自然度和抗干扰性能上尚有欠缺。图2.1语音信号产生模型2.1.2语音信号的线性预测分析[8]根据语音信号的产生模型,语音信号S(n)是线性非时变因果稳定系统V(n)受到信号E(n)激励后所产生的输出。在时域中,语音信号S(n)是该系统的单位抽样

响应V(n)和激励信号E(n)的卷积。因而,根据S(n)来求V(n)和E(n)具有非常重要的意义。由卷积信号求得参与卷积的每个信号是数字处理各个领域中普遍遇到的一项共同任务,解决此任务的算法称为解卷算法。一类解卷算法是首先为线性系统V(Z)建立一个模型,然后对模型的参数按照某种最佳准则进行估计,所以这种算法称为参数解卷。如果所取的模型中只包含有限值极点,而没有有限值零点,则系统的函数可以表示为2.1)V(z)=1/A(Z)2.1)其中,二;=0二一:。这时解卷算法可以归结为对各模型参数=■■:进行估计。这种模型称为全极点模型或称为AR模型(Auto-Regressive)。如果采用最小均方误差LMS(LeastMeanSquare)准则对AR模型参数进行估计,就得到了著名的线性预测编码LPC(LinearPredictiveCoding)。按照全极点模型及限制E(n)构成参数解卷模式:图2.2参数解卷模式2.2LPC-10编解码算法的分析[9]2.2.1LPC-10编码算法分析LPC-10的发送端框图如图2.3所示。原始语音经过一个锐截止的低通滤波器之后,输入A/D变换器,以8kHz速率采样12bit量化得到数字语音,每180个样点分为一帧,帧长为22.5ms。以帧为处理单元,提取语音特征参数并加以编码传送。这个过程分两个支路同时进行,其中一个支路用于提取基音周期和清/浊音判决,另一支路用于提取预测系数和增益因子。A/D变换后输出的数字化语音在一条支路中由存储器缓存,经低通滤波后,一边再次进行二阶逆滤波,用平均幅度差函数(AMDF)计算基音周期。之后,经过平滑、矫正得到该帧的基音周期;另一边则对低通滤波后输出的数字语音进行清浊音检测,经过平滑、矫正得到该帧的清浊音标志V/UV。A/D变换后的数字化语音在提取声道参数之前先要进行预加重处理,以此加强语音谱中的高频共振峰,提高谱参数估值的精确性。预加重滤波器的传输函数■-为:HpwHpw(Z)=1-0.9375Z-1(2.2)声道滤波器参数RC、增益RMS采用准基音同步相位的方法计算,详见2.2.2节。图2.3LPC-10的发送端框图2.2.2计算声道滤波参数RC用10阶线性预测分析滤波器,利用协方差法对LP逆滤波器Az=1-1.a.z_- (2.3)计算短时谱参数匸-:。预测系数不适应直接量化,因为它的微小变化会造成极点位置很大的变化[10。]为了保证综合滤波器的稳定性,就要求有相当高的量化精度(每个系数要8〜10bit/s),所以转换成反射系数RC(ReflectionCoefficient)或者部分相关系数PARCOR(PartialCorrelation)来代替预测系数进行量化编码。在理论上RC参数和PARCOR参数互为相反数,它们的稳定条件是绝对值小于1,这在量化时是容易保证的。这里用CholeskyUV分解的方法对LP正则方程的系数矩阵求逆,求出P个反射系数。这种算法能够比较准确的计算出共振峰的宽度,并且分析帧的帧长可以减少为帧长的66%,也不会引起语音质量的恶化。LPC分析采用“半基音同步"(SemipitchSynchronous)算法。即浊音帧的分析帧长取为130个样点以内的基音周期整数倍值,用这个分析帧来计算RC和增益RMS。这样每一个基音周期都可以单独用一组系数处理。在收端恢复语音时也是如此处理。清音帧则是取长度为22.5ms的整帧中点为中心的130个样点形成分析帧来计算RC和RMS。2.2.3计算增益RMSLPC-10的RMS的计算公式为mm= =:[u (2.5)式中匚为经过预加重的数字语音,M是分析帧的长度。2.2.4提取基音周期和检测清/浊音基音是指发浊音时声带振动所引起的周期性,基音周期就是声带振动频率的倒数[11。]由于人的发音过程是一个动态非平稳的随机过程,所以波形变化极其复杂,基音周期的大小与许多因素相关。在LPC-10算法中,采样量化后的数字语音经过一个4阶Butterwort低通滤波器,此滤波器的3dB截止频率为800Hz。滤波后的信号再经过二阶逆滤波。把采样频率降至原来的1/4,计算延迟时间为20〜156个样点的AMDF(平均幅度差函数),由AMDF的最小值即可确定基音周期。清/浊音判决是利用模式匹配技术,基于低带能量、AMDF函数最大值和最小值之比、过零率作出的。最后对基音值、清/浊音判决结果用动态规划算法,在三帧范围内进行平滑和错误校正,从而给出当前帧的基音周期Pitch、清/浊音判决参数U/V。每帧清浊音判决结果用两位表示四种状态,这四种状态为:00-稳定的清音;01-清音向浊音转移;浊音向清音转移;稳定的浊音。2.2.5参数编码与解码在LPC-10的传输数据流中,将10个PARCOR系数K(1)〜K(10)、增益RMS、基音周期Pitch、清/浊音V/U、同步信号Sync总共编码成每帧为54bit。由于每秒传输44.4帧,因此总传输速率为2.4kbps。同步信号采用相邻帧1、0码交替的模式。2.2.6LPC-10解码算法分析LPC-10的收端解码器框图如图2.4所示。在收端首先利用直接查表法对编码后的语音帧参数进行检错、纠错。经过纠错译码后即可得到基音周期、清/浊音标志、增益以及反射系数的数值,译码结果延时一帧输出,这样输出的数据就可以在过去的一帧、现在的一帧和将来的一帧三帧内进行平滑。由于每帧语音只传输一组参数,考虑一帧之内可能有不止一个基音周期,因此要对接受数值进行由帧

到基音块的转换和插值。图2.4LPC-10的收端解码器框图2.3LPC-10声码器存在的问题[9]1损失了语音的自然度。由于LPC-10声码器采用了过分简化的二元激励,使合成的主意听起来不自然,2稳健性(Robustness)差。由于在噪声的影响下,不易准确提取基音周期和不能正确判决清浊音。此外,该算法不能有效地对抗传输信道中误码的破坏作用。3LPC-10的语音谱共振峰位置及带宽估值有时会产生很大的失真。第三章900bit/s极低速率编码算法根据语音编码速率可以将声码器分为几类:高速率16〜64kbit/s,中速率4.8〜16kbit/s,低速率2.4〜4.8kbit/s,所有编码速率低于2.4kbit/s的编码算法都称为极低速率语音编码。[4]3.1算法概述图3.1是编码器算法框图,原始话音经过一锐截止的低通滤波器之后,输入A/D变换器,以8kHz速率采样16bit量化得到数字化语音,然后每180个样点分为一帧(22.5ms),以帧为处理单元,提取语音特征参数并加以编码传送。分两个支路同时进行,其中一个支路用于提取基音周期和清/浊音判决,另一支路用于提取预测系数和增益因子。原始语音输入图3.1编码器算法框图与2.2.1节中的ADMF方法的不同的是,在这里采用NCCFPDA算法[⑵提取基音周期及进行清浊音判决。提取声道参数,先进行预加重(高频提升)处理,预加重滤波器的传递函数(见式2.2)。在提取预测系数时采用Levinson-Durbin算法[⑶,每4帧提取一组参数,再将LPC系数转换为LSP系数进行量化。图3.2给出了解码器的算法框图。在收端首先进行帧块到基音块的转换与插值,清音激励源采用随机数,浊音激励源采用固定激励⑷。其次,将LSP系数进行插值,再将插值后的LSP系数按相反的方法转换为LPC系数。收端综合器应用了直接型递归滤波器

3.1)H(z)=l/ -3.1)合成语音输出编码码流D/A变换去加重计算增益综合器曰。低通滤波(100Hz—3600Hz合成语音输出编码码流D/A变换去加重计算增益综合器曰。低通滤波(100Hz—3600Hz)图3.2解码器算法框图3.2编码原理3.2.1预处理在这个编码器中,预处理包括预加重和加窗两部分。预加重在推导语音信号数字模型时,声门激励是一个两极点模型,嘴唇辐射是一个零点模型,如果一个零点抵消一个极点,那么还有一个极点的影响。在语音波形中,如果对语音信号的分析是建立在声道模型的基础上,那么就应该人为地设置一个零点将声门激励的另一个极点抵消掉。这样做语音信号的频谱上效果就是高频提升(6dB/倍频程),使其变得平坦,便于进行频谱分析或声道参数分析。预加重滤波器一般是一阶的,即屯…==1-0.9375丁:。加窗由于语音信号是非平稳的,是时变的,但是由于人的发音器官的肌肉运动速度较慢,所以语音信号可以认为是局部平稳的,或短时平稳的。因而可以将语音信号分段或分帧来处理,即“短时分析"。一般每秒的帧数约为33〜100。短时分析实质上是把语音信号截成一段一段的。对于数字信号而言,只需经过加窗处理便可截取信号。由数字信号处理理论可知,两个信号的时域相乘,在频域相卷积,矩形信号频谱高频成分必将影响语音信号的高频部分,一般用高频分量幅度较小的窗形,以避免这些影响。根据处理的要求,在这里采用汉明窗,长度为180个样本点。汉明窗的定义为:w(n)0.54-w(n)0.54-0.45cos(芒),°<n<L-1(3.2)其中其中L=180为每帧的样本点数。加窗后的语音二二为(3.3)(3.3)3.2.2线性预测分析经过预加重之后,便可进行线性预测分析。编码器用10阶线性预测合成滤波器做短时分析,LPC合成滤波器的传输函数为A(z)=l—匸1工:丁:,p=10 (3.10)其中,A(z)为短时线性预测误差滤波器,,、:(i=l,2,„,10)是线性预测系数(LPC系数)。线性预测分析的目的就是求出10个LPC系数,将其转换成线谱对LSP参数,在LSP域内进行量化和内插。具体过程可参见参考文献[1][9]。计算LPC系数线性预测分析利用了语音样点之间的相关性,用过去的若干抽样值或它们的线性组合来逼近现在或未来的样点值。因而,首先,求出720个样点的自相关函数R(k)R(k)=M「=y. , 0<k<10 (3.11)由于LPC合成滤波器为10阶,因此只需计算前11个自相关系数R(0)至R(10)即可,然后用Levinson-Durbin算法求出LPC系数口打⑸。Levinson-Durbin算法[⑶可简述如下:⑴―匚二;⑵出=血①-耳制-临建-j)]/ET;总=丄;总==一一一匚总二,1<j<i—1;⑸二.二「工三厂,如果i<p,则返回(1);

(6)札=汀,1<j<po上面各式中括号内的上标表示预测器的阶数。步骤(1)〜(4)可对i=l,2,…,p进行递推求解,其中,E为最小均方预测误差;R为自相关系数;k表示反射系数,取值范围为[-1,1];表示i阶预测器的第j个系数。通过运算发现,在递推过程中仅算出了所有除数低于p阶线性预测器的全部系数,同时计算出了最小预测误差能量,而递推式中反射系数的取值范围是保证系统H(z)稳定性的充分必要条件,即使多项式A(z)的全部根都落在单位圆内。LSP与LSF系数⑴⑼在语音压缩编码中,由于合成滤波器系数羔动态范围太大,量化误差及传输中导致的误差极容易使合成滤波器不稳定。然而对于反射系数,如果丄<1,则合成滤波器是稳定的。因此,在求得滤波器系数后,还要将其转换为在数学意义上与之完全等价的,代表语音短时频谱特性的特征参LSP(LineSpectrumPair)或LSF(LineSpectrumFrequency)。线谱对LSP和线谱频率LSF是线性预测参数的另一种表示形式,由于线谱对参数LSP是频域参数,意味着量化很容易与语音理解中已知的频谱特点相结合。此外,由于LSF和共振峰频率的密切关系,能够以平滑的频谱变化,适合于帧到帧的内插,使得产生相同质量的合成语音所需的码率得以降低。LPC系数转换为线谱对LSP[i]LSP按如下方法计算P(z)二A(z)+^_--A(二_-)=1—(云_+云二)二_-—(云:+云:)二一- (左_:+^_)二___+二___(3.12)(3.12)Q(z)二A(z)— =1—(日[—日m)£一1—(屯—日弓)广: (如-対)忑一卬-忑一11+…+…其中(3.13)(3.14)+…+…其中(3.13)(3.14)由式(3.12)和式(3.13)可以推出A(z)=[P(z)+Q(z)]/2 (3.15)可以证明,当A(z)的零点在z平面单位圆内时,P(z)和Q(z)的零点都在单位圆上,并且相互交替出现。由于P(z)是一个对称实系数的p+1阶多项式,而Q(z)是一个反对称实系数的p+1阶多项式,因此它们有共扼的复根。共扼复根的形式

为z二汀这是因为P(z)和Q(z)的零点都在单位圆上。并且从式(3.12)和式(3.13)可以看到它们还有实根±1。因此,P(z)和Q(z)可写成下列因式分解形式P(z)二(1+J-)工】一二:二三一:一,工〜-一 (3.16)Q(z)=(1_二__门:=—l__二=--■八-八 (3.17)其中,3就是所要求的LSP参数,Q二n3。由0〈0〈0〈込<...<需°_5(3.18)因此有0<:」_<1 (3.19)P(z)和Q(z)的零点互相分离,交替出现是保证式(3.10)中1/A(z)稳定的充分必要条件。3.2.3NCCFPDA算法[12]NCCFPDA算法是一种基于归一化互相关函数的基音检测算法,在基音检测主过程的前端和末端加入了有效的预处理和后处理技术,与经典的时域算法AMDF相比,在一般噪声环境下,该算法较好地克服了基音倍频和半频错误,性能得到了明显的提高,可以有效克服基音倍频和半频而引起的判决误差。图3.3为算法框图。归一化互相关函数的p(T)定义(3.4)S(n)为分析窗样点,N为分析窗长。NCCFPDA预处理去均值处理当语音信号在分析窗里有非零均值或有非常低的低频噪声出现时,p(T)在所要求的所有延迟上均产生高的相关,这对于依赖P(T)进行清/浊分类的安静段语音或低幅度清音语音段尤其麻烦。为此,我们在计算p(T)时首先从分析窗数据中减掉均值。低通滤波为减少高频共振峰和外来高频噪声的影响,对去均值的语音信号进行800Hz低通滤波,这个低通滤波器可以去除大部分共振峰的影响,又可以当基音频率为最高500Hz时,仍能保留其一二次谐波。依据双线性变换法设计的800Hz5阶椭圆低通滤波器传递函数为H(z)=(3.5)Q.QQ3233-OlDMB79z_--Ol007632z_:-.DD7632z_B-Ol004B79z_4+H(z)=(3.5)1-36363z---53926z_:-5,0QS5z_E-Z251Sz_4-0l4271z-5数值滤波

经800Hz低通滤波的语音信号,主要去除了第三和第四个高频共振峰及高频噪声的影响,但第一和第二个共振峰有时依然存在,使得浊音段语音信号的周期性模糊,产生了错误基音估计。大量实验发现,若在800Hz低通滤波器之后级联一个宽度N=9的数值滤波器可有效去除这一影响,突出了浊音语音信号的周期性,使基音估计可靠。数值滤波器的传递函数为H(z)=-W.二十: (3.6)NCCFPDA后处理为了避免选择实际基音的倍数作为估计值,本文采取了如下后处理措施⑴在80<tS147、40St<79和20<t<39三个基音区域内计算p(T),分别得到各自区域的最大p(t)值及对应的延迟,记为P:注._、和P:注二,「-、,和二。如下确定最优基音延迟一二:二心皿,则\曲.二\注二二心皿,则\曲.二\注二这里c为经验因子,实验中我们发现c=0.96较满意。清/浊音判决利用前面定义的归一化互相关函数可进行有效的清浊音判决。具体步骤如下确定低通滤波和数值滤波后的语音对数能量ELP(dB)为ELP二_-_二g [-丁二=[込二• (3.7)式(3.7)中£是一个很小的正常数,是为了确保对数运算的可靠性o。--,⑺为低通滤波和数值滤波后的语音信号,L为分析帧长。确定周期性水平量二±:=。设p的最大峰值为》,£.(经过后处理后的),P的前三个峰的平均值为Pi=l/3(P2._+P:注.:+Pz.J (彳8)则周期性水平量-„::::.定义为(3.9)= +P(3.9)periodmaxavr⑶取ELP和P:g=作为清浊判决的依据。当ELP小于一定的门限二..时,语音能量太小,判决为清音,否则,当小于一定的门限时,说明周期性不强,判决为清音,大于门限且在允许的基频范围内时,判为浊音,并输出对应的优化基音延迟二;:。通过大量语音采样波形分析表明二=13dB,,,=0.62时能正确区分出清浊语音帧。3.2.4矢量量化[9]语音质量和传输数码率在语音数字通信中一直是此消彼长的相互矛盾的关系。但是矢量量化技术却是一种既能高效压缩数码率,又能保证语音质量的编码方法。如果将LPC声码器中每帧的10个反射系数加以十维的矢量量化,就可以很容易地把传输数码率从2.4kbps降到800kbps而不损失多少信息[16][1。7]矢量量化(VectorQuantization,VQ)是20世纪70年代后期新发展起来的一种数据压缩技术。其基本原理是,将若干个标题数据组构成一个矢量,然后在矢量空间中给以整体量化,从而压缩了数据而不损失多少信息。实际上,信息是有损失的,但仅取决于量化的精度要求。因而,这是一种高效的数据压缩技术。矢量量化的过程是,将语音信号波形的k个样点的每一帧或k个参数的每一参数帧,构成k维欧氏空间中的一个矢量,然后对此矢量进行“集体”量化。在矢量量化时,将k维无限空间划分为M个区域边界,然后将输入信号的适量与这些边界进行比较,并被量化为“距离”最小的区域边界的中心矢量值。但在这之中,便出现了两个问题。(1) 如何划分M个区域边界。这需要大量的输入信号矢量,经过统计实验才能确定。这个过程称为“训练”或建立码本。解决的方法是,将大量欲处理的信号的波形帧矢量或参数帧矢量进行统计划分,进一步确定这些划分边界所对应的中心矢量值来得到码本。(2) 如何确定两适量在进行比较时的测度。这个测度就是两矢量之间的距离,或以其中某一矢量为基准时的失真度。失真测度是当输入矢量用码本所对应的矢量来表征时,所应付出的代价。输入矢量被量化之后,得到的是在码本中与该矢量之间具有最小失真的某码矢的角标(或地址码)。这些角标就可作为存储或传输的参数。在恢复时,只需按此角标从码本中找出相应的码矢量参数,直接复原或进行反变换,就可以得到恢复的时域信号。由此可见矢量量化兼有高度保密的优良性能。矢量量化的原理框图如图3.4所示。矢量量化是一个很复杂的部分,其所建立的码本的好坏及失真测度的大小真接会影响算法的传输速率及量化精度。因而在本算法中,采用固定矢量量化码本(LSPVQ码本),见附录1。具体矢量量化方法可参见参考文献[18]。k维 k维图3.4矢量量化原理框图3.2.5参数编码在编码器传输数据流中,将10个LSP参数、增益RMS、基音周期Pitch、清/浊音V/U、同步信号Sync总共编码成每帧21比特。具体比特数分配可参见参考文献[9]。表3.1编码器量化bit分配方案

参数 每帧分配比特数/bitTOC\o"1-5"\h\zLSP参数 32/4Pitch/Voicing 7RMS 5Sync 1总计 21由表3.l所示的比特分配方案,根据(1000/22.5)X21~933bit/s,我们可以确定该算法是一种速率为900bit/s的极低速率语音编码算法。3.3解码原理解码是编码的逆过程,在此仅做简单的介绍。可参照前面的编码原理逆推得到。在解码端,先是经过帧块到基音块的转换与插值,再进行LSF系数插值,将LSF反量化为LPC系数。将得到的LPC系数在收端综合器中合成语音。由于整

个编码过程中有增益的存在,合成语音还需进行幅度校正。与发端的预加重相对应,收端需要进行去加重处理。D/A变换后输出的模拟信号通过一个低通滤波器后,便可在收端得到编解码后的语音信号。3.3.1参数解码1LSP参数解码LSP参数反量化LSP参数在发送端的和接收端的解码器中都要进行解码,需用LSP码字来生成量化后LSP参数。LSP参数内插LSP参数反量化后,由于在编码端LSP参数每4帧提取一组参数,而解码端合成滤波器的系数每帧更新一次,因此每帧的LSP参数按如下公式进行内插得到,即:=0.875+0.125]:'_-:J=0.625:::+0.375?:'_-=0.375:「=0.375:「+0.625?:'_-(3.20)=0.125二::+0.875;(3.20)式中和二「,分别代表各帧的LSP参数;「•表示由当前输入联合帧求得的量化了的LSP参数;表示由下一输入联合帧求得的量化了的LSP参数。LSP参数转换为LPC系数内插后的LSP参数需转换成LPC系数,以用于接收端的语音重建,并且这些LPC系数还用于基音和码本搜索。2基音周期和RMS参数的解码基音周期和RMS参数的解码通过查表进行解码。(量化码表见附录2)。3.3.2合成语音图3.2是解码器算法框。在收端首先利用直接查表法对数码流进行检错、纠错。经过纠错解码后即可得到基音周期、清/浊标志、增益及LSP系数的数值。LSP系数通过帧内插值并转换成线性预测系数。译码结果延时一帧输出,这样输出的数据就可以在过去的一帧、现在的一帧、将来的一帧三帧内进行平滑。由于每帧语音只传输一组参数(LSP系数每四帧传输一组参数),考虑一帧之内可能有不止一个基音周期,因此要对接收数值进行由帧块到基音块的转换和插值。参数插值原则LSP参数每联合帧插值四次。RMS参数值在对数域进行基音同步插值。基音参数值用基音同步的线性插值。预测系数、增益、基音周期、清/浊音等参数值每个基音周期更新一次,这个过程在帧块到基音块的转换和插值中完成[19]。激励源根据基音周期和清浊音标志来决定要采用的激励信号源。如果是清音帧,则以随机数作为清音帧的激励源;如果是浊音帧,则让周期性冲激序列通过一个全通滤波器来生成浊音激励源,这个措施改善了合成语音的尖峰性质。语音合成滤波器输入激励的幅度保持恒定不变,而输出幅度受RMS参数加权。这里给出一组浊音激励信号[4]。e(n)={0,0,0,0,0,0,0,0,5,-8,13,-24,43,-81,147,-252,359,-364,92,336,-306,-336,92,364,359,252,147,81,43,24,13,8,5,0,0,0,0,0,0,0,0}这个激励源总共有41个样点,若当前的基音周期小于或者大于41个样点,则将此激励源截短或者填零,使之与基音周期等长。语音合成用Levinson递推算法可将反射系数{久:},i=1,…,p变换为预测系数&},i=l,…,P。收端的综合器应用了直接型递归滤波器HZ=1匸-匸(3.21)合成语音。对其输出还要进行幅度校正、去加重并变换为模拟信号。最后经过一个3600Hz的低通滤波器后输出模拟语音。3.4本章小节本章详细介绍了一种极低速率语音编码算法。该算法以LPC-10声码器为基本原型。NCCFPDA算法的引入较好的克服了AMFD中存在的基音倍频和半频错误,提高了清浊音判决的准确性;采用LSP系数,有效地减少了因量化和传输而引起的误差;LSPVQ矢量量化码本的应用,极大地提高了量化精度,且没有过多提高运算复杂度;通过采用4X22.5ms的联合帧技术和解码端帧内插值技术,使该算法实现了900bps极低速率语音编码。第四章低速率语音编解码算法的仿真实现软件仿真可以有效地检验算法的性能。通过对该编码算法进行软件仿真,可以测试算法编码模型的可行性及其合成语音的质量。4.1仿真实验平台Matlab是矩阵实验室(MatrixLaboratory)的缩写,主要用于方便矩阵的存取,其基本元素是无需定义维数的矩阵。Matlab可用来解决实际的工程的数学问题,其典型的应用有:通用的数值计算,算法设计,各种学科如自动控制、数字信号处理、统计信号处理等领域的专门问题求解。本文所讨论的语音编码模型在Matlab上进行仿真的过程大致如下:将语音录制成8kHz采样,16bit量化的PCM单声道wav文件。提取wav文件中的语音数据部分,送入编码器,在编码器中计算出语音参数并将其生成中间文件。在解码端用中间文件作为解码器的输入,在解码器中还原语音参数,重建语音。把重建的语音数据加上相应的头信息构成wav文件。4.2编解码器的工作流程由于编解码过程较复杂,将编解码分为编码器和解码器,各部分流程如下:每一帧编码器的工作流程初始化过程编码器参数和存储器初始化。通过函数Y=Filter(b,a,Y)得到通过低通滤波器的初始语音信号。通过函数T=U_ver(Y)得到语音信号的基音周期值。通过函数Y=Filter(c,d,Y)得到通过预加重的语音信号。通过函数a二Durbin(swin)计算当前帧的LPC系数a,其中a是一个11维列向量,swin为加窗语音数据。通过函数w=A_LSP(a)将LPC系数转换为LSP系数,其中w是一个10维列向量。通过函数R=Rms(Y)得到语音信号的基音周期值。量化编码将LSP参数进行量化通过函数[L1,L2,L3,L4,L5]=LSP_Quan1(w,a))获得w的量化值。将RMS参数进行量化通过函数R=RMS_Quan2(r,s))获得R的量化值。将U/V参数进行量化通过函数Tz=UV_Quan3(s))获得Tz的量化值。由于LSP参数每四帧提取一组,而RMS和U/V参数需要计算四次,所以还要重复②③三次,完成当前语音帧的四个基音子帧的编码过程。参数发送。每一帧解码器的工作流程

初始化过程解码器参数和存储器初始化。利用查表法对接收到的码流进行检错和纠错。参数解码通过函数[L,b]二Decode_adaptive(Plag,Pgain)获得基音延迟和基音预测增益。通过函数[aO,al,a2,a3]=LSP_Al(wq)将LSP参数在当前基音子帧及其对应的固定码本子帧进行内插,然后转换为LSP系数,这里得到了四个子帧的LPC系数。将激励信号输入合成滤波器获得解码语音。这个模块用函数s_quan=LP_synthesis(U_sub,a)来实现。分别采用函数s_pf=Postfilter(s_quan,a)和s_end=Upscale(s_pf)对解码语音进行后置滤波和自动增益控制。4.2语音编码仿真结果图4.1及图4.2分别为原始语音和经过编解码后得到的合成语音的频谱图。实验语句为8kHz采样,16bit量化。通过对比,可以看出解码后的语音基本上模拟出原始语音的特

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论