【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf

【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf

ID:32026083

大小:2.95 MB

页数:85页

时间:2019-01-30

上传者:U-1863
【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf_第1页
【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf_第2页
【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf_第3页
【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf_第4页
【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf_第5页
资源描述:

《【硕士论文】基于DSP的语音编码算法研究与实现方法.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

西安工业学院硕士学位论文基于DSP的语音编码算法研究与实现方法姓名:尚宇申请学位级别:硕士专业:控制理论与控制工程指导教师:齐华2003.3.1 基于DsP的语音编码算法研究与实现方法学科:控制理论与控制工程研究生签字:南寺艚撕裤:庐干摘要语音压缩编码技术是多媒体通信中非常重要的技术,它可以大幅度降低语音信号的传输速率。90年代以来,国际电信联盟相继颁布了多种适用于多媒体通信的语音编码标准。其中,G.723.I、G.729和G.729A协议合成语声质量好,有望成为网络的主要语声载体。G.723.1协议分别采用多脉冲最大似然度量化(MP—MLQ)和代数码激励线性预测编码,传输速率为5.3/6.3kbit/s,算法延迟为37.5ms,这使其在一些对延迟要求较高的场合的应用受到限制。1996年,rru—T提出了基于CS—ACEIP算法,传输速率为8kbit/s的G.729协议,该协议算法延迟为15ms,它提供的语声质量能满足网络通信的要求,其音质是同档码速率中最优的,将用于第三代移动通信系统。G.729A协议是CS—ACELP的简化版本,复杂度较G.729有较大幅度的降低,主要适用于语声、数据同步传输。本论文在对语音进行了短时平稳分析的基础上,分析了线性预测编码(LPC)技术和码本激励线性预测编码(CS—ACELP)技术。并比较了上述三种协议在算法和性能指标上的异同。本文通过分析G.729A协议的算法结构,提出了基于DSP硬件系统的该算法的实现方案,对G.729A协议在TMs320c5402DsP上的实现进行了研究和实践。本文对多媒体通信系统中的语音传输有一定参考价值。关键词:DS、一P;语音;压缩;痛籀’;算法又#f 一一垒璧!堡垒曼!。:===;_===%#;=≈==≈#==##==∞==;##2;∞;23#22==#;425—。3——‘————————一一一一AlgorithmofSpeechCodingandItsImplementationSchemeUsingDSPDiscipline:ControlTheoryandControlEngineeringStudentsignature:SupervisorSignature≤锄k-J舛遣mABSTRACTSpeechcodingiSakeytechniqHeinmultimediacommunicationandhasstrongabilityofreducingthebit—ratesofspeechsignal.VariousspeechcodingstandardizationswereissuedbyITUby1990s.RcommendationG723.1.G729andG729AareexpectedtObeaudiosignalcarrierinthenetworkcommunication.RcommendationG723。liSat5.3/6.3kbit/strransmitionbitrateusingMP.ML0andACELPwi£hatotalalgorithmicdelayof37.5mswhiehdistrictsitSapplication.In1996、codingofspeechat8kbit/susingCS—ACELPwasstandardizedasRecommendationCt729bynU正caculationdelayofwhichis15ms.Thealgorithmhasmuchbetterspeechqualitythanotherones摊氆esametransmissionbitratesandcouldmeetstheneedsofnetworkCOnllltLlnication。Itisexpected的beusedinthethirdgenerationofmobilecommunicationsystem。G729AnnexAisthereducedcomputationcomplexityversionofG729andhasbeendevelopedformultimediasimultaneousvoiceanddataapplications+AnalysestheLinearPredictionCoding(LPC)andCode-ExcitedLinearPredictionCodingalgorithmsbasedontheanalysisofshort—timecalmcharacteristicsofaudiosignalandcomparesthethreeprotocolabovewiththeiralgorithmsandperformances。秘ispaperdescribesthealgorithmstructureofG729。presentsanimplementschemeonDSPhardwaresystemandperformsthisRecommendationusingTM$320C5402DSRThepresentedmethodisvaluableinvoicetransmmition.KeyWords:DSP;Speech;Compress;Code;Algorithm l绪论1.1引言从一般意义上讲,语言是人类进行相互通信和交流的最方便快捷的手段。在高度发达的信息社会中用数字化的方法进行语音的传送、储存、识别、合成、增强是整个数字化通信网中最重要、最基本的组成部分之一。而语音编码是这些技术的基础,因为语音编码技术的目的就是把模拟的语音信号转化成在可靠性、抗干扰、交换迅速、易保密和价格低廉等方面更优胜的数字化语音。在未来的ISDN(综合业务数字网)、卫星通信、移动通信、微波接力通信和信息高速公路等系统中,将无一例外的都采用数字化语音传输和存储。长期以来,在通信网发展中如何解决信号的编解码和传输效率始终是一个关键而又极其迫切的问题。通常采用两种途径来解决这一课题,其一是研究新的调制方法和技术来提高信道的传输信息比特速率,其二是在信源编码时压缩编码比特率,这在任何频率资源有限的传输环境中无疑都是极为重要的。受到应用的驱动,在不到50年的时间里,语音编码已有了惊人的发展。最早的标准化语音编码系统是速率为64kb/s的PCM波形编码器,到90年代中期,速率为4—8kb,s的波形与参数混合编码器,在语音质量上已逼近了前者的水平,且己达到实用化阶段。CCITT在1984年通过了32kb/sADPCM的G.721建议。随后,于1992年公布了16kb/s的低延迟码激励线性预测的G.728建议。1995年11月rru—T通过了用于低比特率多媒体通信的G.723.I建议。1996年通过了共轭结构代数码本激励线性预测(CS—ACELP)的8kb/s语音压缩编码G.729建议。1.2语音编码技术概述自从30年代末提出脉冲编码调制(PCM)原理以及声码器(Vocoder)概念后,语音信号编码~直沿着这两个方向发展,他们也可以称为语音信号的波形编码与声码化编码,或称为非参数编码与参数编码。计算机的发展为语音信号编码技术的研究提供了强有力的工具,大规模、超大规模集成电路的出现则为语音编码的实现提供了基础。如何在中低速率上(4kbit/s一16kbiffs)获得高质量的语音编码,一直是语音编码的主要目标。进入80年代以后,语音编码技术有了突破性进展,产生了新一代参数编码算法,即混合编码。这种编码方法克服了原有两种编码器的缺点,综合了两者的长处,在4kbit/s--16kbit/s速率上能够得到高质量的合成语占。j.2.1语音编码分类语音编码方法可分为以下三大类:a.波形编码语音信号的波形编码力图使重建语音波形保持原始语音信号的波形形状,也即失真要最小。这类编码器通常将语音信号作为一般的波形信号来处理,它具有适应能力强,语音质量好等优点,但所需用的编码速率高。脉冲编码调制(PCM)、门适增量调制(ADM)、自适差分编码(ADPCM)、自适应预测编码(APC)、自适应 塑塞三些兰堕堡主兰堡丝苎一子带编码a(ASBC)、自适应变换编码(ATC)等都属于这类编码器。它们分别在64—16kb,s的速率上能给出高的编码质量,当速率进一步降低时,其性能会下降较快。b.参数编码参数编码又称为声码化编码、模型编码。同波形编码不一样,参数编码通过对语音信号特征参数的提取及编码,力图使重建语音信号具有尽可能高的可读性,即保持原语音的语意,而重建信号的波形同原语音信号的波形可能会有相当大的差别。这类编码器的优点是编码速率低,例如可以低到2.4kb/s,甚至2.4Kb/s以下,它的主要问题是合成语音质量差,特别是自然度较低,连熟人都不一定能听出讲话人是谁。另外,它对讲话噪声敏感,需要安静的讲话环境。这类编码器有通道声码器,共振峰声码器及线性预测声码器。C.混合编码混合编码是近年来提出的一类新的语音编码技术,它将波形和参数编码结合起来,力图保持波形编码的高质量和参数编码话音的低速率。混合编码数字语音信号中既包括若干语音特征参量又包括部分波形编码信息。其比特率一般在4~16kb/s速率上得到高质量合成语音,而其复杂程度介于波形编码器和参数编码器之间。多脉冲激励线性预测编码(MPLPC),规则脉冲激励线性预测编码rRPELPC),码激励线性预测编码(CELP)等都属于这类新型的混合参数编码器。作为一种CELP声码器,G.729所描述的cs—AcELP声码器采用了CELP声码器的体系结构,它采用了8kbiffs的编码速率,其音质是同档码速率中最优的。1.2.2语声编码器性能指标语声音质是比特率、复杂度、延迟和带宽的函数。因此,研究语声编码器时,考察所有这些特性是非常必要的。而且,这些特性之间有强烈的相互作用,可以相互折中。例如,编码器的比特率降低时,其延迟要增加,并且相对于高比特率编码器来说,实现低比特率编码器要求更高的复杂度,通常语声音质也较差。在本文中,我们的讨论仅限于取样率为8kI-/z的电话频带(200一3400Hz)的语声信号。a.比特率研究语声编码器的比特率,需要综合考虑系统的信源和信道的统计特性。从信道方面来看,由于语声码流与其他数据共享信道,降低语声高峰期的速率,可以提高信道的使用效率。从信源方面来看,一个信源如果无信息可发,就应当让出信道供其它信源使用。由于语声码流与其它数据共享信道,使用速率可变的声码器,会使信号的传输更为经济。通常采用静噪压缩方案(如:1TU—TRec.G.729AnnexB)来提高信道利用率。也就是对激活的语声使用固定比特率。而对背景噪声使用低比特率。这样,既能产生适当的背景噪声,使人觉得舒适。又能节省传输带宽。b.延迟语声编码器的延迟主要由算法延迟和处理延迟两部分组成。在分析语声信号之前,必须把一帧的有效数据(包括“前向预测”部分)存入缓存。这种延迟称为算法延迟,这是唯一一种不能通过改变实现方法来减少的延迟。处理延迟是编码器分析语声信号和解码器重构语声信号所用的时间,它取决于实现编码器的硬件的速度。算法延迟和处理延迟的总和称为单向编解码延迟。~个完整的时间帧从编码器传输到解码器所需的时间称为通信延迟。单向编解码延迟和通信延迟的总和称为单向系统延迟。在没有回声的情况下,可以容忍的单向系统延迟最大值为400ms。然而,新的测试方法表明,如果通信上容易实现,单向系统延迟2 堕耋三些兰堕堡圭兰堡丝苎一—一最好低于200ms。如果有回声,可以容忍的单向系统延迟上限仅为25ms。因此,使用回声抑制设备通常是必要的。c.复杂度语声编码器经常装入或者利用数字信号处理(DsP)芯片等硬件。这些硬件的特性(复杂度)通常以计算速度(以每秒执行多少兆指令M口s表不)、随机存储器噼AM)和只读存储器(ROM)来描述。从系统设计者的角度来看,高复杂度意味着高成本和高功耗,因此,复杂度是一个重要因素。如果语声编码器在整个系统的功率和费用中分担的份额较小(10%左右),在给定比特率的情况下,选择音质最好的编码器非常有意义。这时功率消耗或成本方面的变化,不会使编码器在整个系统中所占的百分比大幅度增加。如果这个份额较大,则必须进一步权衡。d.音质在音质所涉及的范围中,最重要的是在理想条件下,(清晰的声音,没有传输失真,只编码一次),如何评价编码后的语声音质。语音编码质量是衡量语音编码算法优劣的关键性能之一。如何评价语音编码质量,这个问题己成为语音编码领域所研究的一个重要课题。人们把评价语音编码质量的方法归纳划分为两类,即客观评定方法和主观评定方法。客观评定方法用客观测量的手段来评价语音编码质量,常用的方法有信噪比、加权信噪比、平均分段信噪比等。它们都是建立在度量均方误差的基础上,其特点是计算简单,但不能完全反映人对语音质量的感觉,这个问题对于速率为16kbit/s以下的中低速率语音编码尤为突出,因此此法主要适用于速率较高的波形编码类型的算法。主观评定方法符合人类听话时对语音质量的感觉,目前得到广泛应用。常用的方法有乎均意见得分(MeanOpinionScore,简称MOS得分),判断韵字测试(DiagnosticRhymeTest,简称DRT得分),判断满意度测量(DiagnosticAcceptabilityMeasure,简称DAM得分)等。MOS得分采用五级评分标准,如表1—1所示。参加测试的实验者,在听完所测语音后,从这五个等级中选择其中某一级做为他对所测语音质量的评定。全体实验者的平均分就是所测语音质量的MOS分。出于主观上和客观上的种种原因,每次测试所得的MOS分会有波动。为了减小波动的方差,除了参加测试的实验者人数要足够多之外,所测语音材料也要足够丰富,测试环境也应尽量保持相同。表1~1MOS分和音质的关系MOS判分质量级别失真级别5优不察觉4良刚有察觉3可有察觉且稍觉可厌2差明显察觉且可厌但可忍受1坏不可忍受在数字语音通信中,通常认为MOS分4.0—4.5分为高质量数字化语音,达到长途电话网的质量要求,也常称之为网络质量。MOS分3.5分左右称作通信质量,这是能感到重建话音质量有所下降,但不妨碍正常通话,可以满足多数话音通信系统使用要求。MOS分30分以下常称为合成语音质量。它一般具有足够高的可懂度,但自然度及讲话人的确认等方面不够好。值得注意的是,在很多应用场合中,有大量的背景噪声,这些理想条件无法得到满足。而且,在信号的传输过程中,信道失真也是不可避免的。这就要求解码器必须有足够强的容错能力(鲁棒性)。另外,桥接、级联以及不同的语种对语 一堕窒三些兰堕堡圭童堡!!圣声编码的处理效果都有一定的影响。所有上述问题都是在设计和选用声码器时必须考虑的。二.3本文目的随着计算机通信网的迅速发展,中、低数码率的语音编码的应用前景更为广泛,而将DSP(数字信号处理)芯片用语音处理已是当今的技术发展趋势。随着DSF芯片性能价格比和开发手段的不断提高,DSP芯片正在通信与通信系统、雷达、航天航空、医疗、家用电器等诸多领域得到广泛的应用。目前,总体来说,j书DSP实现语音压缩编码主要用于数字语音通信和数字语音存储。本课题实际应用于数字语音存储,来源于实现基于DSP芯片的语音录放系统,主要功能是通过对语音信号进行压缩以实现高效率数字录音,可应用于电话留言、语声应答等场合,现有的大部分具有留言功能的电话机都采用磁带录音的方法,虽然录音的时间较长,但不便于查找和保存。数字录音可以克服磁带录音所存在的缺点,可以快速查找,对录音信息进行编辑整理也非常方便,更为方便的是对数字录音的信息可以转存在计算机硬盘或光盘上以便长期保存。但数字录音也存在一个突出的缺点,即需要较大的存储空间。采用语音压缩的方法.即首先将输入的语音进行压缩,然后存储在存储器中,可实现较长时问录音。本文主要任务:a.从理论上总结比较已有压缩算法的优缺点,探索数据压缩新理论,新方法和新进展。b.了解当前压缩音频信号的若干国际建议中的主要技术框架及国际上的新标准、新建议。C.掌握DSP系统的设计过程,基于通用可编程DSP芯片提出算法实施方案。 2语音信号分析语音信号分析大体上有时域、频域、倒谱域等分析方法。但是按语音学观点,可将它分为模型分析法和非模型分析法两种。模型分析法是依据语音信号的数学模型的理论来求得这些模型参数,而将其它分析方法笼统地归于非模型分析法中。模型分析法中的各种模型只适合于信号是平稳或局部平稳的情形。由于不l司的语音是由人的口腔肌肉运动构成声道某种形状而产生的响应,而这种肌肉运动相对于语音频率来说是极缓慢的,因此一般认为在20~40ms的短时间内语音信号是平稳的,所以完全可以用短时平稳的分析方法。2.1语音信号产生模型语音信号产生模型是对发声器官的模拟和仿真。数字模型就是用数字处理方法实现这种物理系统的模拟,由此可估计出语音波形的参数,因此,这种数字模型也是语音参数模型。我们知道发声器官能发出一系列的声波是出于声道受到气流的激励而产生的。声道的一端是喉,另一端是嘴,其中包含有声带、声门、口腔和鼻腔等。根据声带振动与否,语音可分为浊音和清音两大类。声带在气流的作用下发生振动,从而产生准周期的声波激励,这种激励经过口腔和鼻腔的谐振作用而形成浊音,有时称为有声音。气流经过口腔的唇齿部分,如果弓l起湍流就产生摩擦音,有时因为唇部突然张开而形成爆破音。凡是声带不振动的声音,统称清音,有时也称为无声音。用数字方法模拟这种功能时,用准周期的脉冲序列来模拟声带振动的激励,而用随机噪声模拟清音的激励,口腔、鼻腔等所组成的声道谐振特性可用时变数字滤波器来模拟。数字滤波器的频率响应受到一些参数的控制。不断控制清浊音开关、激励脉冲的周期以及噪声源强度,同时随着不同的发音改变滤波器特性,输出的信号就是所要求的语音信号序列。如图2—1所示为语音信号的产生模型:号图2一l语音信号产生模型语音信号是~个局部平稳的随机信号,它的激励参数和声道滤波器的参数均随时间而变化,但是由于发声器官的惯性使这些参数的变化速度受到限制,对于声道参数,在一较短的时间内(10~30ms)可近似认为是不变的,因此语音的短时分析帧长一般取为20ms左右。对于激励源参数,大多数情况下这一结论也是正确的。但是有些音的变化速度特别快,例如塞音或塞擦音的爆破段,20ms的时间间隔就过长,这时取5ms的间隔更为恰当。模型中将语音信号截然分为 堑童三些兰堕堡主兰堡堡兰——受周期脉冲激励和噪声激励两种情况,与实际情况并不完全符合,将清浊音开关换为叠加号更为合适,这样激励信号可以是上述两种激励按任意比例相叠加,这更加符合实际情ig(BP使如此,这个模型也不能完全包括所有的情况)。除『j奎些限制以外,这个模型的局限性主要表现在它的传输函数不包含有限传输零点,而像鼻音、擦音这样一些音的声道传输函数中是包含有限零点的。一种解决同题的方法是在声道模型中引入若干有限传输零点,但是这将使模型复杂化。另一种方法是适当提高阶数P,使得全极点模型能更好地逼近具有此种零点的传输函数。2.2短时分析技术由于语音信号的准平稳特性,任何语音信号数字处理算法和技术都是建立在“短时”基础上的。下面对G.729中用到的短时分析技术作一个简要的介绍。;.2.1预滤波预滤波的目的有两个:(1)抑制输入信号各频域分量中超出L/2的所有分量(fs为采样频率),以防混迭干扰;(2)抑制50Hz的电源干扰。这样,预滤波器必须是一个带通滤波器,其上、下截止频率分别为fH和fL。对于绝大多数语音编译码器,fH=3400Hz,fL=60—100Hz,采样率为8kHz。语音信号经过预滤波和采样后,由A/D变换器变换为二进制数字码。A/D变换器分为线性和非线性两类。目前采用的线性A/D变换器绝大部分是12位的,非线性A/D变换器则是8位的。2.2.2数字化语音信号的存储及加窗数字化语音信号序列将依次存入一个数据区,在语音信号处理中~般用循环队列的方式来存储这些数据,以便用一个有限容量的数据区来应付数量极大的语音数据,已处理过语音数据可以依次抛弃,让出存储空间来存入新数据。在进行处理时,按帧从这个数据区中取出数据,处理完之后再取下一帧。在取数据时,前一帧和后一帧的交叠部分称为帧移。帧移与帧长的比值一般为0~l/2。己取出的一帧语音s(n)要经过加窗处理,这就是用一定的窗函数w(n)来乘sfn),从而形成加窗语音s。(n)。即5。(,1)=s(n)w(n)。在语音信号数字处理中常用的窗函数是方窗和哈明窗。哈明窗的表达式为:rrr/.、1、10.54+cos川旦1—1『万}w(n)={UJv一1JH=0~(N一1)10,l_其他值2.2.3语音信号的短时自关函数设sw(n)是一段加窗语音信号,它的非零区间为n=0~(N—1)。Sw(n)的自关函数称为语音信号s(n)的短时自关函数,用R(f)表示,它的计算公式是:6 堕童三些兰堕堡主兰丝丝兰—一RO)=∑钆0-。0+f)=∑“G≯。O+,)⋯mⅢ易于证明,RwO)是偶函数,即R0)=R(.,)。R(f)在,=卜Ⅳ+1)~(Ⅳ一1)之外恒为0。R。O)的最大值为R。(0),且凡(0)等于加窗语音的平方和,即:Ⅳ一】屯(o)=∑《(n)n=O如果s(n)是一个浊音性的周期信号,那么它的短时自关函数也呈现出明显的周期性,而且R。(f)的周期即等于s(n)的周期;相反,清音语音接近于随机噪声,它的短时自关函数不具有周期性且随着f的增大而迅速减小。因此可以利用这个特点来判断一个语音是清音还是浊音,还可以藉以决定一个浊音的基音周期。2.2.4短时基音周期的估计由以上介绍可知,短时自关函数R。(f)在基音周期的各个整数倍点上有很大的峰值,因此从理论上来说,只要找到第一最大峰值点的位置并计算它与f_0点的间隔,便能估计出基音周期。然而实际中第一峰值点的位置有时不能与基音周期相吻合。产生这种情况的原因有以下两个方面。第一方面与窗的长度有关。一般窗长至少应大于两个基音周期,才能有较好的效果。语音中最长的基音周期值为20ms(这相当于基音频率为50Hz),因而在估计基音周期时窗长应选得大于40ms为宜。第二方面是声道的共振峰特性的影响。最常用而又有效的方法就是让语音信号通过一个线性预测(LPC)逆滤波器,并通过求其残差信号的自关函数来估计基音周期。另外,也可以通过其它方式,如基于短时AMDF(平均幅度差函数)等来估计基因周期。2.3线性预测编码(LPC)分析2.3.1概述根据语音信号的产生模型,语音信号s(z)是一个线性时不变因果稳定系统v(z)受到信号E(z)激励后产生的输出。在时域中,语音信号s(n)是该系统的单位冲激响应v(n)和激励信号e(n)的卷积。为了求得声道参数,就有必要由输出语音信号分析得出参与卷积的各个信号。由卷积信号求得参与卷积的各个信号是数字信号处理各个领域中普遍遇到的一项共同的任务,解决此任务的算法称为解卷算法。解卷算法的研究是一项十分重要的研究课题,其目的在于用尽可能少的计算代价来获取尽可能准确的V(z)(或v(n))和E(z)(或e(n))的估计。解卷算法可以分成两大类。第一类算法中首先为线性系统v(z)建立一个模型,然后对模型的参数按照某种最佳准则进行估计,所以这种算法称为参数解卷。如果所取的模型中只包含有限值极点而没有 ,有限值零点,则系统的函数可以表示为V(z)=1/A(z),其中A(z)--Z日。Z1i=O这时解卷算法可以归结为对各模型参数ai进行估计。这种模型称为全极点模型或称为AR模型(AUTOREGRESSIVE模型)。如果采用最小均方误差(LMS误差,LeastMeanSquareerror)准则对AR模型参数进行估计,就得到了著名的线性预测编码(LPC)算法(LPC-LinearPredictiveCeding)。第二类算法则无需为线性系统建立一个模型,因而可以称之为非参数解卷算法,用同态信号处理完成解卷任务就是其中最重要的一种。根据语音信号的生成模型,在编码端对于表征声源和声道的有关特征参数进行分析和提取,在解码端根据收到的参数代码重新合成语音信号的过程,称为语音信号的分析一合成。人们把利用分析合成的方法进行语音编码的系统称为声码器(VocoderoLPC(1inearPredictiveCoding,线性预测编码)算法的功能就是通过输出语音信号来求得声道参数。在LPC中,语音信号逐帧地用其生成模型的特征参数来表示。当全极点模型的阶数为P,帧长为N时,一帧内N个原始语音抽样能用Pt3个特征参数来代替,这些特征参数是:全极点模型的谱参数{口,},j-1,⋯P、增益RMS、清/浊音判决信息Voicing和浊音时的基音信息Pitch。这种语音的低速率表示可以大大降低语音识别中的存储量及语音传输时所要求的信道容量。应用LPC可以实现低速率(2.4kb/S或者更低速率)语音编码。考虑到语音信号只有在一个短时段中才可以认为是平稳的,因此对语音信号的LPC分析和其它语音信号分析相同,必须是一种短时分析。这就是说,只能利用一短断语音来估计其模型参数,这一短段的持续时间一般选择为20ms左右。首先给出一个参数解卷的通用模式,如图2—2所示:d咒)S(呐、V(Z)L=G(Z)/A(Z)rE(Z)S(Z)(未知)(已知)图2-2参数解卷模式其中假设一个已知的序列s(n)是一个未知的序列e(n)激励一个未知的线性非时变因果稳定系统V(劢产生的,且V(z)=G(z),A(z),G(z)=∑g,Z-J,A(z)=艺d,Z一,j=ol卸q和g,皆为实数,且a。=l,这样,参数解卷问题归结为求模型的参数口。和g,。如果能有一种算法,可以根据己知的s(n)正确地估计出这些参数,那么未知的系统V(z)便可求得。由于E(z)y(z)=s(z),根据V(z)和s(z)便立即可以求得E(z),从而全部解决了解卷的问题。 一.塑壅三些童堕堡圭童堡垒塞:一现在对这个模型再加一些限制以便于得到一种高效的求解算法。第一个限制是令y(z)的分子多项式G(z)=1,这样y(z)=1/A(z)。由于系统模型中只包含极点而不含零点(z:0处的零点除外),所以这种模型称为“全极点模型”,而参数解卷问题归结为系数口i的估计问题。第二个限制是对于一般的未知序列e(n)力11122[约束,把它写成Ge(rt)僦。其中e(n)是一个周期脉冲序列或一个高斯白噪声序列。当e(n)是一个周期脉冲序列时,可以表示为:抽P研)=Et,(n—rN。)其中刖=怯嚣寸。削n)是高斯自躁声序姗于,它的自关函数满足如下条件:R。∞=E[e(n)e(n+oJ=6q)而且e(n)的取值满足高斯分布(正态分布)。N。是其周期值。系数G是一个非负实数,通过它的改变来控制系统输出序列s(n)的幅度大小。在做了这些限制之后,可以将参数解卷的问题归结为首先正确估计模型y(z)=1/A(Z),也就是估计A(z)的阶数P和它的各个系数a,~a。;其次,在估计得到y(z)的基础上,求得G和e(n),并且判断出e(n)是周期脉冲序列还是高斯白噪声序列。现在如果得到了一个语音序列s(n),而且知道它是由一个周期脉冲序列或一个高斯自噪声序列激励一个全极点模型所产生的,那么应当采取什么算法,才能在某种最佳意义上估计出模型的参数(P以及q~a。)、激励信号e(n)和增益系数G。可以证明,线性预测算法能按照最小均方误差的准则给出问题的解,它是一种最小二乘法,简记为LMS算法。在序列s(n)中任取一个时刻n,假设n以前的P7个样点上的语音样值s(n—I),s(n一2),⋯s(n—p,)为己知,而时刻n的语音样值s(n)尚未知道。现在用这P个已知的样值取某种线性组合来预测未知的样值。如果用j(n)表示这个未知样值的预测值,那么预测公式为:j(n)=一∑ais(月一f)(2.1)其中各系数ai皆为实数,称为预测系数。预测值;(n)与真值s(n)之间的误差称为预测误差,用£(n)表示。£(n)可由下式计算9 一堑童三些兰堕堡圭兰丝堡圣=—#——#=;==—==——{====—;——=—;=;—==—=—————————————一一出):m)一j(。):咖)+圭叩(n叫f2】(2-2)确定系数口,的基本准则是最小化£(n)。由于s(n)是一个随机序列,£(,z)也是一个随机序列。可以用£(m)的均方值《=Ep2(n)J来衡量线性预测的质量。显然,《越接近于零,预测的胜确度在均方误差最小的意义上越好。为了实际计算的方便,一般用求时间平均代替《2计算中的求集合平均Ef-】。这时《可以表示为:《=E量2(n)】(2-3)对于一个特定的语音序列,盯。2取决于P7和各个系数口。。如果能找到一个待定的阶数P和一组预测系数,使《达到最小值,那么最佳预测阶数应是JD’=JD,最佳预测系数应为a,=口,。i=1~P。s(n)可以表示为:j(n)=一羔4,(n—f)+Ge(n)(2_4)i=1将(2-4)式代入(2-2)式后再代入(2-3)式,就得到《2的下列表示式《=军{[善ais(n-i)-喜ais(n-i)]+pecn)】}2=莩ocn,+gcn,口其中,(n):羔印(n一沪窆叩(n—f)'g(n):GP(,1)。扛li=1这样,可以得到西=∑f2(n)+2∑,(n)占(n)+∑g2@)。考虑e(n)是白色噪声的情况,这时序列e(n)的各个样点值相互统计独立。出此不难导出f(n)和g(n)相互统计独立,因此∑,(n)g(n)=o。∑92(n)是不随预测阶数p7和q预测系数而变化的。∑f2∞)≥o恒成立。因此,《的最小值只能发生在∑f2(n)=o的情况。Ⅱ^而实现这一点的充分必要条件是下列两项中的任意一项成立:(1)P7P,五,=aii=1.P(2)P’>P,盎,=ai.i=1一p,af=O,i=(P+1)~P7如果模型阶数P是预知的,那么可以设置预测阶数为p7=P。如果存在一种有效的算法能够求得使《达到最小的一组最佳预测系数西,,那么就可以立即得到模 堕塞三些兰堕堡主兰堡篁兰:——型参数D,。当模型阶数P预先不能确定时,可以采用尝试的方法,观察《随P7的变化。显然,当p’7G)k=o,⋯,10(4-5)为了避免输入信号值太小而引起的运算问题,r(o)的下限设为1.0。通过自相关系数乘以%。(七),对自相关系数进行60Hz带宽扩展:‰皓唧Hl(2X正fok]2lk=1,--.,10(4-a)其中,0=60Hz扩展带宽,f=8000Hz是抽样频率。另外,r(0)还要乘以一个白噪校正因子1.0001,这相当与加一个一40dB的噪声背景。修正后的自相关系数由下式给出:,,(o)=1.0001r(0)r’@)=wk伍>@)k=l,⋯,10(4-7)·Levinson--Durbin算法修正后的自相关系数r7伍)被用来解下列方程组,以计算线性预测滤波器系数兰q珊一k{):_r,证)£:l'一,10(4—8)解方程组(4_8)用的是Levinson--Durbin算法。算法使用了下述的迭代过程 一一堑童三些兰堕堡主兰堡堡奎±====;={===;=≈===;====#===≈=;=====#====≈=======;;;2—‘————————————————————一——E【0】=r7(o){0ri=1tolO础~1=1ki=-匿j~=oa≯’(f—j)]/e¨,a。[q=t{or3=ltoi—In?=nP+t;a掣end萨】=0一砰讧Ⅷend最终的结果记作口,=d黔j=o,⋯,10,而且嘞=1.0。·线性预测(LP)系数到线谱对的转化为了便于进行量化和插值,线性预测滤波器的系数a,,i=0,⋯,10要转化为线谱对(LsP)。对于10阶的线性预测滤波器,线谱对参数定义为下面两个式子的根:f彳Q)=A(z)+z。11A(z1)(4—9)巧(z)=AQ)一Z-11A(z。1)(4—10)多项式E,(z)是对称的,而F2(z)黼N。可以证明这两个多项式的根全部都在单位圆上,而且它们是交错出现的。确)有根Z=--10=冗)而巧(z)有根Z=1@=o)。通过定义下面两个新的多项式,这两个根被排除了:E(z)=F;(z)/O+z4)(4—11)rdz)=E(z)/O—z。1)每一个多项式在单位圆上有5个共轭根,它们可以写作:只(z)=nO一2吼z。1+z。2)i=1,3..9五(z)=n(1-2q,z。1+z‘2)(4—12)(4—13)(4.14)其中q。=COS((./J,)。系数啦被称为线谱频(LSF),它们满足O‘一j)‘_l=(‘+‘_l—J)/2zf=弛+{f_l+J),2end重新调整过程要作两次。第一次调整的J=0.0012,第二次调整J=0.0006。重新调整之后,可以由前一帧量化器输出的加权和ft⋯圳以及当前的量化器输出fi‘“’求得当前帧m的量化线谱频系数耐⋯:,4、4∥=fl一∑瓦p+∑A,。p”f_”一,10(4—20)lk=l,k--/其中既是可切换移动平均预测器的系数。究竟用哪一个移动平均预测器要由另外的一个比特£o来确定。在一开始,对所有的女3.135,则令西lo=3.135。对线谱频参数进行编码的过程可以概括如下:对于两个移动平均预测器,必须找到能够最佳逼近当前线谱频系数的那一个。“最佳逼近”被定义为能够使加权均方差最小:10%=∑wl@一匆y(4—21)i=1权值Ⅵ根据末量化的线谱频系数作自适应变化 堑窒三些兰堕堡圭耋篁丝苎一——f1.0/fq—o.04万一1>0Ⅵ。110娩m渤~1)2+l舭砒PM:仙扩q+-一‰一1>o(4-22’l岷l”lO(oJf+l—q—l一1)2+1。therw船7f1.0/f一鳓+O.92n"一1>0w1。2llo(-wg+o.9幼一1丫+1。therw洫另外,加权系数ws和K都要各自乘_以J.2。当前帧m的待量化矢量由下式得到:驴’=f科⋯一至良量””]/kk=l3/nk一喜丸●驴kf科⋯一∑p城p”ff1一∑缸lt=1j(4-23)首先从第一个码本L1中选出使末加权的均方差最小的码字L1,再对定义了第二级的低端部分的第二个码本L2进行搜索。对每一个可能的候选码字,用方程(4.20)重建矢量西;i=l,⋯,5,并进行调整,使这几个矢量之间的最小距离保证大于0.0012。然后计算方程(4.21)的均方差(MsE),选出使误差最小的码字L2。利用选出的第一级码本的码字L1和第二级的低端部分L2,就可以从码本L3中选出第二级的高端部分。这一次也需要进行重排以保证矢量之间的最小距离大于0.0012,最后选出使均方差最小的那个矢量L3。结果矢量li,i=1,⋯,10也需要进行重排,以保证矢量之间的最小距离大于O.0006。每个移动平均预测器都要进行这一过程,能够使加权均方差最小的那个移动平均预测器LO被选中。在这一部分的开始就已经指出,结果矢量j:,i=I,⋯,10要进行两次重排并对量化的线谱频参数缸进行稳定性检查。·线谱对系数的插值第二子帧使用的是量化和末量化的线性预测系数。对于第一子帧使用的量化和未量化的线性预测系数,要通过对相邻帧相应参数进行线性插值后才能使用。插值过程是在余弦域对线谱对系数进行的。假设q⋯~’是当前帧的线谱对系数,qtprevious)是前一帧的线谱对系数。两个子帧的未量化的插值后的线谱对系数由下式给出:Subframe1:∥2O,5q;”~’+o.5斫“⋯;i=l,⋯,10rd,¨Subframe2:“”=q;。⋯”i=I.⋯,10量化后的线谱对系数也是按照式(4.24)进行插值的。·线谱对到线性预测系数的转化一旦线谱对系数进行了量化和插值以后,它们要被转化回线性预测(LP) 堕童三些兰堕堡主兰堡丝圣——系数口,。转化过程如下所述。在己知量化插值后的线谱对系数的条件下,通过解方程(4—13)和1(4—14),求得((z)和,2(z)的系数。通过使用下述迭代过程,bkq,计算出系数工(f)f=l,⋯,5:力ri=1to5z,(0--一2q:。五(f一1)+2f1(i-2)力rJ=i-1downt01,l圈0)=,l¨1(『)一2q:。ff,一1’O一1)+f111-'1(j-2)end初始值工(o)=l,五(-1)=o,同理计算系数,2(f),只是将上述迭代过程中的g:;-替换为g::。得到了系数五(f)和五(f)之后,Fdz)和F2(z)各自乘以1+z。和l—z一,得到职:)和E(z),如下式:z飞f)=工?!+zt一1j‘=1,‘一,5(4—25)E(f)=正O)一五G一1)i=l,·一,5最后,从工tf)和爿(f)计算出线性预测系数:n:0·5脚+0·5爿(i)江1,⋯,5(4-26)叶一10.5并01-f)一0.5矗(11-f)i=6,⋯,1074.2.4感知加权感知加权滤波器是基于未量化的线性预测系数q的;并由下式给出:w(z)=—A砑(z/r,)Az/=lnJ1+∑“qz1+∑以qzl(4—27)其中,。和,:的值决定w(z)的频率响应,通过适当地调整这两个参数的值,可以使感知加权滤波器更为有效。这个调整每10ms进行一次,但第一子帧需要有一个插值过程来进行平滑。利用Levinson--Durbin算法求解中得到反射系数k:,将其按照下式转换为对数域比值(LogAreaRatio,LAR)系数0i: ~.堕窒三些兰堕堡圭兰堡坌墨=—一i。==;==g===============#==;=={==f===={=#=====———————————一旷lg剿江l,2(4—28)‘U.0一k。J相应于当前帧的对数域比值(LAR)系数用于第二个子帧。第一子帧所使用的对数域比值系数由前一帧的对数域比值系数进行线性插值而得到。两个子帧的插值后的对数域比值系数由下式给出:Subframel:。;”=o.5。;删”’+o·5D尸⋯;i2l,2(4—29)Subframe2:D;2)-D}“⋯’;i=l,2谱包络被判定为两种:平坦(flat=1)和倾斜(伽t=o)。对于每一个子帧,通过对对数域比值系数使用一个阈值函数来判定其谱包络的特性究竟是平坦还是倾斜。为了避免急剧的变化,通过将前一帧的谱特性考虑在内,引入了滞后因素:f0,/f(Dfm)<一1.74)and(口罗’>o.65)and(flaf”。1)-1).肋f‘螂={1,矿(D;m’>~1.52)Or(D;哪<0.43)and(flat‘“_’=0)(4-30)ffla产一),。therwis。如果插值后的谱被判定为平坦型(伽少J=1),加权系数设为'。--0.94,:=o.6;如果谱被判定为倾斜型(flat‘“J=o),则设,。=0.98,而,:则设为随线性预测滤波器的共振峰能量而变化的变量,其上下限分别设为OA和0.7。如果出现了一个尖锐的共振峰,将7:的值设在其上限附近。以当前帧相邻的两个线谱对系数的最小距离为标准,可以获得,:的自适应变化的值:d,m--min[甜._j一(t3,]i=1,⋯,9(4—31)可以通过如下的线性关系得到,:的值:,2=--6.0dm+1.0boundedby0.4≤,2≤0.7(4—32)加权语音信号由下式给出:10s。(n)=s(n)+∑d;y;s(n-i)-∑口;残s。(n-i)n=o,⋯,39(4—33)i=li=1加权后的语音信号钆(n)用于估计基音周期。4.2.5开环基音分析为了减少自适应码本搜索的复杂程度,其搜索范围局限于一个候选的基音周期乙附近。Top由开环基音周期分析得到。开环基音周期分析每帧(10ms)J断-- 堕窒三些兰堕堡主兰堡丝圣——==j===#=={======#==。===;=========;==;———————————一次,它使用式(4—33)中的加权语音信号。首先,计算最大的三个相关系数:胀):兰j。(n)Sw(”一≈)(4-34)三个最大值所在的范围是:f=1:80.·一,143i=2:40,·一,79f-3:20,⋯,39将得到的三个最大的相关系数月(‘),f=l,2,3通过下式规范化:R‘(‘)=R(t;)i=1,2.3(4-35)在优先选择较小范围的规范化相关系数的条件下,选出三个规范化相关系数中的最大值。选择的具体过程描述如下:L=‘R,(乙)=R,(f1)ifR7(r2)≥o.85R7(乙)R’(乙)=R7(f2)乙=t2end/fR’(f3)≥0.85R7(to,)月’(乙)=R’(r3)L=岛end这一过程中将选择范围划分为3个以及优先选择小范围内的值是为了避免选到基音周期的整数倍。4.2.6加权合成滤波器的冲激响应的计算加权合成滤波器w(z)/A(z)的冲激响应^(n)用于自适应码本和固定码本的搜索过程。在每个子帧,将包含滤波器A(z/7_。)系数的信号通过A(z)和1/A(z/2:)两个滤波器,就得到了h(n)。4.2.7计算目标信号通常,自适应码本搜索所使用的目标信号z(”)是从方程(4.33)所示的加权语 堕童三些兰堕堡圭兰堡篁苎。一一音信号5。(肛)中减去加权合成滤波器彤(z)厂A(z)的零输入响应而计算得到的。G.729协议中使用另一个等同的做法来计算目标信号,这就是:将线性预测残差信号r(n)通过合成滤波器1/A(z)与加权滤波器A(zh)和A(z/丘)的级联,然后决定子帧的激励。在确定了子帧激励之后,将残差信号与激励信号之间的差值通过这两个滤波器来更新其初始状态。线性预测残差信号,(咒)不但在此处用于寻找目标矢量,而且在自适应码本搜索中要存入激励缓存。线性预测残差信号由下式给出:10,(甩)=s(疗)+∑匆G—i)声l(4。36)4.2.8自适应码本计算自适应码本参数(或称基音参数)是基音周期和基音增益。在自适应码本实现基音滤波器的逼近过程中,激励信号要在~个子帧的长度内不断重复。在搜索阶段,用线性预测残差信号来替代激励信号,以简化闭环基音搜索过程。自适应码本搜索每子帧(5ms)进行一次。在第一子帧,用1/3插值方法在【19{,84詈J3j范围搜索分数基音周期正,在[85,1431范围内则只进行整数方法进行搜索;在第二子帧,始终用1/3插值方法在[int瓴)一5j1血t亿)+4爿范围内搜索基音周期疋,其中,iIlt伍)是第一子帧分数基音周期7:的整数部分。对每一个子帧,最佳的基音周期是能使加权均方差最小的闭环分析决定的。在第一子帧,基音周期五是在开环基音周期附近的一个较小范围内(6个样值)搜索得到。搜索范围的上下限f。和f~由以下过程得出:‰=乙一3矿fⅢ<20thenfm=20fm=fT血Il+6扩f一>143thenf一=143f。=em一6end对于第二子帧,闭环基音分析是在第一子帧选出的基音周期的附近搜索的。搜索范围的上下限在f。一;和,一+詈,其中‰和f。是按以下过程由互继承 .堑窒三些兰堕堡圭兰堡丝圣=一========;=====;=======;======================—————————————~一一的:trra。=int(T0—5矿f。<20theno=20tm.x=tm+9扩r。>143thentmax=143fm=o一9end闭环基音搜索的原则是原始语音与重建语音之间的加权误差最小。即使下式中的n(k)达到最大就满足了要求:∑x(n)y。(n)尺(≈)=嚆争一(4—37)1/∑n如)n伽)_n--O其中z(n)是目标信号,Yk(n)是在延迟k时通过滤波器的激励信号(激励信号与^(n)卷积)。卷积儿(n)只在延迟r。时计算。对于搜索范围内的其它整数值女=r。。..,f~,卷积儿(^)由下列迭代关系计算Yk(n)=Yk-1(n一1)+“(一k)吃(,1)n=39,--.,0(4-38)其中“(”),H=一143,⋯,39是激励缓冲,儿一。(一1)=0。值得注意的是,在搜索阶段,样值“(n),n=O,⋯,39是未知的,而这些值在基音周期小于40时才需要。为了简化搜索,将线性预测残差信号拷贝到“(n),使式(4—38)所示的关系对所有的基音延迟都是有效的。在搜索第二子帧的基音周期E时,如果第一子帧的闭环基音周期五的整数部分小于85,则必须对最佳整数延迟附近的分数延迟进行测试。分数基音搜索是通过将式(4-37)所示的规范化相关系数进行插值并寻找其最大值而实现的。插值过程所使用的是一个基于哈明窗截取取样函数的有限长冲激响应滤波器bi:,’1’这个函数在±11处截断,在±12处填充0。对于一詈,一寺,0,i1,詈,这几个分数值,jJ插入的的月(I)值由下面的插值公式得到: 堕窒三些兰堕堡主兰堡丝圣———=;==E{==目==目=========;========={====;=;======———————————————一尺(t),=主尺(女一姚2(H3i)+杰尺(女+1+呐2(3一H3i)f=0,1,2(4—39)其中r=0,1,2分别对应于分数o,÷,妄。·自适应码本矢量的产生一旦确定了基音延迟,就可以通过对激励信号“(H)在给定的整数延迟k羊日分数延迟t进行插值而计算出自适应码本矢量:r(n)=芝“(n-k+i)b3。(f+3i)+善“(n—k+1+i)b30(3卅3i)(4-40)i=旬,=O71"1=0,-一,39f=0,1,2插值滤波器%是由一个在+29处截断的哈明窗截取样函数得到的,它在+30填充O。·自适应码本延迟码字的计算第一子帧的基音延迟正编码为8比特,第二子帧的相对基音延迟L编码为5比特。分数基音周期T由它的整数部分hn仃)和分数部分frac/3,frac=一1,0,I表示。基音周期索引PI按以下规则编码:肛f黼墙)-19,)++fral97一箨黩[86舞143p1#ac挈0妇c4川l(iIlt(五)一85)+旷五=,·一,=第二子帧的基音周期正的值相对于第一子帧的基音周期7j编码,其编码规则如下:P2=3(int(夏)一fⅡ自)+加c+2(4—42)为了使编码器对随机比特的误码有更强的健壮性,对第一子帧的基音周期Z的索引P1设置了一个校验比特Po。对P1的最重要的6个比特进行异或运算,就得到了P0。在解码端,这个校验比特重新被计算,如果重新计算的结果与传输后的值不相符,就会调用一个坏帧隐藏过程。·自适应码本增益的计算~旦确定了自适应码本的基音延迟,自适应码本的增益g。可由下式计算:∑x(n)y(n)g,=专L~ZY(n)y(n)(4—43)其中x(n)是目标矢量,y(n)是自适应码本矢量v(n)通过加权合成滤波器 堕窒三些兰堕堡主兰堡丝兰w(z)/A(z)的零状态响应,由下式计算:),0)=∑V(I》0一i)n=o,⋯,39i卸《.2.9固定码本的结构与搜索固定码本是使用一种称为“交叉单脉冲排列”(InterleavedSingle--PulsePermutation,ISPP)的代数码本结构。在这个码本中,每个码本矢量包含四个非零脉冲,每个脉冲的幅度可以是+l或一1,脉冲的可能位置列于表4—2。表4.2固定码本的结构}脉冲符号位置If0SO:+-1%:0,5,10,15,20,25,30,35ii,Sl:±1ml:I,6,11,16,21,26,31,36Ji2s.:±lm2:2,7,12,17,22,27,32,37●:Z3S3:±1m3:3,8,13,18,23,28,33,38,4,9,14,19,24,29,34,39码本矢量c(n)按以下方式构建:先取一个40维的0矢量,将四个单脉冲放置在找到的位置上,然后分别将它们乘以相应的符号:c0)=S06G—mo)+5。d0一m,)+s26G~m:)+s360一m3)n=o,⋯,39(4-45)其中6(0)是单位脉冲。选中的码本矢量要通过一个自适应能增强谐波分量的预滤波器尸(z),以改进重建语音的质量。预滤波器由下式给出:e(z)--I/O一声z。)(4-46)其中T是当前子帧的基音周期的整数部分,卢是基音增益。声的值随上一子帧的自适应码本的量化增益变化:∥=雪≯。1)boundedby0.2≤∥≤0.8(4-47)对于式(4-45)所示的码本c(n),如果基音延迟小于40,要按照下式进行修正:c’栌t、1f。c¨(n)胁圳竺∥(4_48)在固定码本搜索中,冲激响应也要一块进行修正:怕)=侄‰确)兰掣(4-4,)·固定码本的搜索过程 一堕塞三些兰堕堡主兰堡垒苎——固定码本的搜索原则是使式(4+33)所示的加权输入语音J。(,1)与加权重建语音之间的均方误差最小。其过程是目标信号z(m)减去自适应码本的贡献:J7(n)=工(n)一g。y(n)n=O,·一,39(4·50)其中y(n)是式(444)所示的自适应码本通过加权合成滤波器的零状态响应,g,是式(4-43)所示的自适应码本的增益。矩阵H定义为Toeplitz卷积矩阵的下半部分,矩阵西=日‘H包含了h(H)的相关系数,这个对称矩阵的元素由下式给出:3q姒J)=∑h(n-i)h(n一,)i=0,⋯,39j=i,⋯,39(4-51)n=j相关信号d(n)由目标信号工7(凡)和冲激响应h(n)得到:39d(n)=∑x’(Oh(i-n)月=o,⋯,39(4—52)fz^假设q是第k个固定码本矢量,则使下式的值最大的码本矢量就是固定码本搜索的目标:立:趔㈧,,,/1^、zEkc:Ockj其中,,代表矩阵的转置。在搜索码本之前就要计算信号d(n)与矩阵中,实际上仅有4个元素才需要计算,而且设计了一个高效的存储过程来加速搜索的速度。由于一个代数结构的码本矢量Ck只包含有4个非零脉冲,因此可以对其进行快速搜索。式(4—53)的分子由下式给出:q=∑tcl(m。)(4—54)其中%是第f个脉冲的位置,s,是其幅度。式(4—53)的分母的能量由下式给出:323£=∑≯(mi,m。)+2∑∑5,s,≯(m。,m,)(4—55)i=O,却j=i+l为了简化搜索过程,脉冲的幅度通过量化信号d(m)预先决定。即设置脉冲 .堑窒三些兰堕堡主兰堡篁圣:=======;=====;=====;====;=≈===#====≈;={===——===;———————————————————一。幅度的位置等于d(n)在这个位置的符号。在码本搜索之前,先要进行以下步骤。首先,信号d(n)被分解为两个部分:其绝对值p(n)l和它的符号s切瞄(n)]。然后,通过引入符号信息来修正矩阵中:≯(f,J)=sign[d(i)]sign[d(j)]≯(i,J)i=0,---,39,=i+1,⋯,39(4-56)式(4-55)中的矩阵m的主对角线元素要除以2:p,(f,i)=0.5≯(f,f)i=0,⋯,39(4—57)相应的,式(4—54)中的系数变为:C=Id(%)}+}d(碍){十ld(%)卜叫d(%)l(4—58)式(4-55)中的能量为:彰2=≯,(‰,mo)+9,(码,%)+≯,(%,%)+妒,(m2,m2)+妒7(,珂o,m2)+妒7(7q,m2)(4—59)+≯7(,坞,m3)+妒7(mo,7码)+妒7(%,m3)+妒’(m2,7b)为进一步简化搜索过程应采用一个集中的搜索逼近。在这个逼近中,在进入最后一个循环之前,先测试一个预先计算好的阈值,只有在超过阈值的情况下才进入最后一个循环。进入循环的最大次数是固定的,因此只有很小比例的码本被搜索到。阈值是根据系数C来计算的。在进入码本搜索之前,要计算与前三个脉冲相应的相关系数的最大值绝对值max,和平均值口v,。阈值由下式给出:thra=av3+K3(max3--av3)(4-60)其中,O143thentara=143f。=r~一9end现在,对瓦的解码可以按下式进行: 塑塞三些兰堕堡圭兰堡垒圣一—一mfra‘。缘P2二22:茹2一++2ff‘芝31)(4-77)=一一3《尸一)使用式(4—40)R寸激厉JJ信号“(n)在基音延迟处进行插值,就得到了自适应码本矢量v(,1)。(4)固定码本矢量的解码接收到的固定码本索引C用来解出激励脉冲的位置,激励脉冲的符号S得到。这通过将4.2.9所述的过程反过来执行就可以实现。一旦解出了固定码本矢量c(,1)的脉冲位置和符号,就可以按照式(445)构造固定码本矢量c(n)。如果基音周期T的整数部分小于子帧长度40,c(n)要按照式(448)来作修正。(5)自适应码本与固定码本增益的解码接收到的增益码本给出了自适应码本增益窖。和固定码本增益校正系数F详细的过程见4.2.10。(6)计算重建语音激励“(,1)输入线性预测合成滤波器就得到了重建语音:10i(n)=“(,z)一∑辅n~i)n=o,⋯,39(4-78)i=l其中a,是当前子帧插值后的线性预测滤波器系数。接下来,重建语音§(n)要通过下一部分所描述的后处理器的处理。4.3.2后处理过程后处理包含自适应后滤波和高通滤波。自适应后滤波是以下三个滤波器的级联:一个长时后滤波器H。(z),一个短时后滤波器日,(z),以及一个倾斜补偿滤波器日,(z),最后是一个自适应增益控制过程。后滤波器系数每5ms更新一次。后滤波过程的组织如下:首先,重建语音j0)通过A(z仉)来产生残差信号FG)。这个信号用来计算长时后滤波器日。(z)Nti逖r和增益g,。然后残差信号P0)通过长时后滤波器H。z)以及合成滤波器1/g,A(z/虼)。最后合成滤波器,/e,_(z/九)的输出信号通过倾斜补偿滤波器甘,&)来产生经过后滤波的重建语音信号,0)。之后,一个自适应增益控制过程被应用到,0)来与j0)的能量匹47 一堕窒三些兰堕堡主兰堡丝圣#;;====#≈==;;========{==={o===;========;====;===;————————————————一配。得到的结果信号,’0)通过一个截止频率为100Hz的高通滤波器并将幅度加大一倍来产生解码端的输出信号。·长时后滤波长时后滤波器由下式给出:以蜘志o+々gtZ-r)(4-79)其中丁是基音周期,gl是增益系数。注意苫,的上限是1,而且当它不表现出很强的周期性时被设为0。系数。控制长时后滤波的比重且0=o.5。由残差信号P0)合成语音j0)通过A∽以)得到,长时基音延迟与增益由PO)得到(见短时后滤波器的描述部分)。长时基音延迟是使用一个双通过程(two-pass.procedure)计算得到的。第一个通路在lint伍)一1知t伍)+1]范围内选择最佳整数瓦,其中int伍)是传输后的第一子帧基音周期的整数部分。之所以使用第一子帧的基音周期是因为它的值与编码端获得的开环基音周期值接近。最佳整数基音周期是使下式所示相关系数曰瞪)最大:39RG)=∑i0≯0一女)(4-80)n=0第二个通路在To附近用l/8方法选择分数基音周期r。这是通过用寻找下式所示的最大的伪规范化相关系数而得到的:39∑毛G箴0)R’伍)=喇净一(4·81)、f∑《Q竣o)Yn=o其中丘白)是延迟为k的残差信号。一旦找到了最佳基音周期T之后,相应的相关系数尺7仃)就被用i0)的能量的均方根规范化。这个规范化相关系数的平方被用来决定长时后滤波器是否应被禁止。这是通过如下方法实现的:如果下式成立则设置g,=O:茹 堕童三些兰堕堡主童堡丝壅:一否则g,的值由下式计算:铲客粼,boundedby0<.<-gz<0.5∽s,,非整数的延迟信号&0)首先用一个长度为33的插值滤波器计算。在选出了T后,用一个长度为129的插值滤波器重新计算靠0)。如果新的靠0)使R(T)值增大,则使用新的信号(插值滤波器长度为129时计算出来的五O))来取代以前的信号(插值滤波器长度为33时计算出来的名0))。据发现,用更高的插值方法来重新计算基音周期要比直接利用传输得到的基音周期效果好。禁用长时后滤波器在减小人为背景噪声和摩擦噪声方面十分有用。·短时后滤波短时后滤波器由下式给出:噼古矧=古薏篆㈤⋯其中A(z)是接收到的量化线性预测(LP)逆滤波器系数,系数,。和'。控制短时后滤波器的作用大小,而且设置'。=0.55,,d=O.7。这些值是使用单编码和多编码通过大量的非正式听力测试得出的。增益g,是从滤波器A(z/以)/A(z/儿)的截断冲激响应h,0)得到的,并由下式给出:g,=&Ihz(n](4-85)据发现,这种增益的规范化有助于减小中间信号的动态范围。值得注意的是一个全面的增益控制过程仍被用来保证重建语音和经过后滤波器的语音信号具有同样的信号量级。·倾斜补偿滤波器量H,(z)对短时滤波器H,(z)的倾斜作出补偿,并由下式给出:州z)-高-Er,:1o+75k,z-I)其中,,女7是倾斜系数,k:是从%(n)计算得出的第一个反射系数(renecnoncoefficient),计算公式如下:女j:一盟1吒(o)‘(J_)=∑h∥)^∥+f) 堕童三些兰堕堡主兰堡丝圣—一=====%{=====;≈===5=自=≈=#====;≈====;====;=====;==;————————————————一增益部分的1一l以吲提供了^,(z)附加的增益规范化。据发现,产生结果的滤波器^,(z)和啊(z)一般具有相同的增益。,,使用的两个值依赖于巧的符号。如果tj是负数则,,=0.9;如果k;是正数(相应于频谱具有大量的高频能量)则,,=0.2,避免接下来的低温滤波对频谱的影响。·自适应增益控制自适应增益控制用来补偿重建语音信号;(,1)和经过后滤波器的信号,(Ⅳ)之间增益的差异。当前子帧的增益修正系数G由下式计算:G:鼬(4-88)2.,._-olstn)lG2E丽上式中绝对值之和只是信号能量的大约估计,但据发现,因为有g,和g,对中等信号的修正,这样的大约估计是一个很好的折衷。经过增益缩放后滤波器的信号.,’(n)由下式给出:厂,(n)=g‘4’,(n),n=0,·一,39(4-89)其中g‘4’是按样值的原理更新的,由下式给出g‘“’=O.859‘“。1’+0.15G,n=0,·.t,39(4-90)初始值g‘。1’=1.0;在接下来的子帧里,g‘。’的值设为前一于帧中g档9’的值。·高通滤波与幅度的扩大经过后滤波过程的重建语音,(n)要通过一个下截止频率为100Hz的高通滤波器:H:—0.93980581-1.879583—4z-1+0.93980581z-z/1f4一q1)L,=——————————————■———————————■——一L‘}一yl,~1--1.9330735z1+0.93589199z。经过商通滤波器的信号要乘以2,以恢复原来的幅度。4.3.3坏帧的隐藏解码器端包含了一个错误隐藏过程以减少因比特流中的坏帧而导致的重建语音质量的降低。当某一帧的编码器参数(相应于10ms的帧)被认定为丢失时,这个坏帧隐藏过程被激活。G.729协议中没有定义探测坏帧的机制,这将依赖于具体的应用。隐藏策略必须根据以前收到的信息来重建当前帧。其方法是用一个具有相似特性但能量逐渐衰减的信号来代替丢失的激励信号。这是通过使用基于长时预测 堕堑三些兰堕堡兰耋堡篁壅:—一增益的语音分类法来实现的,这个分类是作为长时后滤波器分析的一部分计算得到的。长时后滤波器(见4.3.2)采用一个使得规范化相关系数大于0.5(见式(4—82))的延迟的长时滤波器。对于错误隐藏过程如果一个10ms的帧中至少有一个5ms的子帧的长时预测增益大于3dB,则这一帧被声明具有周期性;否则此帧被声明没有周期性。一个被删除的帧继承了它前边的重建语音帧的类别。注意,语音分类是根据重建语音信号不断更新的。对一个被删除帧采取的特定步骤如下:(1)重用合成滤波器参数;(2)自适应与固定码本增益的衰减;i3)增益预测器存储变量的衰减;(4)产生替代激励信号。·重复合成滤波器的参数在一个被删除帧中,合成滤波器采用上一个好帧的线性预测参数。移动均值(MA)线谱频(LSF)预测器的存储记录包含了接收到的码字f,的值。因为当前帧m的码字不可用,因此它是使用下式由重用线谱频(LSF)参数国,和预测器存储记录计算得出的:£=卜弘驴圳”弘)渊,⋯如∽㈣其中移动均值(MA)预测器系数多。是上一个收到的好帧的预测器系数。·自适应与固定码本增益的衰减坏帧的固定码本增益是基于前一帧的固定码本增益的衰减的:g∥=o.989:””(4-93)其中m是子帧标号。自适应码本增益是基于前一帧的自适应码本增益的衰减的:g,=0.99,“’boundedbyP,’<0.9(4—94)分类的使用允许对不同的激励使用不同的衰减系数(周期性激励使用0.9,非周期性激励使用0.98)。这在噪声环境下被证明是非常有效的。如果在没有语音信号的时候发生了帧删除,分类判别将声明此帧为非周期性的,幅度的渐变避免了会引入干扰的无声效应。·增益预测器存储变量的衰减正如本章第二节中4.2.10所述,增益预测器使用以前选中的固定码本矢量c(n)的能量。为避免解码端跃变的影响,一旦收到好帧,使用衰减后的码本能量更新增益预测器的存储记录。当前子帧m的疗(”’值置为量化增益预测误差的均值减去4dB:扣k(0_25喜护’)一a胁ndedby扣It4㈦㈣ ·替代激励信号的产生使用的激励依赖于周期性的界定。如果上一帧的重建语音信号被判定为周期性的,当前帧也被认为是周期性的。在这种情况下,只有自适应码本被使用,且固定码本增益被设为o。自适应码本的基音周期是基于以前帧的基音周期的整数部分,并且在接下来的帧中重复。为了避免过度的周期性,基音周期的值以143为界,每一个子帧加一。自适应码本增益在基于前一帧自适应码本增益的基础上衰减。如果上一帧的重建语音被判定为非周期性的,当前帧也被认为是非周性的,并且自适应码本的贡献被设为O。固定码本的贡献由随机选择一个码本索引和符号索引而得到,随机数产生器基于如下函数:seed=3182lseed+13849(4.96)seed的初始值设为21845。固定码本增益在基于前一帧固定码本增益的基础上衰减。4.4G.729A的编解码算法G.729A的编解码算法和G.729基本相同,其编码参数的比特分配、算法延迟等也和G.729完全相同。主要简化之处如下所述:(1)1感觉加权滤波器w(z)基于量化的LP滤波器系数(G.729是基于未量化的LP系数),并将(4-27)式改为下式:w(z):善安(4—97)式中的,固定,且,=O.75,这就减少了计算加权综合滤波器冲激脉冲响应、计算目标信号和合成加权滤波器状态的更新次数。(2j开环基音分析时,采用抽取方法简化计算。即只计算偶数基音时延的相关系数,即将式(4.34)改为:RG)=∑s。Qn墨。.(2n-女)(4—98)n=O然后在所选基音时延±1的时延上测试,以确定开环基音时延,而不是在全部基音时延上都计算相关数再确定。(3)简化了自适应码本的搜索。在闭环基因搜索中,简化了最大R(k)的计算,即:使式(4-37)中分子最大即可。(4)固定码本搜索时,以迭代的深度优先树搜索代替四层嵌套循环的搜索方法。在这一部分中,复杂度的降低占了整个编码器算法复杂度降低的50%。e5)解码器中,自适应滤波器仅使用整数时延,从而简化了后滤波器,即:长时后滤波器改为下式:州z)2南(1+ypgt'z-rJ(4-99)与(4-79)式相比后者T只取整数。 一堕塞三些兰堕堡主兰堡堡圣::——其它具体的区别如下:短时后滤波器改为:吼,=剿=莲与(4-84)式中相比,后者去掉了系数肌。倾斜补偿滤波器改为:扫,(z)=1+力硪~1(4—101)与(4—86)式相比后式中去掉了系数g,。自适应增益的修正系数G也与式(4—88)不同,公式改为:G=通过这一系列修正,G.729算法的复杂度大大降低。4.5性能评述(4-102)早在ITI卜一Il的研究期间,cs—AcELP编码器的各种版本就广泛地被不同的组织测试过。这些组织是IT【卜呷第12研究组(SGl2)的成员,并曾参予过几种其它语音编码器的评估。归因于ITu—T的国际性,一个额外的优势就是这些测试是用各种语言进行的,比如像美国英语,德语,法语,意大利语,以及目语。大多数测试是基于完全分组等级(AbsoluteCategoryRatings,ACR),比如。平均意见分(MeanOpinionScore,MOS)测试。为了检查有背景噪声时盼眭能,还进行了下降分组等级(DegradationCategoryRacing,DcR),比较分组等级(ComparisonCategoryRating,CCR)测试。因为ITu—T的要求是这个编码器的语音质量与32Kb/s的ADPCM(G.726)相等或更好,因此这一条件作为参考包含在了所有的测试中。测试结果表明G.729在元误码以及标称输入的条件下获得了不比G.726差的质量。结果同时也表明G.729对输入变化的敏感程度不及G.726。两个G.729的异步编码的质量要优于四个G.726的异步编码的质量,它满足了ITU在未来应用方面的要求。对于有背景噪声的语音的测试结果表明G.729获得了与G.726相同的统计分。1995年六月,一个中等版本的G.729定点编码器被FTCNET和NTT测试,并且与浮点版本作了比较。结论是浮点与定点版本之间总体上没有明显差异。l995年秋天进行了大规模的定性测试。这次测试包含了三个主要的实验。实验1使用完全分组等级方法来估计串联性能并且用其它标准化的(国际标准与地区标准)语音编码器编码。实验2使用比较分组等级方法来估计环境中包含了其它信号(办公室杂音,汽车噪声,街道噪声,白噪声以及音乐)时的性能。实验3使用完全分组等级方法来估计有随机误码和在同时使用无噪声和有噪声语音的链路竽孵 西安工业学院硕士学位论文J:探测到突发坏帧时的性能。突发误码是由一个1l阶马尔可夫模型(Markovmodel)产生的。这意味着多至lOOms的语音段可以被删除。测试结果表明G.729对信道误码是健壮的,并且在1%随机信道误码率条件下提供了很高的质量。ITU—T对随机信道误码的性能要求为“不比G.726在无误码时的平均意见分(MOSJ减去0.5差”。这个要求在有3%坏帧率的情况下得到满足。基于这些统计结果,第15研究组(SGl5j得出结论:G.729编码器满足了在大多数使用情况下提供长途质量的最初要求。 !!墅!!!!竺呈些墼堑丝垄鎏一——==========;==================;=;============;=≈=;;==———————————一一5TMS320C54xDSP的开发方法自80年代初第一代DSP芯片诞生至今短短十多年时间里,DSF芯片得到,突飞猛进的发展,与第一代DSP芯片相比,90年代后期推出的新型DSP在性能价格比和开发手段等方面都有了长足进步。如今,DSP芯片已经在通信与信息系统、信号与信息处理、自动控制、雷达、军事、航空航天、医疗和家用电器等许多领域得到了广泛的应用。TMS320DSP是德州仪器公司㈣生产的数字信号处理器系列产品,它包含定点、浮点和多处理器DSP等多种类型产品,它的结构是专门为实时信号处理而设计的。TMS320DSP系列产品从1982年第一代产品TMS32010出现至今己发展为拥有’Clx、’C2x、’C2xx、’C5x、’C54x、和’C6x定点DSP,’C3x和’C4x浮点DSP以及’C8x多处理器DSP等逐渐完善的产品系列。TMS320C54x是隶属于TMS320DSP家族的16位定点数字信号处理器,它具备高速运算能力、高度灵活的可操作性,拥有很高的性能价格比和成熟的开发技术。TMS320C54x为远程通信和无线通信系统设计方面提供了高效、低功耗、廉价DSP的理想选择,在通信领域具有广阔的应用前景。5.1TMS320C54x概述TMS320C54x系列DSP包含有不同型号的芯片。这些C54x系列的DSP芯片在内部CPU的结构上是相同的,只是在芯片的工作电压、片内存储器容量大小和外围接口电路的设计上不同类型的芯片之间会有所不同。5.1.1TMS320C54xDSP的关键特点f1)CPU①先进的多总线结构,一条程序总线、三条数据总线和四条地址总线;②一个40位运算逻辑单元(ALU),包括一个40位桶形移位器和两个独立的40位累加器;③17位x17位并行乘法器与40位专用加法器相连,用于非流水线式单周期乘法/累加(MAC)运算;④比较、选择、存储单元(cssU),用于加法/比较选择;⑤指数编码器,可以在单周期内计算40位累加器中数值的指数;⑥双地址产生器,包括8个辅助寄存器和2个辅助寄存器算术运算单元。(2)总线结构C54x片内有8条16位主总线:4条程序,数据总线和4条地址总线。这些总线的功如下:①程序总线(PB)传送取自程序存储器的指令代码和立即操作数。②3条数据总线(CB、DB和EB)将内部各单元(如CPU、数据地址生成单元、程序地址生成电路、在片外围电路以及数据存储器)连接在一起。CB和DB传送读自数据存储器的操作数。EB传送写到存储器的数据。⑧4个地址总线(PAB、CAB、DAB、EAB)传送执行指令所需的地址。C54x可以利用两个辅助寄存器算术运算单元(ARAU0、ARAU1),在每个周期内产生两个数据存储器的地址。PB能够将存放在程序空间(如系数表)中 西安工业学院硕士学位论文的操作数,传送到乘法器和加法器,以便执行乘法/累加操作,或通过数据传送指令(MV'PD和READA指令)传送到数据空间的目的地。此种功能,连同双操作数的特性,支持在一个周期内执行3操作数指令(如FIRS指令)。C54x还有一条在片双向总线,用于寻址在片外围电路。这条总线通过CPU接口中的总线交换器连到DB和EB。利用这个总线读/写,需要2个或2个以上周期,具体时间取决于外围电路的结构。表5—1列出了各种读,写方式所用到的总线。表5.1各种读/写::b-stN:N到的总线地址总线程序总线数据总线读/写方式PABCABDABEABPBCBDBEB程序读√程序写√一单数据读√、,双数据读√0一长数据(32位)读如W√1w√fhw)√flw)单数据写一吖数据读/数据写一√双数据读/系数读V一√外设读√外设写√注:hw=高16位字,1w=低16位罕(3)存储器空间C54x的存储器空间可以分成3个可单独选择的空间:程序、数据和YO空间。在任何一个存储空间内,RAM、ROM、EPROM、EEPROM或存储器映象外围设备都可以驻留在片内或者片外。这3个空间的总地址范围为192K字(64K字程序,64K字数据和64K字//O,C548除外)。程序存储器空问存放要执行的指令和执行中所用的系数表。数据存储器存放执行指令所要用的数据。YO存储空间与存储器映象外围设备相接口,也可以作为附加的数据存储空间使用。在C54x中,片内存储器的形式有DARAM、SARAM和ROM三种,取决于芯片的型号。RAM总是安排到数据存储空间,但是也可以构成程序存储空间。ROM~般构成程序存储空间,也可以部分地安排到数据存储空间。C54x通过3个状态位MP/MC位、OVLY位和DROM位,可以很方便地“使能”和“禁止”程序和数据空间中的片内存储器。这三个状态位是:①MP/MC位若MP/MC=0,则片内ROM安排到程序空间;若MPIMC=l,则片内ROM不安排到程序空间;②OVLY位若OVLIz=l,则片内RAM安排到程序和数据空闯;若OVLY=O,则片内RAM只安排到数据存储空间;③DROM位 ——墼窒裹些篓堕堡圭耋堡篁圣,:——一=≈==;≈#=《==;≈#;《===_#=#∞==_==目≈#=目∞;=#==—∞;—≈—————————一警DROM=l,虽{l部分片惫ROM安蓑}蚕数撂空藏;当DROM;1,则片内ROM不安接裂数据空闯。DROM麴用法与MP/再瑟的矮法无关。这三个状态毽包含在处理器工作方式状态寄簿器(PMST)孛。3FFF4000FF7FFF80FFFF像留‘潴¨(OVLY=0)片斑DARAM(O夕V漭LY=1)(OVLY:0)夕}部中龋字(外部)保馨fOVLY=1)多济(OVLY=O)片内DAKAM‘潴”(OVLY=O)外部片蜘f4Kxl6bitl保留擀(外部)3FFF4000EFFFF000FEFFFF00存储蒯黼SpRAM片漆DARAM{16×16bit{外郏片阿埘夕嘏黼!。)保黎(DROM=i》或外郎{DROM=O)MP/M—C=l心厕巴0(微处理器模式)(微型计算机膜式)图5—1TMS320C5402存储器凰图5.1给出了C5402的数据和程序存鼹区图,说明了MP/MC与、OVLY以及DROM3个状态位的关系。(4)流水线C54x有一个6级深度的指令流水线。这6级流水线彼此是独立的。在任何~个枧器震耀痰,爵以鸯I-6条不溺静缮令在辩辩工作,每条指令工作在不弼级的溅水线上。这6级流水线的功袁%如下(见下页):C54xCPU的流水线阶段,依次是指令预取、指令取、攒令解码、地址访问、数据读敬和指令执行阶段,不同指令可以同时运行在流水线的不同阶段上,因此太大改落了资源的穰露率,菠程序觞藏行速度大禧魔琏挺高。头两级,第一个税器周期预取指是加载一条灏攫令鲍地址,把其送到程序憨线土;紧接着的一个援器周期取指阶段是读出这条指令,把指令从程序总线装载到指令寄存器(1R)qh。若是多字指令,就需要几个机器周期才能将一条指令读出来。第3级指令译码阶段对指令寄存器肉黪指令内容迸行译码,产生挠行指令所需要豹一系列控铺信号。接蓉的两级是寻址劳读出操作数。如果指令篱要,裁在寻址级热载一个残两0FO0㈣州Ⅲ㈨㈣F0F0FOFOP珊啪孵Ⅲ苣|Ⅲ哪嗍凇 .一堕童三些兰堕堡圭兰堡!篁圣={=#=;========;=====}====;==2;#=====;====;=;=—¥——2———————————一——用PC中的内容-用PB的内容加塾IP加载PAB·对IP的内容译码读数据l,加载DB读数据2,加载cB如果需要,用数据3写地址加载EABlf(预取指)lF(取指)ID(译码)JA(寻址)fR(读数)IX(执行)1.用读取到的指令字加载PB撩謦,用数据l读:繁墨嚣蚴鬯翌塑加~~,±施瞄。·如果需要,用数据2读‘·修正辅助寄存器和堆栈指针个操作数的地址,紧接着读出一个或两个操作数。在读数时,还可以加载一个写操作数的地址,以便在流水线的最后一级将数据送到数据存储空间。由上可见,C54x流水线中的存储器存取操作都分为两个阶段:第1个阶段,用存储单元的地址加载地址总线;第2个阶段,对存储单元进行读,写操作。(5)指令集·单指令重复和块重复操作;·对较好的程序和数据管理的块存储器移动指令;·一个32位运算数的指令;·两个或三个运算数读的指令;·并行存储和并行装载的运算指令;·条件存储指令;·从中断快速返回。(6)片内外部设备·可编程软件等待状态产生器;·可编程存储单元开关;·片内锁相环(PLL)时钟产生器与内部振荡器或外部时钟源;·两个全双工串行口支持8和16位变换器(’C541);·时分多路传输frDM)串行口(’C542/’C543/’C548);·缓冲串行口(BsP)(’C542/’C543/C545/C546/’C548);·8位并行主机口接口(HPD(’c542,C545/’C548);·一个16位定时器;·片外外部总线控制阻塞外部数据总线,地址总线和控制信号;·带有总线控制器特性的数据总线;·可编程计时器。!.i.2TMS320C54x芯片结构描述TMS320C54x系列的DSP的CPU采用了先进的多总线结构,共用了三个数据总线(其中的两个总线用于读数据,另外一个总线用于写数据)和一个程序总线,这种总线结构为指令的并行执行在硬件上提供了支持。CPU内含有一个40位的算术逻辑单元,这包括40位的桶形移位器和两个独立的累加器。CPU内还具有~个17位的乘法器,这个乘法器能和与之相连的加法器(40位)完成单周期的乘,累加操作。这种乘,累加运算操作几乎在所有的常见算法中均要用到,例如, 堕堑三些兰竖堡主兰堡堕苎一—一在计算卷积、内积、矢量距离及矩阵乘法等过程中均要用到这种乘,累加运算操作。在通信的数据译码、动态模板匹配过程中常常需要使用Viterbi算法,在这个算法中,数据的比较判断运算占有较多的比例,因此在芯片内还含有一个比较/选择,存储单元用于高效地完成含有Viterbi算法。所以TMS320C54x系列的DSP非常适合于完成含有Viterbi算法的语音识别、数据解码等的工作。另外CPU内还有一个指数编码器,能在一个指令周期内完成一个40位累加器数据的指数计算。片内还有两个地址生成器,用来生成访问存储器所需的地址,它包括八个辅助寄存器和两个辅助寄存器算术运算单元。TMS320C54x系列的DSP指令系统不仅支持重复执行某~条指令,而且还支持重复执行有若干条指令组成的程序块,DSP指令系统还支持内存块数据的移动操作,指令的操作数字长可为32位.算术运算指令可以同时完成读写操作,另外还可以完成条件存储操作,具有从中断快速返回的指令。DSP还具有控制芯片功耗的指令,来控制芯片的工作状态。TMS320C54x系列的DSP芯片的外设接口电路可以产生等待周期,用于同低速的外设接口。还具有存储器的段切换功能。片内的锁相环电路可以对芯片外的时钟进行倍频,产生内部所需的工作时钟。芯片上的串行接口会随不同的型号而有所不同,例如C541类型的芯片含有两个能支持8位和16位全双工串行口,C542/C543类型的芯片含有时分多址的(Ⅱ)M)串行口和带缓冲的串行口。具体的详细串口配置可参见Ⅱ公司‘们9IS320C54xUser’SGuide”手册。由此可见TMS320C54x系列的DSP芯片具有很强的运算能力,由于芯片内设有各种常用的数字信号处理算法所需的硬件结构,所以它比TMS320C2x、TMS320C5x系列的DSP更适合在语音、数字通信等领域中应用。5.1.3TMS320C54x的寻址方式a.TMS320C54X的数据寻址方式在TMS320C54x系列DSP中共提供了7种有效的寻址方式,它们分别是:·立即数寻址方式立即数寻址就是在指令中直接包含了指令所需要的操作数。·绝对寻址方式这种寻址方式是在指令中包含了所要寻址的存储单元的地址。·累加器寻址方式累加器寻址方式使用具加器中的数值作为地址来读取程序区中的数据。·直接寻址方式在直接寻址方式中,指令中就已经包含了数据存储器地址的低7位,而高9垃地址由页面指针DP或堆栈指针sP提供(由STl中的CP/位决定)。这种寻址方式使得指令的长度可以缩减为单字长。·间接寻址方式间接寻址是根据辅助寄存器(aR0.AR7)的内容来寻址的。64K数据空间中的任一单元都可以用间接寻址方式的方法来访问。间接寻址方式是TMS320C54x系列DSP中最有特色也是最灵活的一种寻址方式。·存储器映象寄存器寻址方式在存储器映象寄存器寻址方式下,数据页指针(DP)或堆栈指针(sP)不会被改变。在这种模式下向寄存器写的操作开销最小。·堆栈寻址方式DSP中的堆栈是当发生中断或调用于程序时用来自动保存程序计数器(Pc)用的。它也可以用来保存当前的程序环境或用于传递 里茎三些兰堕堡主兰丝篁塞————参数用。堆栈是从高地址向低地址生长的。在处理器中是用一个16位的存储器映象寄存器sP(堆栈指针)来访问堆栈。堆栈指针一直是指向堆栈中最后一个存入的单元。在压栈时,堆栈指针值先被减少再将数据存人堆栈指针指定的存储单元。在退栈时,数据从堆栈弹出后,堆栈指针的值被增加。在直接寻址中也可以用堆栈作参考基地址进行寻址。b.TMS320C54x的程序寻址方式程序存储器中存储的主要是应用程序的指令代码或是一些程序所要使用的系数表、立即数或其他一些资源和信息。’C54x系列的DSP有64K的程序存储器空间,设有程序计数器if'C)、指令重复计数器RC、程序块重复计数器BRC、重复起始地址寄存器RSA、块重复结束地址寄存器REA。’C54xDSP在取指令时先将Pc中的值送到地址总线PAB上,然后将程序存储器中的指令读入DSP,在读指令的同时,程序计数器Pc的值将被增加,为下一次从程序存储器中读数据作准备。从程序存储器中读取的指令将被送到指令寄存器球中去。在Harvard总线结构的CPU中,程序存储器和数据存储器之间是不能直接交换数据的。但是为了增强某些指令的性能,例如FIRS、MACD和MACP等指令,在MS320C54xDSP中采用了改进的Harvard总线结构,使得CPU可以在程序存储器中读写数据,并且可以在数据存储器和程序存储器中传送数据。C54x中的程序计数器Pc值的变化将控制整个程序的执行流程,在正常情况下,程序依次执行程序存储器中的指令时,Pc指针是依次递增的,当程序运行中出现了以下情况时,PC中的值将被更新:跳转指令;子程序调用语令;子程序返回指令;条件操作;重复执行一条指令或重复执行一个包含若于条指令的程序段:发生了硬件复位;发生了中断。C54x中的PC寄存器是16位的寄存器,在顺序执行指令时,PC的值是加1。但是当发生了硬件复位时,PC的值被设置成FF80h。当程序出现跳转时,Pc的值会被指令中所指定的地址值更新,或是放累加器中的值所更新(累加器跳转指令)。在执行块重复指令时,若当前的指令是块中的最后一条指令时,即当PC+I的值与块结束地址寄存器取A的值加1相等时,PC的值将被更新成块起始地址寄存器RSA的值。对于子程序调用,当调用指令的长度为两个字的长度时,PC+2的值(指向调用语句的下一条指令)被压人堆栈,PC的值被设置成调用语句所指定的地址。当程序从于程序返回时,Pc的值从堆栈中恢复,从调用于程序点的下一条指令位置继续执行程序。若子程序调用的指令长度为单字长,例如,根据累加器值跳转的指令,则是PC+I的值被压人堆栈,而PC中的值是被累加器A或累加器B中的值更新。当发生了中断时,程序的PC的当前值被压人堆栈,PC的值被设置成相应的中断向量值,当程序从中断服务程序返回后,返回指令将堆栈顶部的PC值弹回到PC寄存器中,使得程序在原来发生中断的地点继续执行。C54x在复位时执行如下操作:【1】PTR被设置成IFFh(21PMST中的MP/MC位被设置成与MP/MC管腿相同的状态【3】PC的值被设定成FFS0h【41XPC寄存器被清零(C584)【5】无论MP/MC状态如何,地址总线均被驱动为FF80hf6J数据总线内进人高阻态60 一一堕窒三些兰堕堡主兰篁丝兰:—一[7】所有控制线均处于无效状态【8】产生IACK信号【9】INTM位设置成1,禁止所有的中断【101IFR寄存器被清零【11】指令重复计数器RC被清零【121产生同步复位(SRESET)信号用于初始化外围设备在复位后若肠P,五苑:0,C54x将从片内ROM中执行程序,否则C54x将从片外程序存储器开始执行程序。5.2TMS320C54x的仿真开发系统DSP芯片功能的开发都离不开相应的开发工具,也就是仿真开发系统。仿真开发系统的功能是将用C或汇编语言编写的源程序进行编译、链接,生成可执行代码。然后,通过对程序运行过程的跟踪、运行结果的观察进行调试,查找并修改程序思路的逻辑错误,最后达到程序设计目标。’C54x仿真开发系统由代码生成工具和代码调试工具两部分组成。代码生成部分对源程序进行缩泽、链接,生成可执行代码。代码调试部分用C/汇编源代码调试器、软件仿真器(Simulator)、标准评估模块0EVM)、仿真器(XDS)、初学者套件(DSK)等,对程序代码进行调试,即程序的仿真验证。’C54x仿真开发系统各部分功能如下:①C编译器(Ccompiler)将C源程序代码自动编译为汇编语言源代码,C编译器与ANSI标准完全兼容,具有ANSI标准运行支持库,可将目标代码文件直接放人ROM中使用。②汇编器(assembler)将汇编语言源文件转换成为基于公用目标文件格式(COFF)的机器语言目标文件。③链接器(1inker)将目标文件连接起来产生一个可执行模块。④归档器(archiver)将一组文件归入一个归档文件,也叫归档库。⑤运行支持库公用程序(runtime.suppoitutility)建立用户的c语言运行支持库。标准运行支持函数在Its.src里提供源代码,在ItS.1ib里提供目标代码。运行.支持库(runtime—supportlibary)包含ANSI标准运行支持函数、编译器公用程序函数、浮点运算函数和被’C54x编译器支持的C输入/{禽出函数。代码格式转换器将链接器产生的.out文件(COFF文件格式)转换为其他文件格式,使转化文件能够装载在可擦除程序存储器里。⑥c舛[编源代码调试器是一个应用软件平台,包括程序仿真、评估模块、仿真器的标准接口,可以完全跟踪、显示用C或汇编语言编写的程序运行结果,支持对C和汇编的混合编程的调试。⑦软件仿真器(simulator)是一种模拟芯片各种功能并在非实时条件下进行仿真程序调试的软件,不需要目标硬件的支持。通过软件仿真’C54x微处理器和微计算机模式功能,对用户开发的程序进行仿真验证。⑧标准评估模块(EV/V1)是一种廉价的开发板,板上配有~定数量的硬件资源,可以用来进行芯片的性能评估、标准程序的检查、有限的系统调试。它是一套PC插件,包括目标处理器、一个小容量存储器和有限的外设。⑨扩展开发系统(XDS)是功能强大的全速仿真器,用作系统级的集成与 调试。主要包括两种类型的仿真器:一是电路仿真器,对用户板进行硬件仿真,仿真器电缆插头必须插入到用户硬件电路中芯片的相应位置上;二是扫描仿真器,是一种非插入式的系统仿真、集成调试接口。使用这种接口,可以从片外或片内的目标存储器实时执行程序,在任何时钟速度下都不会引入额外的等待状态。XD5510仿真器具有功能强大的指令集.可以调试c程序、汇编程序,或两者混合编程。⑩初学者套件∞SK)’54xDSK(DSPStartKit)是n公司为TMS320C54x的初学者设计的一种开发工具。用户可以在Windows平台下使用DSK来作硬件设计参考和软件开发调试实验。5.2.1DSK介绍’C54xDSK是H公司提供的一套独立的’C54x开发和实验平台。它集成了一些基本应用电路,既可以帮助用户评估和开发’C54x系列DSP的功能,也可以作为’C54x初学者的学习工具,可以用DSK作DSP实验,与之相配有大量的数表、逻辑表达式和应用数据库,使得DSP的硬件开发变得更加快捷方便。DSK软件平台支持的硬件如下:(1)主频100MHz的TMS320VC5402芯片。(2)存储器:64K或128K字节,16位的SDRAM和256K字节、16位FLASHROM。(3)T1SN74ACT8990JTAGTBC:仿真器或并行接口芯片。(4)DAA和T/TLC320AD50C:电话网络接口芯片和两片AD/DA转换芯片。(5)RS一232UART:RS.232异步数据通信接口芯片。(6)麦克风和扬声器用于模拟信号I/O的连接、指示灯、功能设置开关和串并口各一个。(7)扩展板插槽两个。DSK是一块独立的、与PC机相连的应用板,需要+5V电源供电。板上的线性电压调整器提供1.8V的DSP内核电压、3.3V的数字电压和5V的模拟电压。并且提供了内含IEEE1149.I(,/TAG)标淮的仿真接口,与集成开发软件CCS的程序调试器兼容。同时,支持外部XD5510仿真器。DSK有64K字节16位的SDRAM、256K字节16位的FLASHROM和16位外部扩展存储器接口,允许用户增加异步存储器。模拟网络接口芯片DAA和一片AD50AIC,可以使DSK通过一个双通道串行缓冲端口,在软件的控制下应答标准的电话信号。板上的8个位置开关供用户选择使用功能。一个按钮开关允许用手动重新启动DSK,四个指示灯中一个是电源指示灯,其余三个是用户控制输出指示灯。!一.2.2集成开发环境CCSCCS(CodeComposerStudio)TI公司的DSP集成开发环境。CCS提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在纯软件环境下完成编辑、编译链接、调试和数据分析等工作。CCS一般工作在两种模式,即软件仿真器和硬件在线编程。前者可以脱离DSP芯片,在Pc机上模拟DSP的指令集与工作机制,主要用于前期算法实现和调试。后者进行实时在线编制和调试应用程序。CCS针对不同系列的DSP芯片有一些差别。用户需要在CCS配置程序中设定DSP的类型和开发平台类型。a.系统配置要求 塑童三些耋堕堡圭兰丝笙苎一—一=#===g========E==≈=;=#====;=;=;=j===≈====;==——‘;—————————一——(1)计算机类型:IBMPC及兼容机;f2)操作系统:MicrosoftWindows95/9812000或WindoWsNT4.O;(3)计算机配鼍要求:Pentium以上CPU、32MB内存、looMB剩余硬盘空间、SVGA800×600显示分辨率。b.CCS应用开发步骤利用CCS集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节。使用CCS开发应用程序的一般步骤为:(I)打开或创建一个工程文件(project)。工程文件中包括源程序(C或汇编)、目标文件、库文件、连接命令文件和包含文件。(2)编辑各类文件。如头文件(.h文件),命令文件(.cmd文件)和源程序(.c,。aS///文件)等。可以使用一般的编辑软件或CCS集成编辑环境进行各类文件编辑。(3)对工程文件进行编译。如果有语法错误,将在构建(Build)窗口中显示出来。用户可以根据显示的信息定位错误位置更改错误。(4)修改程序的语法错误后,用户可以对计算结果/输出数据进行分析,评估算法性能。CCS提供了探针、图形显示、性能测试等工具来分析数据、评估性能。C.程序调试CCS提供了非常丰富的调试手段。CCS具备四种单步执行手段,用户可以对内存单元、寄存器进行查看,并且可以编辑、载~输出数据、设置探针。~般的调试步骤为:调入构建好的可执行程序,先在有关的程序段设置断点,然后执行程序停留在断点处,查看寄存器的值或内存单元的值,对中间数据进行在线(或输出汾析。反复这个过程直到程序完成预期的功能。c1)载人可执行程序命令File-一LoadProgram载入编译链接好的可执行程序。用户也可以修改“ProgramLoad”属性,使得在构建工程后自动装入可执行程序。设置方法为选择命令Options--+ProgramLoad。(2)使用反汇编工具在某些时候(例如调试C语言关键代码),用户可能需要深入到汇编指令一级。此时可以利用CCS的反汇编工具,用户的执行程序(不论是c程序还是汇编程序)载人到目标板或仿真器时,CCS调试器自动打开一个反汇编窗口。对每一条可反汇编的语句,反汇编窗口都显示对应的反汇编指令(某些C语句一条可能对应几条反汇编指令)、语句所处地址和操作码(即二进制机器指令)。当前程序指针PC(ProgramPoint)所在语句用彩色高亮表示。当源程序是C代码时,用户可以选择使用混合C源程序(c源代码和反汇编指令显示在同一窗口)或汇编代码(只有反汇编指令)模式显示。除在反汇编窗口中可以显示反汇编代码外,CCS还允许用户在调试窗口中混合显示c和汇编语句。用户可以选择命令View---MixedSource/Asm,则在其前面出现一对选中标志。选择DebugGoMain,调试器开始执行程序并停留在main()处,C源程序显示在编辑窗口中,与C语句对应的汇编代码以暗色显示在C语句下面。{3)程序执行控制在调试程序时,经常会用到复位、执行、单步执行等命令。下面依次介绍CCS的目标板(包括仿真器)复位、执行和单步操作。CCS提供复位目标板的方法: 壁耋三些兰堕堡圭兰堡堕圣一———ResetDSP:Debug----,Reset命令初始化所有的寄存器内容,并暂停运行中的程序。如果目标板不响应命令,并且用户正在使用一基于核的设备驱动,则DSP核可能被破坏,用户需要重新装入核代码。对仿真器,CCS复位所有寄存器到其上电状态。Restart:Debug---Restart命令将PC恢复到当前载入程序的入口地址。此命令不执行当前程序。GoMain:Debug—GoMain命令在主程序人口处设置一临时断点,然后开始执行。当程序被暂停或遇到一个断点时,临时断点被删除。此命令提供了一种快速方法来运行用户应用程序。CCS提供了4种程序执行命令:Debug—÷Run或单击调试工具条上的“执行程序”按钮,发出执行程序命令,程序运行直到遇见断点为止。Debug---+Halt或单击调试工具条上的“暂停执行”按钮,发出暂停执行命令。Debug--,Animate或单击调试工具条上的“动画执行”按钮,发出动画执行命。Debug-*RunFree,发出全速执行命令。此命令禁止所有断点,包括探针断点和Profile断点。在全速运行中对目标处理器的任何访问都将恢复断点。若用户在基于JTAG设备上使用模拟时,此命令将断开与目标处理器的连接,用户可以拆卸JTAG或MPSD电缆。在全速运行状态下,也可以对目标处理器进行硬件复位。注意,在仿真器中RunFree无效。CCS提供的单步执行命令:单步执行操作有4种类型,它们在调试工具条上分别有对应的快捷按钮。单步进入:当调试语句不是最基本的汇编指令时,此操作将进入语句内部(如子程序或软件中断)调试。单步执行:此命令将函数或子程序当作一条语句执行,不进入其内部调试。单步跳出:此命令将从子程序中跳出。执行到当前光标处:此命令使程序运行到光标所在的语句处。5.2.3用户软件开发利用CCS可以在软件环境下一次性完成编辑、编译、调试和数据分析等工作。充分利用CCS所提供的功能,可以帮助用户高效地开发DSP应用系统。a.用户软件开发步骤利用CCS开发用户软件的开发步骤如下:(1)软件设计,主要进行程序模块划分、算法和流程确定、预测执行结果。(2)程序编辑和编译,主要创建工程文件,编写头文件、配置文件和源程序,使用汇编和c编译器进行编译,排除语法、变量定义等错误。(3】程序调试,利用单步执行、断点、探针等手段调试程序。f4)输出结果分析,利用CCS提供的工具分析DSP程序的运行结果,如图形显示数据或统计运行时间等。若算法不能满足要求,则重新进行软件设计。b.用户硬件调试利用DSK进行应用系统开发时,用户系统的硬件调试步骤如下:(1)连接DSK开发板,关闭PC电源,将打印机电缆与PC机并口和DSK开发板连接好,然后将电源适配器上的电缆连接到DSK开发板上的电源连接器卜,打开PC电.源。 (2)启动集成开发软件,假设已正确安装好了软、硬件,用鼠标单击图标“CCStudio。”将会出现调试界面,进行第4步操作。如果出错应检查硬件连接,并运行自测试程序。(3)检查并口初始化,运行自测试程序。首先在Windows中单击开始一程序C5402DevelopmentTools,ResetParallelPort,窗口能自动终止。进入MS-DOS状态,在ti、c5400\dsk\utilities目录下运行EVMDSKTEST2命令,启动自测试程序,帮助检查出错原因,程序将对并口、DSK板接口逻辑、C54xHPI、C54xDSP等进行多项测试,并显示检测结果,若出现错误测试会自动停止。仔细阅读结果显示的出错信息,修正错误。自测试程序在检测中造成错误的原因是多方面的,比如,在Windows95下,若并El为Windows所使用,DSK软件就不能运行,必须修改配置,使其不被占用。常见的错误是使用了基于DOS程序配置的打印机,占用了并口无法访问DSK应用程序。(4)DSK实时处理和应用软件的加载。DSK可以用作实时信号处理,也能够把用户创建的软件加载到板上运行。由于在DSK板上已将DSP芯片的地址和数据总线引出设置扩展插槽,便于用户对DSK板进行存储器等硬件资源的扩充,创建新的板子,在DSK硬件的基础上形成用户独立的DSP系统。用户硬件调试是在Windows平台上进行。调试前把工程构建后所产生的可执行文件(.out)j/ll载到DSP存储器中,然后进行运行调试。在调试界面上包括四个默认窗口:反汇编、CPU寄存器、外部寄存器、外部寄存器和数据寄存器窗口。反汇编窗口显示DSP代码和地址分布;界面支持符号级调试,用户可以无须知道物理地址,通过汇编名或标号查阅代码和代码变量的位置;在调试过程中可以通过运行程序或单步执行,单击指令设置断点,观察和修改寄存器中的内容,查看或修改数据存储器窗口,检查变量和缓冲区中的数值。设置探针连接程序外部数据文件,使数据可以输入到代码和从代码输出到文件中。通过动态显示缓冲区观察时域或频域数据图形。以上简要描述了TMS320C54x的软件开发调试方法,对TMS320C54x开发系统的基本功能和使用方法作了阐述。熟练运用开发工具有助于加快TMS320C54x的开发速度,提高程序开发效率。 !茎重呈竺竺皇:!!!重童丝堡塞鎏篓塾——6基于DsP的G.729语音编码算法实现6.1硬件设计在算法的实现过程中,我们采用了TI公司的TMS320C5402DSK板为硬件平台及CCS集成开发环境。6.1.1系统结构基于DSP的算法实现的核心是DSP芯片,该系统的结构框图如图6-1。图6-1系统结构框图系统主要由TMS320C5402、模数转换器及Flash和双口RAM等构成。图中,A/D和D/A完成语音信号的模数和数模转换功能。Flash用于存放程序和已初始化数据,双口RAM用于与外部交换语音压缩数据。以TMS320C5402为核心的DSK板通过JTAG接口与PC机相连,由PC机通过CCS集成开发环境进行调试。最终的运行程序写入Flash中。DSK板的两个串行口分别接A/D和D/A。系统正常运行时,语音信号由麦克风输入,经A/D变换为数字信号,这时信号为数字化的原始语音信号,之后数字语音信号通过串行口0进入TM$320C5402编码器部分对语音信号进行编码,编码后输出为比特流,然后进入解码模块的解码器进行解码后,输出重建语音信号,进入解码缓冲区,最后 堕耋三些兰堕堡圭兰堡篁壅—一经串行口1送至D/A变换器,形成语音后由耳机输出。系统工作过程如下:系统加电TMS320C5402复位后,由其内部固化的自引导程序(BooT)将存于Hash的程序和数据搬移至内部RAM,然后TMS320C5402开始运行语音编码算法。DSP每10ms运行一次编解码算法,并与双口RAM交换一次数据。一方面TMS320C5402将语音压缩后得到的数据写入双口RAM,由外部系统读出并送至信道。另一方面,外部系统将对方的编码数据送到双口RAM,由TMS320C5402从双口RAM中读出并还原为合成语音。由于TMS320C5402的运算速度足以在10ms内完成语音的压缩和解压缩算法,因此,系统可以按全双工方式工作。6.1.2DSP芯片的选择设计和开发DSP应用系统,选择DSP芯片是一个非常重要的环节,不同的应用系统由于应用的场合、目的不尽相同,对DSP芯片的选择也不同。选择芯片时,一般主要考虑以下几个因素:(1)DSP芯片的运算速度(处理能力)C5402的指令周期为10ns,其运算速度最快为100MIPS。(2)DSP芯片的价格C5402的价格便宜,大约为几美元。(3)DSP芯片的硬件资源C5402的总存储空间为192K字,分成3个可选择的存储空间:64K字的程序存储空间,64K字的数据存储空间和64K字的I/0空间。(4)DSP芯片的运算精度整个程序中的运算和存储以16位为主,但由于在一些模块中运算精度对对最终结果会产生较大影响,所以在综合考虑运算量、存储量和精度要求的基础上,对某些中间过程采用了32位双字运算甚至仿浮点运算(对数据的指数和尾数分别进行运算和存储)。对此,C5402也能满足。经过比较,并结合实际情况,本文选择16bits定点DSPTMS320C5402作为处理器单元。i.2软件设计G.729A语音编解码算法的软件设计在其编解码系统中是最重要的一个环节,其编解码程序的流程图如下文所述。.j.2.1程序流程实时实现时,编码主程序的流程如图6—2所示,解码主程序的流程如图6—3听示。从图6—2中可以看到首先对输入语音进行预处理,再对每个子帧独立进行线性预测(LP)分析以获得LP滤波器系数,LP系数转换成线谱对(LSP)后经两级矢最量化。为了提高量化感知质量,预处理后的语音信号通过共振峰感知加权滤波器以生成初始目标信号,感知加权滤波器的系数由量化的LP系数构成(由 一堕窒三些兰堕堡圭兰堡垒圣——=#========I=====g=====================;—————————一图6-2编码主程乎流程图LP滤波器获得)。同时进行开环基音搜索,对第一子帧进行开环基音周期估计。计算加权合成滤波器冲激响应,为基音搜索生成目标矢量。之后,对每个子帧进行闭环基音分析,在开环基音附近搜索自适应码本的基音延迟和增益,然后计算残差信号,搜索固定码本,最后对自适应码本增益和固定码本增益用二级共轭码本(ACELP)进行矢量量化。每一子帧在完成上述所有计算,继续进行下一子帧计算之前的最后一项工作是更新存储器值,供下一子帧计算零输入响应。从图6—3中可以看到,G.729A解码器从接收到的码流中恢复出每帧的参数fLSP系数),两个子帧的分数基音延迟、固定码本矢量及自适应和固定码本增益)。LSP系数经插值后转换成两个子帧各自的LP滤波器系数。然后对每个子帧进行分析,若不是坏帧,再进行基音延时解码,代数码本解码,增益解码和 亘塞三些兰堕堡主兰堡垒圣—一=========目=======#======;=================;。———————一图6-3解码器程序实现流程图激励搜索。对每一个子帧,首先搜索自适应码本,计算自适应码本矢量,然后对固定码本参数进行解码,再对基音和码本增益进行解码。最后,每一个子帧的自适应码本矢量和算术码本矢量分别经增益加权相加后组成的激励信号通过LP合成滤波器生成合成语音。若发现是坏帧,则由随机数代替码本索引进行解码。生成的合成语音最后经自适应后滤波,改善合成话音质量后输出。6.2.2程序优化为了既提高程序效率,又提高编程效率,在编写整个系统软件时可以采用三种不同方法,有些程序模块直接用汇编编写,有些程序模块直接用c编写,而有些程序模块则用c和汇编的混合语言编写。根据G729A算法实现的要求和内容,可以用c语言编写出算法实现程序,利用该C程序可以检验算法的执行,但运行时间较长。要想快速而精练地实现G729A的编解码过程,依靠c程序代码显然是远远满足不了需要,因此必须采用C54高效的汇编指令来对源程序作大范围的改造和优化。为了减少算法程序的运行时间,可以用汇编语言编写部分程序,并且对程序进行优化。编写汇编语言程序时,首先可以将c程序用C编译器进行编译,得N<-编程序,然后在该汇编程序的基础上,保留人口和出121部分,将核心部分进行手工编写,这样可以避免入121和出121参数传递发生错误。当然,采用这种方法时,首先必须十分清楚参数的传递方法,否则,一旦发生错误将无从下手。·应用特殊指令(1)重复指令RPT、RPTZ和RPTBTMS320C54xDSP具有重复执行单条指令和重复执行一段包含若干条指令的程序块的能力。RPT和RPTZ指令就是用来重复执行单条指令用的。当单条指令被重复执行时,除了复位(RESET)中断之外,在重复指令执行完之前所有的中断将 一一塑耋三些耋堕堡圭童堡篁圣:=一=#==☆==《=;《===∞==#∞=Ⅸ={2≈j=女#29#2#≈=2≈#2—5—————————————一一菠禁止。一罄藏米荤独执行#亏需鬟多令瘸期才能完戏躲接令,在与重笈踅令配令疆瘸时,在执行完第一次循环后,余下的循环在每次执行时只露单食周期。这些指令有:FIRS、MACD、MACP、MVDK、MVDM、MVDP、MVKD、iffvmD、MVPD、READA和,承ITA等。RPT和RPTZ指令可以侵下一条多周期稽令变为单周期指令,可以大大挺高程痔运行这凄。tiPTB积RPTBD撂令利用C54x提供的块缀环机制,能够方便解决块的循环阅题,P、PTB和RPTBD指令是用来循环执行包含若干条指令的程序块。C54x中的块重复寄存器BRC中盼鹰N,表示稷序块将瑟被执行N+1次,块重笈起始地址寄存器RSA簿子存敷程亭获黪趁始毙继,裟重复结束绝址寄存器REA掰于存放程序头绩裘地戢。嚣要注意媳是块重复指令不能蔹嵌套使用,另夕}褒执行块筵复执行过程中,C54x可以响应中断。(2jEXP指令EXP指令是专fj钟对搓数缩礴嚣进行操{菖§§一条搭令,在以往静蚤sP中蠹予没有指数编码器,为了计算数值,往缝需要进芎亏缀环移位判敷,使碍执行效率a}常低下。而IMS320C54xCPU中的指数编码器就是为了支持指数计算指令EXP而专门设计的硬件电路,有了指数编码器这个专厨硬件,程序中只要髑一条EXP指令虢可以{t算氆累秘器中数据豹指数大,l、来。这个指数髓谈定义为累船器中多余的捋号位的个数减去8{由予保护位有8位)蜃嚣褥裂的艇。这个摆数篮结果是存放于,?REG中,值的范围是在一8到+3l之间。这样我们就可以利用EXP指令乖ⅡNOP4M指令快速地遗行数值的归一f£操作。它的使用如下:EXPA;疆T,@EXP;NORMA:在以上应用中第一条指令对累加器A中的值进行指数计算,第二条指令是将TREG中瀚箧存入名为EXP的存储荜元中,第三条指令剐根据TREG中静值对累加器A中的值进行归一他操作。在我们所呆煺的C54定点DSP实瑗G.729葬法中会用到非常多的归~化操作,因此利用这一特殊指令大大缩短了代码执彳亍fI亍问。{3}CMPS指令LMS320C54xCPU中魈}E较、选挺及存髓单元(CSSU)是专f1为热,毙较聪撵的操作而专门设计的硬件单元,它支持蝶形算法。在蝶形算法中为了选择路径,需要}£较两个结点之问的距离。在CSSU中这两个距离是16位值,存储在一个繁船嚣豹低16位稀裔16位中,我们利羯CMPS指令就可以对存储寇累加器中赡这两个16短值进行毖较,劳选择出较大约~个数餐存人指令黪指寇豹存姥单,i中。在CMPS指令执行的同时,状态转移寄存器TRN会左穆1位,并在左移后空fij的最低位上自动记录下当前比较的结果。在泽码的算法中我们可以利用寄存器TRN寒器瀚最统的路径。。我稻可戳看&,淹予这稀硬件设计上的支持,TMS320C54x更适合予在逶僖鲠域申凌熙。(4)姻舍汪入的功能TMS320C54xCPU中的乘,累加器里的知法器包含了零值检测、溢出饱和控搿等功琵,其中还有一顼{蘸关键静凌筏,郑霞舍五入功能,它在定点算法当中起嚣{#常重要的作照,它可以通过一姥转然攒令的使鼹极大楚讫运算,扶瑟掇离运行效率。在C54x中,在一些乘法及乘/累加(MAC)、乘/相减(MAS)指令的后面加j:后缀两【R耐.这种晒舍五人的功能就可以执行。LMS指令在更新系数时也执 堕童三些兰堕堡圭兰堡丝苎一:—一行四舍五人功能来减少量化误差。利用这些指令可以使四舍五入运算变得非常简便而快速,它是通过先往累加器加上一个215的数后再将累加器的低16位清零,只保留高16位来实现的。·特定寻址方式的使用(1)位码倒序寻址在FFT等快速算法中经常要用到位码倒序寻址,间接寻址中有两种模式就是专为此设计的,方法如下:}ARx—OB;addr=ARx,ARx=B(m£x—ARO);在寻址结束后,采用倒序进位减法将A冠碱去艘0的值{ARx+OB;addr=ARx,ARx=曰(A鼢+A日O);在寻址结束后,采用倒序进位加法将Am加上根0的值在作倒序寻址时,辅助寄存器AR0中的值与指定的辅助寄存器ARx作倒序相加或相减,这种倒序加法和减法所产生的进位是自左向右进位的(普通的加减法的进位是自右向左进位的)。在作2”点的FFT倒序寻址时,若设置AR0中的值为2“1,则依照以上执行模式的寻址操作就会产生所需的倒序地址。通过这种寻址方式节省了大量的时钟周期,而使算法的效率得以提高。(2)循环寻址循环寻址方法在G729A程序的许多算法中都要使用到,例如在计算卷积、相关、FIR滤波算法时均需要在存储器中设置缓冲区,保存最新一批数据。循环寻址过程中,不断有新的数据覆盖旧的数据,从而实现循环缓冲区寻址。循环缓冲区的长度存放于BK寄存器,注意,长度为R的缓冲区必须从N位地址的边界开始,即循环缓冲区基地址的N个最低有效位必须为0,N是满足2“>R的最小整数。例如:若缓冲区的大小R为31,则N=5,BK寄存器中的值为3l,其起始地址必须是:二进制地址XXXXXXXXXXX00000。若缓冲区的大小为32,则满足2”>R的最小整数为N=6,BK寄存器中的值为32,其起始地址必须是:XXXXXXXXXX000000。以上这一要求很重要,C54在生成循环地址时直接取指定的辅助寄存器ARx的低N位作为缓冲区的偏移量进行指令所规定的寻址操作,在完成循环寻址操作后,这个N位的偏移量会根据不同的指令而作相应的修改后再送回辅助寄存器ARx的低N位。这个偏移量的修改算法如下:ifO≤index十step≤BK;index=index+step。elseifindex+step/>BK;index=index+step—BK.elseifindex+step<~0;index=index+step+BK.庄上式中的index为N位的偏移量,step为修改地址时的步长,BK为循环缓冲区的大小。BK的值可以为0,此时C54实际上就不执行循环地址的修改算法, 亘童三些兰堕堡圭兰堡丝苎==;===_##==s==∞g====;========;====;===;========_———————————一——其效果与普通的间接寻址一样。综上所述,在执行循环寻址的操作时要注意以下三点:①循环缓冲区的起始地址必须处于2”的边界上。N是满足2“>R的最小整数;②步长step要小于或等于循环缓冲区的大小BK;③使用时,指定的辅助寄存器ARx要被初始化,使其指向循环缓冲区中的某个单元。(3)存储器映象寄存器寻址方式在存储器映象寄存器寻址方式下,数据页指针(DP)或堆栈指针(sP)不会被改变,而在这种模式下向寄存器写操作的开销是N/J,N。对这种存储器映象的寄存器寻址操作也可以有直接寻址和间接寻址两种操作。在进行直接寻址时,数据存储器地址的高9位被设置成0,利用指令中的低7位地址直接访问MMR。在进行间接寻址时,数据存储器地址的高9位被设置成0,按照当前辅助寄存器中的低7位地址直接访问^伽R。此种方式访问MMR,寻址操作完成后,辅助寄存器的高9位会被强迫置O。我们可以利用以下指令来进行存储器映象寄存器寻址:LDMMMR,dst;MVDMdmad,MMR;MVMMMMRx,MMRy;MVMD,MMR,dread;POPMMMR;PSHMMMR;STLMsrc,MMR;STM#1k,MMMR·其他优化应用(1)延迟跳转优化对于所有引起指令跳转的指令来说,无论是分支跳转指令、子程序调用指令还是子程序返回指令,都有正常的程序跳转和延迟程序跳转两种情况供选择。这是由于C54xDSP中对指令的读取、译码和执行操作采用了流水线并行操作的缘故,从准备读指令到指令被译码,需要两个时钟周期。所以当跳转指令被执行时,此指令后的两个单字长指令或一个双字长的指令已被读入流水线,若采用有延迟的程序跳转则这两个单字长指令或一个双字长的指令被执行后再从指令指定的地址开始执行。若采用无延迟的程序跳转则直接从指令指定的地址开始执行,已被读入的两个单字长指令或一个双字长指令将被从流水线中清除而不被执行。因此合理地提前安排好有延迟跳转指令的位置,可以避免流水线的连续性被打断,从而能够提高程序效率。例如:一wait:幻叩:LDM{AR4,RO;RO=4p(AR4分配给p)TSTB128,R0;测试+P&0xS0BZLoop;假:跳转BDLoop;真:延迟跳转 翼童三些兰堕堡圭兰堡堕苎:——LDM}AR4,RO:RO=4pOROFOH,RO;R0=4pIOxFOSTMR0,*AR4;。P;RO13Loop;跳转本例中在循环最后的无条件跳转用延迟跳转代替,使之得以在一个指令周期内完成。(2)高效使用寄存器充分使用寄存器存储变量、参数和临界值,可以使汇编程序的效率得以提高。循环体内的变量优先级高,我们可以把不重叠的变量分配给同一个寄存器,具有特定要求的变量可以固定分配到寄存器。另外,DSP芯片内部的运算单元运行效率非常高,但如果寄存器和数据总线之间的数据交换频繁,将使DSP的执行效率大打折扣。因为DSP在进行内存操作时,往往需要若干周期的延迟,为了减少耗时的内存操作,可以在程序进入循环体之前,将要频繁使用的数据预先放入寄存器,然后反复调用,这种方法也可以提高一部分效率。(3)循环体展开及循环体重复充分利用DSP的字长和数目众多的运算单元,尽量把循环体展开。通过增加每次循环中的指令数来减少总的循环次数,可使得在同样的时钟周期内能运行更多的指令,提高了循环的效率。当一个循环体较短且循环次数较少时,可以将循环体重复以避免循环操作,这也就避免了任何跳转或使用重复寄存器。(4)充分使用块重复、自动增量寻址、并行指令等下例中充分使用了DSP提供的资源,包括单指令重复、自动增量寻址、并行指令等方法,从而得到了效率比较高的汇编代码。LDL9MPTsRPTSTF㈨P、S71@Xin+0.AR0@』拥+1.A品lR4.$ARl++.R06RO.$A尺0++R4.$A尺1+十.RO尺0.}AR4++;ARO=@a(OJ;ARl=@b(O);计算第一个乘积’;存储乘积;并计算下一次乘法;存储最后一个乘积(5j使用内在函数(/nwinsic)内在函数是在某些DSP的汇编指令前加上“一”构成,它可以方便地实现某些需若干c语句才能实现的功能。它是一种非常简便高效的优化方法,它的调用格式和普通C函数一样,但在编译时编译器会自动将Intrinsic用对应的汇编指令替代。DSP指令集中绝大多数的运算逻辑指令都可以这样使用,比如饱和绝对衄、饱和加、饱和减、饱和乘等。用Intrinsic替代原先的C代码,运算量可以得到F降。(6)省略不必要的溢出检查在rru所提供的G.729定点C语言程序中,几乎每次运算之后都要检查一 堕窒三些兰堕堡主兰堡堡塞一下结果是否溢出。虽然每次溢出检查所用指令数不多,但由于使用得极其频繁,它所带来的运算量也是很惊人的。通过对数据范围的估算,对于那部分肯定不会溢出的运算即使省去对它们的溢出检查,也不会影响运算的精度。优化过程是一个在实践应用中充分利用DSP提供的各种资源不断对程序代码精简完善的过程,这就要求开发人员精通DSP芯片的结构特点、指令系统以及它的各项规则,并需要在实践中不断摸索总结,积累经验。5.3算法实时实现在C5402DSK的开发环境下,应用CCS(CodeComposerStudio)集成开发软件实现G.729A算法的实时仿真,为订的TMS320系列而设计的CCS是一个高度集成的开发环境。首先,根据C5402DSK的资源状况,将DSP设置于微处理器模式(即使用片外程序存储器),ov/y位置为1,编写该程序相应的*.cmd文件(链接命令文件)如下,该文件包含链接操作选项并为所链接的相关文件命名。MEMORYfPAGE0:EPROG:origin=Ox4000./en=Oxb000PAGE1:[^SERR阳S:origin=0x60.1en=Ox20IDATA:origin=0x80.1en=0x3f80、SECTION{.text:()>EPROGPAGE0.cinit:{)>EPROGPAGE0.conM:(】>IDATAPAGEl.switch:fJ>IDATAPAGEl.stack:{)>IDATAPAGEl.sysmem:(J>肛)A狲PAGEl占Js:f)>IDATAPAGEl)第二,在CCS环境下分别建立相应的Project工程文件,即encoder.mak和decoder.mak,分别添加有关的子程序和链接文件到对应的工程文件中。第三,在C5402DSK为基础的CCS环境下,分别对G.729A编码算法和解码算法进行实时仿真。图64是语音信号编码的工程文件图片。74 冀童三些耋堕翼圭塞堡垒茎墅64编玛工程文件由于时间关系,本研究离最终实现程序在TMS320C54x上实时运行的目标滏毒一定距离。 7结论随着语音通信和各种语音产品的广泛普及,语音信号的数字化处理在越来越多的领域中发挥着巨大的作用,越来越多的应用领域对数据压缩技术提出了实际需求。另一方面,随着现代电子技术标准化算法的制定与公布,数据压缩技术己从经典信息论中的信源编码理论和通用计算机中的软件模拟方案,固化为一系列功能强大的硬件系统,而今DSP芯片已是当今的技术发展趋势。DSP芯片正在通信与通信系统、雷达、航天航空、医疗、家用电器等诸多领域得到广泛的应用。语音编码技术中,低速数字语音编码具有重大的实用价值。速率低可获得较高的比特可靠性,并且降低了语音存储转发系统的存储要求。经过近半个世纪的努力,特别是最近二十年的广泛、深入的研究,语音编码技术己日趋完善,各个应用领域的高质量语音的标准纷纷制定。但在更低速率下的低时延高质量语音编码算法仍然是个挑战。今后的研究焦点还将集中在4kb/s速率以下的高质量语音编码算法。G.729作为较新推出的一种低速数字语音编码技术同样具有广阔的应用前景,它采用8kbit/s编码标准,CS—ACELP算法,MOS分为4.0,其音质在同档码速率中是最优的,它在个人通信、数字卫星通信以及Ip语音通信等方面都具有很高的实用价值。G.729A是CS—ACELP算法的一个简化版本,复杂度较G.729有大幅度的降低,但音质也略有下降。它的基本原理和算法结构与G.729完全相同,c源程序的绝大多数代码也相同。由于G.729与G.729A有相同的比特流格式,因而两者可以互相兼容,即G.729编码产生的比特流可以用G.729A来解码,反过来也一样。不过在某些运行条件下,其性能也略有降低。较低的复杂度,使得G.729A便于和MODEM以及回声抑制等功能集中在一块DSP芯片上实现。声音和数据同步传输(DSVD)在多媒体通信中非常普遍,很明显G.729A就是为此而设计的。本文在对G.729协议认真研究的基础上把它移植到了MS320C54xDSP上进行了,实用化探索,通过对这一课题的研究使我对低速语音通信有了深入的知识积累,对标准协议在实际中的开发应用也有了切身的体会,取得了许多宝贵的经验,这给我今后的继续学习和研究工作打下了良好的基础。下一步工作我的设想是进一步合理利用系统资源,提高使用效率,实现程序源代码的完全汇编化,对函数结构算法代码进一步精简,特别是对一些耗时可观且应用频繁的基本操作着重进行处理,尽可能逼近最优化算法,以保证算法的实时实现。76 致谢在此我谨向本论文完成过程中给予我各种帮助和支持的所有老师和同学表达我最诚挚的谢意!衷心感谢我的导师齐华副教授。齐老师严谨的治学态度、深厚的理论基础、以及和蔼可亲的风度令人难忘。特别要提到的是从论文工作的选题一直到最后的定稿齐老师都给我以悉心的指导,在此我谨致以由衷的感谢。在此还要深深感谢我的各位同学,他们是张峰、林雁、毛俊、赵玲等,他们在平时的学习和工作中给予我许多的帮助,让我切实体会到工作中和睦欢快的气氛,感受到真挚的友情,留下了许多美好的回忆。最后,谨向在百忙中抽出瞬间参加我的论文评审和答辩的每一位老师致以衷心的感谢! 一一童童圣墼——参考文献fI】张雄伟,曹铁勇.DSP芯片的原理与开发应用.北京:电子工业出版社,2000』2】杨行峻,迟惠生.语音信号数字处理.北京:电子工业出版社,1995,813】姚天任.数字语音处理.武汉:华中理工大学出版社,1992,4【4】李刚.数字信号微处理器的原理及其开发应用.天津:天津大学出版社,2000【5】李文元,张毓忠,戈敬东.数字音频压缩自适应变换编码算发的研究.信号处理,第十四卷,第三期,1998(9);245—248f6】胡洪凯,郑红,吴冠.TMS320C54XDSP混合编程方法研究.电子技术应用,2001,12f7]翟东力,王晓蕾.采用DSP内核技术进行语音压缩开发.电子技术应用,2000(12);58—60【81王炳锡.语音编码.西安:西安电子科技大学出版社,2002.6【9】刘志勇.8Kb/s脉冲自适应码本激励(PACELP)——种新的数字移动通信用语音编码方案.信号处理,第八卷,第四期,1992(12);217~224[10J关存太,陈永彬,吴伯修.极低码率——汉语识别声码器.电子学报,第23卷,第12期,1995(12);52—58【11】马金明,丁晓明,裘正定.低比特率语声编码器的新发展.北方交通大学学报,1998,6【12】ITU.CodingofSpeechat8Kbit/sUsingConjugate—stuctureAlgebraic—code—excitedLinear-prediction(CS—ACELP).ⅡU—TRec.G729,1995f13】RichardVCoxAT&TLaboratoriesResearchandPeterKroonBellLaboratoriesLucentTechnologiesLowBit—ratespeechcoderforMultimediaCommurhcation.IEEECommunicationMagzine,December,1996f141CCID半导体信息网.语音压缩的DSP过程.hap://Chinaecnet.com/gcszj/xsjl/xs5.asp115】卢飞,王黎伟,丁晓明.分组语音技术的实现与应用.http:#www.Ch_inatelecom.com.cn/paper/xddxkj5/proff16】计算机世界网.语音编码技术应用与发展.http://www.ctiforum.com/technology[17】胡广书.数字信号处理——理论、算法与实现.清华大学出版社,1997,8【18】中国电子风脚接口技术I印=历w州2l妇锄詹面(电子j捌{应用,2001,1)f19J顾亚平.基于DSP技术的自适应反馈抵消系统.电子产品世界,2000,4【20l中国电子网.基于TMS320C50的通用语音信号处理系统http:Hwww.21ic.com/info(电子技术应用,2001,6)【21J施锐,吴琼,陈健.高效率多通道语音记录系统的研制.电子技术应用,2000,7[221低速率语音编码技术与应用.http://www.computenelephonvcom.cn/article1231中国电子网.用TMS320C6201实现多路ITU--TG728语音编码标准.http://www.21ic.corn/info(电子技术应用,2000,12)【24}G729协议的研究及其在TMS320C54X上的实现.http://www.ti.tom.cn/v(北邮:郭正元) 125]RabinerLR.SchaferRW.DigitalProcessingofSpeechSignals·Engle“oodCliffs(NewJersey):Prentice--HellInc,19781261AlanV.Oppenheim.SchaferRW.DigitalSignalProcessing.Prentice--HellInc,19751271TMS320Fixed卅ointDSPAssemblyLanguageToolsUser’sGuide.TexasInstruments,1991f281TMS320C54XUser’sGuide.TexasInstruments,1991[291彭启琮.TMS320C54X实用教程.成都:电子科技大学出版社,2000,21301JohnGProakis.Di鳙talCommunications(FourthEdition),数字通信(影印版)北京:电子工业出版社,2001【311SadaokiFumi.DigitalSpeechProcessing,Synthesis,andRecognition.1989f321/TU-t.RecommendationG729一~A/luexa:Reducedcomplexity8kbit/sCS—ACELPspeechcodec.nU—T,1996【331ITU—t.RecommendationG729----CODINGOFSPEECHAT8kbit/sUSINGCONJUGATE.CODE—EXCITEDLINEAR—PREDICTION(CS—ACELP),ⅡU—T,1996[341戴明桢,周建江.TMS320C54x结构、原理及应用.北京:北京航空航天大学出版社,2001,1l【35】A.V.Oppenheim,R.W.SchafenDistalSignalProcessing.PrenticeHall,1975【36】L.R.拉宾纳,R.W.谢弗著.语音信号数字处理.朱雪龙等译.北京:科学出版社,1983[37】王昕,柳晓呜.基于G.729建议的语音管理系统.通信技术,2002,3【38】防磷,吴炜,黼风.基于G.729A的IP电话微甜.计朝魂,2001,9【391谭敏,谢瑞和.基于ITU—TG.729A标准的数字电话仿真系统.电子技术,12【40】华刚,唐昆,崔慧娟.一种高质量语音编解码专用芯片的设计.清华大学学报(自然科学版),2001,lf41】潘亚涛,胡剑凌,陈健.1.8kb/s的多带线性预测语音编码算法.通信技术,2002.1142l王宏,朱安玉.基于TMS320C50的通用语音信号处理系统.电子技术应用,200l,3 一耋堡垒苎垫型丝主塑——学位论文独创性声明秉承学校严谨的学风与优良的科学道德.本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了在文中特别加以标注和致谢的地方外,学位论文中不包含其他人已经发表或撰写过的研究成果,不包含本人已I{j请学位或他人已申请学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确地说明并表示了致谢。学位论文与资料若有不实之处,本人承担一切相关责任。乒位论文作者签名指导教师签名南手沙彳期:山口;·岁 学位论文知识产权声;明学位论文知识产权声明本人完全了解鹾安工业学院有关保护知识产权的规定+期:研究生在校攻读学位期闻学位论文工作的知识产权属西安工业学院。本人毕业离校后,使用学位论文工作成果或媚学位论文工作成栗发表论文时署名单位仍然为酉安工业学院。学陵秀权保留送交的学位论文的复印件,允许学位论文被篷阂和辔阕;学校可以公布学位论文的全部或部分内容,可以采用影印、筑印或其它复制手段傈存学位论文。学位论文作者签名蓿导教师签名:日期南字庐彳渤;.; 基于DSP的语音编码算法研究与实现方法作者:尚宇学位授予单位:西安工业学院相似文献(10条)1.学位论文张进亮JPEG2000中EBC编码算法的DSP高效实现2008受到信道传输带宽的限制,高保真、低比特率遥感图像压缩技术的研究成为解决高分辨率遥感图像实时传输“瓶颈”的关键手段之一。JPEG2000作为新一代静止图像压缩标准,具有大压缩比、高保真等优点,但其编码算法复杂度高、运算量大,应用于遥感图像压缩领域,必须解决压缩算法硬件实时实现这一难题。本文在国家863高技术发展计划项目“×××数据压缩技术”(项目编号:2006AA701121)的资助下,结合某型号项目“×××卫星图像数据压缩设备”的研制,对JPEG2000星载图像压缩设备中的EBC编码算法进行了深入研究。现将论文的主要工作归纳如下:1、研究了EBCOT算法的特点及实现流程。着重对EBCOT算法中的第一阶段(Tier1)编码算法进行了深入探讨,详细分析了EBC算法的原理,结合DSP的特点,指出了原始算法在DSP软件实现中的不足,即算法结构循环层数多,核心循环即最里层循环代码条件判断过多、代码过长,DSP软件流水根本无法展开。2、对现有JPEG2000的EBC算法结构优化方案进行了分析,指出它们都是对EBC算法本身进行改进,没有对算法的软硬件实时实现做出分析。针对EBC编码算法在DSP实时实现中存在的问题,提出了一种能够使DSP并行流水建立的EBC编码算法的改进结构。其基本思想是首先将算术编码分离出来,然后将位平面扫描步骤展开,并将其中的符号编码独立出来,在位平面扫描前处理。改进后的EBC算法结构使得DSP并行流水线能够建立,大大加快了压缩算法的运行速度。3、提出了一种适于DSP并行实现的EBC编码算法的优化设计方法。首先对算术编码进行了改进,使其更适合于DSP的高效并行;然后给出了独立后的符号编码的DSP实现方案;最后对小波系数的存储结构进行了优化设计。4、基于EBC编码优化算法,设计了DSP汇编代码,在FPGA+多DSP的JPEG2000星载遥感图像压缩设备实验平台上进行了相应的测试与实验研究。数据分析结果表明改进后EBC编码算法的编码速度有了大幅提高,有利于DSP并行实时实现。目前,改进后的EBC算法已成功应用于JPEG2000星载遥感图像压缩设备中。2.期刊论文鲁琴.杜列波.罗武胜.LUQin.DULiebo.LUOWushengJPEG2000算法嵌入式块编码的DSP高效实现策略-测试技术学报2009,23(5)结合DSP软件流水的特点,提出了一种嵌入式编码DSP高效实现策略.对算法结构进行了优化,将符号编码和算术编码从位平面扫描循环中分离出来,然后将位平面扫描循环展开,使得算法DSP程序软件流水得以建立.通过EDMA与CPU并行工作,将算法DSP实现中的数据传输时间隐藏.此外,针对DSP的数据读写特点改进了小波系数的存储结构.通过C语言和线性汇编语言混合编程的方式对算法进行了实现.实验表明,优化后嵌入式编码的DSP实现速度提高到原来的10倍以上.3.学位论文吴子辉H.264/AVC实时编码器的PC实现与DSP优化2006H.264/AVC是ITU-T和ISO联合推出的新标准,采用了近几年视频编码方面的先进技术,以较高编码效率和网络友好性成为新一代国际视频编码标准。H.264/AVC仍基于以前视频编码标准的运动补偿混合编码方案,主要不同有:增强的运动预测能力;准确匹配的较小块变换;自适应环内滤波器;增强的熵编码。测试结果表明这些新特征使H.264/AVC编码器提高50%编码效率的同时,增加了一个数量级的复杂度。实际中恰当地使用H.264/AVC编码工具可以较低的实现复杂度性得到与复杂配置相同的编码效率。故实际编码系统开发需要在运算复杂性和编码效率之间进行折衷,兼顾考虑。本课题以实现不同平台(PC与DM642)上的基于H.264/AVC的实时编码器为目标。工作可以分成以下两个阶段:第一、编码器C代码的设计与优化。这部分工作在PC平台上实现,主要包括重新设计程序框架、数据结构,采用快速而有效的算法,牺牲少量的性能换取大幅速度的提升,以及针对PC平台的指令集优化。其中作者负责程序框架、数据结构的设计,各个模块的整合,以及程序的调试。这一阶段的工作作为后续工作的基础,要求代码不但运行快速,而且需要有较好的稳定性以及可移植性。本文第三章主要讨论这阶段的工作。第二阶段为基于TMS320DM642DSP的编码系统实现。这一阶段将实现一个简单的基于TiDSP的编码演示系统,该系统包括视频的采集,编码,以及重建图像的回放。工作主要集中在PC编码核的移植,演示系统的软件构建,以及DSP平台下代码的优化。作者采用TI的建议,利用RF5(ReferenceFramework5)对编码核以及外围采集、显示模块进行整合,并对PC编码核进行了一定的修改。最后采用线性汇编,针对某些模块进行改写,以提高运行效率。本文第四章将着重讨论DSP的实现与优化。4.学位论文吕先锋H.264/AVC编码算法改进及其DSP设计和优化2007H.264/AvC是ITU和ISO最新的视频标准,与现有的视频标准相比,H.264/AVC编码器能在保持相同图像质量的情况下节省大约50%的码率。由于其良好的压缩效率和网络适应性,H.264/AVC将在视频电话,数字电视广播,视频流媒体服务,压缩视频存储等领域得到广泛的应用。相对之前的标准,h.264采用众多新技术,这些技术能有效地提高编码器的压缩性能,但是也大大地增加了运算复杂度。因此,如何降低运算复杂度,提高编码速度是实现实时编码器的关键。数字媒体处理器是一种针对音视频的DSP,专用于实现音视频等多媒体数据处理,其处理器结构经过了特别的优化设计,且提供了丰富的多媒体处理指令集。Blackfin533(简称BF533)是ADI公司Blackfin系列中一款高性能视频处理芯片,其主频最高能达600MHZ,具有大量针对视频的专用指令,可以并行处理多条指令,所以Blackfin533是目前实现视频应用系统的理想平台之一。本文对H264/AVC标准算法进行了研究,提出了一种帧间宏块编码模式的快速选择算法,并在Blackfin533平台上对P帧进行了优化。主要工作包括:(1)简单介绍了各种视频编码标准,H.264/AVC的制定背景以及技术特点。(2)从提高编码速度的角度出发,对H.264/AVC编码器中耗时多的模式选择算法进行改进,利用宏块编码类型在空间上的相关性,对当前编码宏块的编码模式进行快速选择,在获得与算法改进前相当的图像质量、信噪比和比特率的情况下,编码速度提高了20%~30%。(3)设计了编码器的运行平台,并结合Blackfin533的硬件特性,将H.264编码器的参考模型micro_h264(见本文5.1小节)进行了移植,并针对P帧图像编码,从调整P帧编码流程,C语句调整,耗时模块代码汇编几个方面进行了优化。本文的研究成果在视频会议、可视电话、嵌入式视频监控等各种通信系统中,具有一定的研究价值。5.期刊论文蒋傲.朱杰CRC编码原理及其基于DSP编码-电子测量技术2003,""(6)循环冗余码(CRC)是一种常用的检测错误码,广泛应用于测控及通信领域.文中介绍基于Ti54x系列DSP的CRC软件实现方法.6.学位论文林巍峣H.264帧间模式选择算法优化及DSP实现2005H.264/AVC编码标准是由ITU-T和ISO/IEC共同制定的,H.264的编码框架和以前的H.26x和MPEG标准相似。但是在很多环节上采用了新的技术。这些技术包括:帧内编码采用帧内预测,帧间编码采用基于不同块大小和块形状的7种帧间模式,运动估计采用1/4象素内插,用4x4整数变换代替8x8DCT变换以及多帧参考等等。这些技术的应用大大提高了H.264的编码效率,和以往的标准相比,在相同编码质量时,H.264可以节约大约50%的码率。H.264的帧间预测使用了7种基于不同块大小和块形状的模式,包括16x16,16x8,8x16,8x8,8x4,4x8和4x4,多模式的运用极大的提高了编码效率和R-D性能。然而,传统的帧间模式选择方法是对所有的7种模式进行全搜索,从中得到最优的模式。该方法的运算复杂度极大。根据统计,多模式的块匹配运动估计,占据了整个编码大约80%的计算量,巨大的运算量使得H.264的编码复杂度大约是H.263的4~5倍,巨大的复杂度严重阻碍了H.264在实时的视频编码及传输等领域的广泛应用。为此,本文提出了新的帧间模式选择算法,在保持编码性能几乎不变的情况下大幅度的降低H.264编码算法的复杂度。同时,本文也探索了所提出的算法在资源有限的DSP平台上实现的有效途径,具有较强的实用价值。本文的主要内容如下:本文的第一部分首先简单总结了图像编码的基本原理、主要方法与一些主要的图像编码的国际标准和建议。接着,第二部分详细介绍了H.264/AVC标准以及它所采用的一些新的技术,包括先进的帧内预测,运动估计的新技术,4x4整数变换,熵编码,分层的体系结构等。最后指出了对于H.264进行算法和基于DSP平台的优化的必要性。论文接着着重研究H.264帧间模式选择的快速算法。首先,分析了多种块模式的帧间预测的复杂度,介绍了帧间模式选择算法的研究现状及一些现有的算法。然后本文提出了一种新的快速帧间模式选择方法,该方法利用了本文提出的模式预截断和精确的大小模式判决等算法,结合全零预判决,宏块的相邻时空特性,以及8x8运动向量的一致性等信息,快速地选出最优的模式。实验表明,本文算法在对运动搜索部分几乎没有改动的情况下,极大地节省了运算量。另外,本章也详细讨论了本文算法在CIF,D1等大图像格式序列中的应用。通过讨论大图像格式序列的特点,提出了算法针对大图像格式序列的改进。本文的第四部分叙述了本文算法在DSP平台上的实现。首先介绍了项目所用的Blackfin533芯片和EZ-KIT评估板。接下来,概括了算法DSP实现的流程图和关键技术,包括Memory配置、Cache应用和DMA等,分析了编码器选项的选择。最后详细讨论了从硬件实现的角度对本文提出的帧间模式选择算法的改进和优化。7.学位论文刘波H.264视频编码算法并行性研究及其在多核DSP上的实现2007为了更有效地进行视频信息压缩,运动图像专家组(MPEG)和视频编码专家组fVCEG)制定了H.264视频编解码标准。H.264中集成了很多高复杂度的编码工具以获得更好的编码效率,单处理器难以满足实时编码的需求。随着数字信号处理器应用领域的不断扩大,多核处理器芯片成为研究的热点。本文深入研究H.264视频编码算法和YHFT-QDSP的结构,设计并在QDSP模拟器上实现了三种并行编码方案。主要工作和成果有:1.研究YHFT-QDSP的结构和工作方式,重点研究QDSP核间数据传递方式;2.研究H.264视频编码算法,分析算法中存在的并行性,重点分析其中存在的数据级并行性。3.基于对数据级并行性的分析,提出了一种基于宏块区域划分的并行编码方式。基于这种并行编码方式,讨论图像的划分和分派、帧内预测数据相关、帧间预测数据相关、滤波数据相关和熵编码相关数据传递等并行编码过程的关键问题。4.设计并行熵编码的并行帧内编码、统一熵编码的并行帧内编码和统一熵编码的并行帧间编码等三种情况下的并行编码方案。这3个方案可以在不影响图像质量的基础上实现H.264的并行编码。5.在QDSP模拟器上实现上述三个方案,使用SDP和Qlink实现相关数据的传递。为提高并行效率并保证并行编码的正确性,在原算法的基础上,设计新的数据结构和处理器间同步方式。6.根据模拟器统计信息,对本文提出并实现的并行编码方案的性能做出评估;统计分析SDP和Qlink运行信息,为这两个部件功能的进一步完善提出建议。在QDSP模拟器上使用双处理器进行并行编码实验,帧内预测编码加速比达到1.7,帧间预测编码加速比达到1.8;在四个处理器上进行并行编码,帧内预测编码和帧间预测编码的加速比都在3以上。8.会议论文焦敬恩.尔桂花.戴琼海基于VLIW结构DSP的MPEG-4编码优化2003本文主要阐述了MPEG-4编码算法在高性能定点DSP上的优化方法--利用DSP的VLIW(VeryLongInstructionWord)和流水线结构优化MPEG-4编码,对MPEG-4编码算法和DSP结构进行了分析,首先从理论上说明了使用这种DSP适合于做视频处理,并且以该DSP(主频为167MHz)的EVM板为硬件平台,用实例说明了如何利用DSP的VLIW和流水线结构对MPEG-4算法进行优化以及利用以上两种结构进行优化时需要注意的问题.实验表明,利用DSP的VLIW和流水线结构优化MPEG-4的编码算法,其效率可以有大幅度提高.9.学位论文张恒基于DSP的HUFFMAN编码解码器的实现与研究2003根据Huffman编码解码器的实现方案,该文采用C语言描述nuffman编码解码器,以TI公司的TMS320C5402DSP处理器为目标器件.从DSP处理器的硬件特点出发,在编程当中尽量减少存储器空间的占用.在设计中,该文在Huffman算法的基础上增加调整符号频率值模块,解决了在Huffman码表生成过程中数据量过大以及输出文件的头文件过大的问题,提高了存储器的利用率、系统的运算速度及压缩率.对处理器内部存储空间不够的情况,该文对它进行外部Flash存储器和RAM的扩展.该文采用TI公司的集成开发系统CodeComposerStudiofor5000对用C语言描述的Huffman编码解码器进行综合验证.证明该编码器功能正确,能实现20﹪~95﹪的压缩率,比普通的Huffman编码器具有更高的压缩率.解码器能将压缩后的文件正确地解压.综合验证后,该文研究了输入文件大小对压缩率的影响,用CodeComposerStudiofor5000对该编码器和解码器各个模块分别进行评价,得到了每个模块运行时占用的CPU时钟数,为算法的优化提供了方向.根据评价的结果,对优化空间比较大的模块进行重点优化.在Huffman算法上提出了减小数据扫描行程,节约了DSP的存储器资源,减少了系统等待时间,提高了系统性能.该文整个设计用C语言来实现,采用模块化程序设计,大大减少了开发时间,充分发挥了DSP能用高级语言编程的特点.10.期刊论文张璇.王福昌.童胜勤基于DSP的CVSD与PCM编码全数字转换技术-华中科技大学学报(自然科学版)2003,31(1)提出并实现了一种基于DSP的16Kbit/sCVSD(连续可变斜率增量调制)编码与64Kbit/sA律PCM(脉冲编码调制)编码的全数字转换技术.相对于现有的编码转换系统,此种技术符合单值对应法则.实验证明,当CVSD误码率≤2×10-5且PCM误码率≤1×10-5时,采用该转换算法可以做到多次转换无误差积累.本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y491370.aspx下载时间:2010年5月29日

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭