(通信与信息系统专业论文)voip中g7231语音编码算法的dsp实现.pdf_第1页
(通信与信息系统专业论文)voip中g7231语音编码算法的dsp实现.pdf_第2页
(通信与信息系统专业论文)voip中g7231语音编码算法的dsp实现.pdf_第3页
(通信与信息系统专业论文)voip中g7231语音编码算法的dsp实现.pdf_第4页
(通信与信息系统专业论文)voip中g7231语音编码算法的dsp实现.pdf_第5页
已阅读5页,还剩132页未读 继续免费阅读

(通信与信息系统专业论文)voip中g7231语音编码算法的dsp实现.pdf.pdf 免费下载

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

文档简介

摘要 本文描述了g 7 2 3 1 双速率语音编码( 信源部分) 的原理和其在c 5 4 x d s p 上实现的 过程和方法。第一章为原理部分,根据g 7 2 3 1 浮点程序详细、完整地描述了g 7 2 3 1 信源编码的实现过程,它比i t u t 的原理描述更具体,比直接读c 代码更容易理解,对 研究g 7 2 3 1 算法有一定的参考价值。第二章为实现过程部分,讨论了纯c 代码在5 4 x d s p 上运行速度慢的原因,在讨论了几种优化方法后,采用了从关键代码入手的全汇编优化 方案,结果证明采用该方法的优化结果和预期优化结果基本符合。优化结果基本达到了 商用g 7 2 3 1 算法的优化程度。该部分内容对移植类似c 代码算法到d s p 有一定参考价 值。第三章为5 4 x d s p 汇编优化技术部分,讨论了以下内容:双字数据偶定位、函数堆 栈结构设计、组合条件优化实现、硬件滤波器结构、整数小数除法和求余、o v e r l y 技 术、数据区堆栈等。具有创新性的技术和思想有:部分循环展开技术、并行指令使用技 术、合理利用指针增减、a r 0 作为循环次数、码本搜索优化实现、多位数移位的实现、 由内白外的编程顺序、使用p s h m 分配a r x 、使用硬件结构实现自增量求余等。该部 分最后指出了一些编程容易出错的地方。最后一章算法应用部分介绍了两个实例:在实 验箱上的实现实时语音播放和在p c 机上的i p p h o n e ,主要讲述了f i f o 环形缓冲区在语 音实时采集播放中的应用。 关键字:g 7 2 3 1 ,5 4 x d s p , 优化技术,语音编码 v o i p 中g 7 2 3 1 语音编码算法的d s p 实现 a b s t r c t t h et h e s i si sa b o u tt h et h e o r yo fd u a lr a t es p e e c hc o d i n g ,g 7 2 3 1 ( s o u r c ec o d i n gp a r t ) , a n dt h ep r o c e d u r ea n dm e t h o di ni t si m p l e m e n t a t i o no nc 5 4 x d s pp l a t f o r m t h ef i r s tc h a p t e r i st h e o r yd e s c r i p t i o np a r t ,a n dw ef u l l yd e s c r i b e dt h er e a l i z a t i o np r o c e d u r eo fg 7 2 3 1i nd e t a i l , b a s e do nt h ef l o a t i n gp o i n tg 7 2 3 1cs o u r c ec o d e t h ed e s c r i p t i o ni sm o r ed e t a i lt h a nt h eo n e g i v e nb yi t u - t ia n di se a s i e rt ou n d e r s t a n dt h a nr e a d i n gt h ec c o d ed i r e c t l y s oi tm a yb e u s e f u li ns t u d y i n gg 7 2 3 1 i nt h es e c o n dc h a p t e r , w ed i s c u s s e dt h er e a s o nt h a tc a u s e st h ep u r e cc o d er u n n i n gs os l o w l y a f t e rd i s c u s s i n go ns o m eo p t i m i z a t i o nm e t h o d s ,w ea d o p t e dt h e m e t h o d :f u l l yu s i n ga s s e m b l yl a n g u a g es t a r t i n gf r o mt h ek e yc o d e i t i s p r o v e dt h a tt h e o p t i m i z a t i o nr e s u l tb a s i c a l l yc o i n c i d ew i t ht h eo n ep r e d i c t e db yt h i sm e t h o d t h er e s u l t b a s i c a l l yr e a c h e dt h eo p t i m i z a t i o nd e g r e eo fc o m m e r c i a lg 7 2 3 1a l g o r i t h m t h i sp a r tm a y b e s o m e w h a tu s e f u la sar e f e r e n c ew h e nt r a n s f e r r i n gs i m i l a rcc o d ea l g o r i t h mt od s rt h et h i r d c h a p t e ri so n5 4 x d s pa s s e m b l yl a n g u a g eo p t i m i z a t i o nt e c h n i q u e s ,a n dw ed i s c u s s e dt h e e v e na l i g n m e n to fd u a lw o r dd a t a ,d e s i g no ft h ef u n c t i o ns t a c kf r a m e w o r k ,t h e r e a l i z a t i o no fc o m b i n e dc o n d i t i o n s ,h a r d w a r ef i l t e rs t r u c t u r e ,i n t e g r a la n df r a c t i o n a l d i v i s i o na n dr e s i d u em o d u l u s ,o v e r l yt e c h n i q u e s ,s t a c kf o rd a t as e g m e n te t c s o m eo f t h ei n n o v a t i v et e c h n i q u e sa n di d e aa r et h et e c h n i q u e so fp a r t l ye x p a n d i n gr o t a t i o n , t h e t e c h n i q u e si nu s i n gp a r a l l e li n s t r u c t i o n s ,t h ep r o p e ru t i l i z a t i o no fi n c r e a s eo rd e c r e a s eo f p o i n t e r s ,u s ea r 0a sar o t a t i o nc o u n t e r , o p t i m u mr e a l i z a t i o no fc o d e b o o ks e a r c h i n g , r e a l i z a t i o no fe x t e n s i v es h i f t i n g ,f r o mi n n e rt oo u t e rc o d ew r i t i n go r d e r , a s s i g n m e n to f a r xu s ep s h m h a r d w a r er e a l i z a t i o no fm o d u l a t i n gs e l f - i n c r e a s ev a l u ee t c i nt h ee n do f t h i sp a r t ,w eg a v es o m ec a s e sw h e r em i s t a k e sm a yb e m a d e i nt h el a s tc h a p t e r , t w oe x a m p l e s , r e a l i z a t i o no fr e a l - t i m es p e e c h r e c o d i n ga n dp l a y i n go ne x p e r i m e n tb o xa n di p p h o n e p r o g r a mr u n n i n go np c ,w e r eg i v e n h e r e ,w em a i n l yi n 扛o d u c e dt h ea p p l i c a t i o no fc i r c u l a r f i f ob u f f e ri nr e a l t i m es p e e c hr e c o d i n ga n dp l a y i n g k e yw o r d s :g 7 2 3 1 ,5 4 x d s p , o p t i m i z a t i o nt e c h n i q u e s ,s p e e c hc o d i n g 引言 引言 v o i p ( v o i c eo v e r 研是当前的热门技术之一。实现v o i p 可选择的协议有:h 3 2 3 协 议组和s i p ( s e s s i o ni n i t i a t i o np r o t o c 0 1 ) 协议等。无论采用那种标准,语音压缩都是v o i p 中的重要部分,图1 是h 3 2 3 协议组和o s i 模型的关系 ,从图中可知语音编码在v o i p 中所处的地位。v o i p 语音编码首选方案是:g 7 2 3 1 和g 7 2 9 。 l p h y s i c 羽 。 。叠iji 薯 誊。i | | 。曩i j 图1 h 3 2 3 协议组和o s i 模型的关系 目前,以p c 机作为v o i p 终端的应用方式已经有广泛的应用,以嵌入式系统作为 v o i p 终端的应用方式由于成本较高还没有得到广泛的应用,目前嵌入式方式应用较多 的是企业i p 电话机( e n t e r p r i s ei pp h o n e ) 。嵌入式v o i p 终端成本较高的一个原因是, v o i p 相关软件复杂,运算量大,特别是语音压缩算法,需要较大的运算量,为了运行 复杂的软件就需要高成本的硬件支持。优化语音算法,就使得能够在低速,r a m 空间 较小的低成本d s p 上实现语音算法,从而降低成本。目前,已有商用的针对各类d s p ( 包括5 4 x d s p ) 的( 1 7 2 3 1 算法,但是它们都不是免费的,所以开发该算法可以获得一 定程度的自主产权的g c 7 2 3 15 4 x d s p 算法,为以后嵌入式v o i p 设计做好准备。 另外已经有三届的师兄师姐在本论文中做过工作,能够完成该课题,能够使得他们 的工作能够在实际中得到应用。另外从学术上讲,本课题的意义和目的是: v o i p 中g 7 2 31 语音编码算法的d s p 实现 1 、通过分析g 7 2 3 1 算法的原理,完成g 7 2 3 1 原理的详细描述文档。为进一步研 究g 7 2 3 1 算法和研究类似语音压缩算法提供参考。 2 、研究c 代码算法到5 4 x d s p 的通用步骤和方法。由于g 7 2 3 1 算法是一个典型的 d s p 算法,研究它的c 代码到5 4 x d s p 的移植,可研究c 算法到d s p 的移植的通用方 法,这对移植类似c 算法将有指导作用。 3 、研究高效5 4 x d s p 汇编的相关技术。g 7 2 3 1 算法需要高效的c 5 4 d s p 汇编技术。 研究它的实现,同时可研究c 5 4 d s p 高效汇编技术,从中得到的优化技术,可作为编写 高效5 4 x d s p 汇编的参考。 我们首先通过阅读g 7 2 3 1 浮点c 代码从总体上把握g 7 2 3 1 的算法实现原理,为优 化做好准备,然后在d s p 实验箱上进行代码优化。 第一章g 7 2 3 1 算法原理 第一章g 7 2 3 1 算法原理 g 7 2 3 1 是i t u 指定的标准,它有两种速率:5 3 k b i t s 和6 3 k b i t s ,5 3 k b i f f s 和6 3 k b i t s 能够在传输过程中动态切换,输入语音是8 k h z 的1 6 b i t 线性p c m 编码。通常语音编码 分为波形编码和参数编码。波形编码是直接对信号波形编码;参数编码简单地讲就是: 用一些脉冲通过有特定参数的滤波器就能够逼近所要的语音信号,所以对于某一段语音 信号,只要计算它对应的脉冲和滤波器参数,然后传送这些参数,接收端根据这些参数 可恢复出近似的语音信号。g 7 2 3 1 属于参数编码。g 7 2 3 1 中的两种速率采用不同的编 码方案,对于5 3 k b i t s 采用a c e l p ( a l g e b r a i cc o d e e x c i t e dl i n e a rp r e d i c t i o n ) ,对6 3 k b i t 采用m p - m l q c m u l t y - p u l s e - m u l t yl e v e lq u a n t i z a t i o n ) 。 本章内容的根据是:i t u t ( 3 7 2 3 1 的描述文档。和i t u ta n n e xa ? ,根据的代码是 g 7 2 3 1 浮点程序( a n n e xb 。) 。本文的原理参考了前几届的论文,在原理描述上本文在前 几届论文基础上增加了静音检n ( a n n e x a ) ,并修正了一些地方。本章尽量不涉及c 代码 中的具体内容,这样能在不阅读c 代码的情况下了解g 7 2 3 1 的实现过程,但是如果能 结合g 7 2 3 1 浮点程序阅读本章,将能更深入理解算法的实现原理。 由于i t u t 的标准写得比较简练,和具体实现还有一定的距离,而阅读c 代码又需 要较长的时间。本章能够加速研究者阅读c 代码。 本章中符号的规定: x 表示比x 小的最大整数;d i m ( a ) 表示a 矢量的维数。文档指 i t u t 网站的g 7 2 3 1 描述文档。 1 1g , 7 2 3 1 编解码系统整体分析 1 1 1g 7 2 3 1 编码器和解码器外部接口特性 编码器和解码器外部接口特性如图l 一1 所示: g 7 2 3 1 编码模块 k s 或者6 口口g 7 2 3 1 解码模块 图卜1g 7 2 3 1 编码器和解码器外部接口 编码器的输入信号是y ( n ) 。模拟信号首先通过电话带通滤波器( g 7 1 2 建议) 然后以 8 0 0 0 h z 的速率采集,然后量化为1 6 b i t 的线性p c m 编码。1 6 b i t 的线性p c m 编码用1 6 位有符号数来表示采样点的幅度。 编码器将每2 4 0 个样点作为一帧,编码以帧为单位处理。编码器的输出就是每帧语 音信号的编码信息,每帧的编码信息以数据包的形式发送到解码器。 解码器的输入信息就是编码信息数据包,输出信息就是8 0 0 0 h z 采样速率、1 6 b i t 的 线性p c m 语音数据q f ( n ) 。 1 1 2g 7 2 3 1 的编码延时 假设编码和解码的计算延时可以忽略:数据包的传输延时也可以忽略;在这种情况 下g 7 2 3 1 也有3 7 5 m s 的延时。 v o i p 中g 7 2 3 1 语音编码算法的d s p 实现 3 7 5 m s 的延时包括两部分3 0 m s 和7 5 m s 。 先看3 0 m s 部分。3 0 m s 的延时是因为g 7 2 3 1 编码一次需要读入2 4 0 个点的数据, 然后才进行编码。设第t 帧第个点到达编码器的时刻为c o d l n p u t t ( t ,行) ,0 ”冬2 3 9 ;第 t 帧第n 个点在解码器输出的时刻为d e c o u t p u t t ( t ,月) ,0 开2 3 9 。语音输入和语音输出 都是8 0 0 0 h z 的采样速率,有 d e c o u t p u t t ( t ,n ) 一d e c o u t p u t t ( t ,珂一1 ) = 1 8 0 0 0 c o d l n p u t t ( t ,n ) 一c o d l n p u t t ( t ,力一1 ) = 1 8 0 0 0 总延时定义为 t o t a l d e l a y = d e c o u t p u t t ( t ,r 1 ) 一c o d l n p u t t ( t ,n ) = d e c o u t p u t t ( t ,0 ) 一c o d l n p u t t ( t ,o ) = d e c o u t p u t t ( t ,o ) - c o d l n p u t t ( t ,2 3 9 ) + 2 4 0 8 0 0 0 ( 1 1 ) 由于编码器读取第t 帧的第2 3 9 点后才开始编码,所以 d e c o u t p u t t ( t ,0 ) 一c o d l n p u t t ( t ,2 3 9 ) 0 所以编码总延时大于等于2 4 0 8 0 0 0 = 3 0 ( m s ) 。 再看7 5 m s 的延时,7 5 m s 延时产生的原因是编码时需要超前( 1 0 0 ka h e a d ) 7 5 m s , 这是因为编码r l 时刻的点需要n + 6 0 时刻的点的数据,也就是需要知道7 5 m s 后的点。 超前的引入是因为在计算n 时刻的自相关时,需要n 时刻的点的左右6 0 个点的数据。 为了实现超前,编码器不得不引入额外的7 5 m s 的延时。超前的具体的实现如图1 2 所示: 第一帧数据第二帧数据 ,。、,。、 第一次读入的2 4 0 个点第二次读入的2 4 0 个点 ,、,_ ,c 曲工三 工三工 e 二口 三二二二二二 一6 0 ,- 5 91 ,0 ,1 1 7 9 ,1 8 02 3 9 ,2 4 0 , 图1 2 编码器每次读入的数据和分帧的关系 图中点1 8 0 2 3 9 虽然是第一次读入的数据,但是将作为第二帧数据,等到第二次读入 2 4 0 个点时才对点1 8 0 2 3 9 编码。- - 6 0 一1 是编码器添加的6 0 个全零的数据。7 5 m s 延时使得第t 帧开始编码的时刻并不是c o d l n p u t t ( t ,2 3 9 ) 而是c o d i n p u t t ( t + 1 ,5 9 ) ,所以 有 d e c o u t p u t t ( t ,0 ) 一c o d l n p u t t ( t + 1 , 5 9 ) 0 j 肌c o u t p u t t 旷 c o 咖羽m 2 s ,枷赤 。 第一章g 7 2 3 1 算法原理 j d e c o u p u t t ( t ,o ) 一c o d l n p u t t ( t ,2 3 9 ) 7 5 ( m s )( 1 2 ) 将( 1 2 ) 式代入( 1 1 ) 式可看出编码延时的两个组成部分 t o t a l d e l a y = d e c o u u t t q ,0 ) 一c o d l n p u t t ( t ,2 3 9 ) + 2 4 0 8 0 0 0 7 5 ( m s ) + 3 0 ( m s ) 1 1 3g 7 2 3 1 编码流程图 图1 3 为g t 7 2 3 1 的编码流程图。 b l o c kd i a g r a m 礴t h es 【 e e c hc o d e r d re a c hb l o c kt h ec c r r t s p o l l d l n g 憎证r e l k en m n b c rbi n d i c a l 蝴 图1 - 3g 7 2 3 1 编码流程图 v o i p 中g 7 2 31 语音编码算法的d s p 实现 1 2 编码器 1 2 1 编码器的初始化 文件:c o d e r 2 c 函数:i n i tc o d e r 编码器初始化 编码器在编码当前帧的数据时,需要用到前几帧的点和编码结果,必须将这些数据 保存起来,我们称这些需要保存的变量为状态变量。状态变量需要初始化。各状态变量 初始化情况如下: ( 1 ) 豆一。:上一帧解码以后的l s p 矢量。在l s p 参数量化时使用;在l s p 解码后更 新。初始值为常矢量。,即 卫1 仁 ( 2 ) e r r i ,i = o 4 :在计算自适应码本激励部分,用于计算码本搜索范围的i t e s t 参 数;在计算出当前子帧的自适应码本增益索引i c 和闭环基音周期l i 以后更新。 初始化值如下: e r r i - e r r o ,i = u 4 e r r 0 = 0 0 0 0 0 0 3 8 1 4 6 4 ( 3 ) 其它状态变量都初始化为0 1 ) s t - 1 、石f 【一1 :高通滤波器状态变量。在高通滤波时使用,滤波完毕以后更新。 2 ) p r e d a t e n :编码器处理上一帧时,读入编码器的2 4 0 个语音采样点中的后1 2 0 个点。p r e d a t e n 通过高通以后参与计算子帧的自相关系数:p r e d a t a n 在数据移 位部分更新为编码器此次读入的2 4 0 个语音采样点中的后1 2 0 个点。 3 ) s i n d e t 【 ,= 0 1 4 :这1 5 个数据记录最近1 5 个子帧正弦特性,用于判断语音 信号是否为正弦;s i n d e t 在计算了此子帧的l p c 参数以后更新。 4 ) x 【n 、& n :感觉加权滤波器的状态变量,x n * l lf x n 各有1 0 个点。在感觉加 权滤波时使用,滤波完毕以后更新。 5 ) p r e v w 垂【n :上一帧感觉加权滤波以后的后1 4 5 个点。在开环基音预测时使用; 计算完开环基音以后更新p r e v w g t n 为此帧感觉加权滤波以后的后1 4 5 个点。 6 ) r i n g f i r n 、p r e e r r n 】:联合滤波器的状态变量,保存了上一子帧的激励信号通 过联合滤波器以后滤波器中保留的状态。它们用于计算联合滤波器的零输入响 应;在自适应码本激励u n 】和固定码本激励v n 计算出来以后,在联合滤波器 保持上一子帧的保留状态的基础上,用激励信号e n l - = u n l + v i n l 通过联合滤波器 从而更新联合滤波器的状态。 7 ) p r e e x c n :上一帧计算的激励信号e n 】的后1 4 5 个点。自适应码本激励是用以 。表示本小结的内容对应的( 3 7 2 31 浮点程序所在的文件名。 o 表示本小结的内容对应的g 7 2 3 1 浮点程序中的函数名。 。表示本小结的内容对应的g 7 2 3 1 浮点程序中的函数的主要功能。 6 第一章( i 7 2 3 1 算法原理 前的激励重建的,在计算自适应码本激励时使用p r e e x c n ;在当前此帧的e n 】 计算出来以后更新p r e e x c n 。 1 2 2 分帧( f r a m e r ) 设输入采样点序列( 1 6 b i t 的线性p c m 编码) 为y n 】。编码器每次读入2 4 0 个点, 记为s t n 2 舻帧的大小就是2 4 0 个点,但是进行编码的帧并不是s ,【n 。2 3 9 ,一个完 整的帧由上一次读入的最后6 0 个点和这次读入的1 8 0 个点组成,所以第t 帧的点为 m ,m 。2 3 9 = p 。 1 8 0 ,j 。 2 3 9 ,墨【o 【l 】,- , 1 7 9 ) 。 g 7 2 3 1 编码器和解码器都是以帧为处理单元来进行语音压缩和解压缩。编码器一次 读取2 4 0 个样点进行编码,解码器一次解码得到2 4 0 个样点。 将第t 帧 f ,朋, h 吨:。,均分为4 个子帧,分别为第0 、l 、2 、3 子帧,每个子帧有 6 0 个采样点。这里的第0 、1 、2 、3 子帧对应的数据为 乃 川l 。,、 乃啊 n 吨。、 f m ,【胛】 。,。、口- m ,【n ) 。:。:,。,也就是s t - 1i n 。;,。:,、s ti n 。:。,。、s ti n 。:。,、 j r 胛 d 2 。1 7 9 。 这就是说g 7 2 3 1 编码有6 0 个点的延迟时间,t 时刻读入的最后个点,留在t + 1 时刻处理。 1 2 3 高通滤波 文件:c o d e r 2 c函数:r e md c高通滤波 将一次读入的2 4 0 个点: s f 胛 2 3 9 作为滤波器的输入。滤波输出信号为 砒即】2 3 9 滤波器传输函数为: 酢) 2 等2 酉1 一z - i ( 1 2 1 ) s l zj1 i ,一一l 1 2 8 时域系统函数: 引巾姒小“】+ 警“呐删2 3 9 ( 1 2 2 ) 其中1 1 = 一1 表示上一帧最后一个点( 这是一个状态变量) ,如果t 不等于0 则: j , 一t _ s t - i 2 3 9 t _ 1 】= x t l 2 3 9 】 v 0 1 p 中c x 7 2 3 1 语音编码算法的d s p 实现 如果t = o ,n s 江一1 _ 0 ,x t 【一1 _ 0 。 1 2 4l p c 参数的获取 塞生;兰! 竺:!里垫i 曼! 翌己;! 坚q坚g 叁墼:! 基 塞! :! ;兰! 望:!里錾i 旦唑垫q兰! 立呈! ! 曼:里业坐建堡 对每个子帧求1 0 阶的l p c 参数,_ ,= 1 ,2 1 0 ,i = o 3 。l p c 参数将用来建立l p c 合成滤波器。由1 0 阶的l p c 参数,j = 1 , 2 1 0 ,i = 0 3 建立的l p c 合成滤波器定义如 下 删2 砑1 ,3 1 2 4 1 子帧的1 1 个自相关系数的求法 求自相关使用的数据为经过高通滤波以后的数据。求某一子帧的l p c 参数首先需要 知道该子帧的1 1 个自相关系数胄。 门,= o 1 0 ,i = o 3 。求第i 子帧的1 1 个自相关系数 需要它的前后两个子帧的数据,即将i - 1 、i 、i + 1 子帧组成一个1 8 0 点的序列t h r e e s u b 丹矾 ( 注意,如果i = 0 ,则第i 一1 子帧为前一帧的第3 子帧;同理,如果i = 3 ,则i + 1 表 示下一帧的第0 子帧) 。正是这个原因,t 时刻还不能计算_ 月 。,的自相关和l p c 参数,所以就有6 0 个点的延迟。为了得到第0 帧的数据x t - 1 i n 。3 9 编码器必须保留 t 时刻读入的最后6 0 个点通过高通以后的数据x 。 n 。:为了计算x t 一, ” 。3 9 的 自相关还需要保留x 。 n k :。,。所以t - - 1 帧留给第t 帧的数据是t 一i n 。:呲3 9 ,设这 1 2 0 个点保存在数组p r e v d a t 1 2 0 6 p ,编码器初始化时,p r e d a t n 初始化为0 。自相关系 数求法如下: ( 1 ) 将t h r e e s u b f r m ,和1 8 0 点的汉明窗( h a m m i n g w i n d o w ) 相乘 t h r e e s u b f r m h t n _ :t h r e e s u b f r m : n l x h a m m i w i n d o w n ,n = o 1 7 9 ( 2 ) 计算自相关 r ,【 】- 丽1 2 4 0 。 y 阀2 3 9 - n 砌m s u b f r m h :阴脚e 口s u b f r m h f 【,+ ”】,n = o 1 0 ( 3 ) 用1 0 2 5 1 0 2 4 的自噪声系数( w h i t en o i s ec o r r e c t i o nf a c t o r ) 调整r 0 】 r t o 】_ 胄,【o 】 1 + 志】 用二项式窗系数( b i n o m i a lw i n d o wc o e f f i c i e m s ) 调整其它自相关系数 r 。i n 】= r 。i n b i n o r m i a l n ,n 0 第一章c l 7 2 3 1 算法原理 1 2 4 2 用l e v i s i o n d u r b i n 算法计算l p c 参数 l e v i s i o n - d u r b i n 算法用递推的方法由自相关系数计算l p c 参数。自相关系数和l p c 参数的关系由y u l e w a l k e r 方程 r 0 r 1 r p 】 r 1 】r 0 r p 一1 】 r p r p 一1 】 r 0 】 1 一口1 : 一a p e p 0 0 决定。其中埘几j = o p 是白相关系数,以, ,= 1 p 为p 阶l p c 参数。这里p = 1 0 。 下面用l e v i s i o n d u r b i n 算法计算y u l e w a l k e r 方程的解。递推公式如下 ( 1 ) 初始化:i = 0 ,e = r 0 】,a ,= o ,j = 1 , 2 p ( 2 ) 计算 ,胄【f 卜:川r f _ 1 一门 庀仁2 一 e ( 注:其中当f l o z ;- o 口。r i 一1 一, = 0 ) 如果 1 说明系统函数不稳定,则退出计算。 ( 3 ) 计算 k j = i + 1 a j 仁1 一k q 一l j 鲰0 ,9 ,5 ,= s 如果s i d e t j ,= o 1 4 中等于1 的个数大于等于1 4 个,则认为信号是正弦信号, 并设置s i n d = 1 ;否则为非正弦,设置s i n d = 0 。 s i n d e t j ,= o 1 4 也是编码器的状态变量,其初始化值为0 。 1 2 5l s p 量化器 l s p 参数和l p c 参数可用互相转化,但是l s p 参数比较适合量化,所以将l p c 参 数转化为l s p 参数,然后进行量化,解码端根据l s p 参数反转化为l p c 参数。这里只 对每帧的第3 子帧的l p c 参数进行转化和量化。 1 2 1 5 1l p c 参数至l s p 参数的转化 将子帧的1 0 个l p c 参数 q ) 转化为1 0 个相应的l s p 参数 彰) 的方法如下: ( 1 ) 对l p c 参数进行一个小的频带( 7 5 h z ) 扩展 计算扩展以后的l p c 参数 d ;= a ,j - 0 9 9 4 s , j = 1 , 2 1 0 ( 2 ) l s p 参数和l p c 参数的关系 l s p 参数和l p c 参数通过e ( z ) 和q ( z ) 多项式联系起来,它的原理如下: 设 p ( = ) = l + z 。1 1 一 ( d :+ o ) z 一( + ) z 一一( o + d :) z 。o 】 = a ( z ) + z a ( z 1 ) 设 q ,( z ) = 1 - z 。1 一【( - - a i 。) z 一( 日:一a ;) z 一( 口;。一) z 。o a ( z ) 一z - l l a 如1 ) 1 0 第一章c t 7 2 3 i 算法原理 其中 a ( z ) = 1 一d :z 一一n ;z 。2 一一n :o z 。o 可以证明方程 即) = 等= 。 和 ) = 器= 。 各有5 个共轭根,且都在单位圆上,所以上式可以写作 p ( z ) = r i ( 1 + 2 q ,z 一1 抛) = 0 q ( z ) = 兀( 1 + 2 q z 。1 * ) = 0 由两根之和的性质知,- q 。是以z 。1 为变量的方程的第i 个根的实部,而玑则必然是 以z 为变量的方程的第i 各根的实部设 q 。= c o s ( c o ) 日 则以即为零点的圆频率,令 0 q 吃 q o 万 p :2 5 6 ,:1 1 0 。 万 即为l s p 参数。l s p 参数的物理意义是方程p ( z ) 和g ( z ) 所在零点的圆频率。 ( 3 ) 计算p ( z ) 和q ( z ) 多项式的系数 通过求p ( z ) 和q ( z ) 多项式的系数然后通过求p ( z ) = o 和q ( z ) = 0 的根,来求l s p 参 数。设 p ( :) = :f i ) z 。 可以用长除法得到厶( f ) ,它是一个对称的多项式即五( f ) = f a l o f ) ,前5 项的系数 为 厶( f ) = 一再( f 1 ) 一( 群+ a l 1 一,) ,1 i 5 正( o ) = 1 设 v o i p 中g 7 2 3 1 语音编码算法的d s p 实现 同理可得 q ( z ) = :f q ( i ) z 1 尼( f ) = f q ( i 一1 ) 一( 群一日:1 _ f ) ,1 f 5 尼( o ) = 1 ( 4 ) 求p ( z ) = 0 和q ( z ) = 0 的根 首先计算方程的值的符号在哪两个之间有变化,然后通过一次牛顿弦截法,估计根。 由于零点在单位圆上,可设 z = e ,“ 可得 p ( c o ) = e - ,5 。 ( 0 ) ( 口7 5 。+ 8 75 。) + 厶( 1 ) ( e 4 。+ p 一4 。) + + 厶( 5 ) p 一o 。】 :2 e - j s 。 a o ) c o s 5 0 + f a l ) c o s 4 0 + - - + 挚 同理可得 q ( 。) = e - y s 。 厂d ( o ) - ( p 加+ 8 币。) + 矗( 1 ) ( g m + e 州。) + + 尼( 5 ) p 卅。 :2 8 。m 【矗( o ) c o s 5 0 + f o ( 1 ) - c o s 4 0 j + - + f q ,( 5 _ 2 】 p ( c o ) 、q ( c o ) 在o n 之间分别有5 个根。它们有以下的特性 1 ) 一q 去,1 z l o 所以可以将o n 的单位圆分为2 5 5 等分,然后比较相邻两等分的点的函数 值符号是否变化,以判断它们之间是否存在零点。 2 ) p ( 缈) 和q ( c o ) 的零点位置交替出现,且,( 甜) 的第一个零点位置比q ( c o ) 的 小。所以搜索时m 从0 开始,先搜索尸( 口) 的零点,找到以后,再切换为搜 索q ( m ) 的零点,找到以后,再切换为搜索p ( 国) 的零点。( 注:o 搜索 的末点为2 5 5 2 5 6 x ,这根据程序分析所得) 用一次牛顿弦截法估计零点的位置以搜索p ( c o ) 为例,设在 p ( o h ) p ( o ,) 0 n = o 1 8 j 1 4 2 2 ) m a x c o l c o l ( j ) 且l o t 一_ , 0 3 7 5 e e ( l ) 1 2 9 3 谐波噪声滤波 各个子帧的通过f i n 各自的谐波滤波器只( z ) 得到w 【n ,在时域表现为 聍】= , 忍】_ 局r i n 一上 ,0 n 5 9 l 的最大值为1 4 5 ,n - - l 最小为一1 4 5 ,所以计算时需要用到此帧以前的f 【n 的1 4 5 个点 的数据。 1 2 1 0l s p 解码 l s p 解码的任务就是从l s p 量化索引i 得到解码以后的l s p 矢量巨。l s p 解码不仅 存在于解码器端,而且在编码器端也要进行l s p 解码,这是为了给l s p 量化提供参数 e _ 1 0 1 2 1 0 1 根据量化索引l 计算l s p 解码矢量丘 根据 j = 小2 1 6 + j 2 - 2 8 + j 3 可以将1 分解为 t ,i = 1 , 2 ,3 在子矢量量化表 b a n d q n t t a b l e 。,i = 1 , 2 ,3 中用五索引可以得到量化以后的残余误差子矢量 。= b a n d q n t t a b l e 】,i = 1 ,2 ,3 则 瓦= 【瓦p 瓦p 瓦。, 类似于l s p 量化时,残余误差矢量的计算公式有 瓦= ( 只一) 一b ( 只一。一) 即 只= ( 瓦+ 置。) + 6 ( 只一。一只) c ) 第一章c - 7 2 3 1 算法原理 1 2 10 2l s p 解码矢量豆的稳定性测试和调整 设 m = 3 1 2 5 h z 对于采样频率为8 0 0 0 的数字系统。频率大小的变化,对应圆频率的变化为 尘虹万 8 k ,2 l s p 参数的值从0 2 5 6 变化对应于圆频率从o 石变化,所以m m 频率大小的变化对应 l s p 参数值的变化为 - 垒虹石 一。- 2 5 6 墨譬_ 2 是调整方法是:相邻l s p 参数之间间隔不能太小,如果太小对其间隔进行扩展,如 果多次扩展还是间隔太小,则使用上一帧的解码结果。具体步骤如下: ( 1 ) 调整e ,和蟊l o :如果瓦,。 2 5 2 则e ,1 0 = 2 5 2 ( 2 ) 设置调整次数a d u s t t i m e s 的初始值为1 ( 3 ) 扩展瓦。,藏,i = 1 9 之间的间隔: ( 3 1 ) 设仁1 ( 3 2 ) 如果 藏1 f + i e , 9 则用乏。代替e 后退出;否则跳到( 3 ) v o i p 中g 7 2 3 1 语音编码算法的d s p 实现 1 2 _ 10 3l s p 解码时的错误帧处理 在解码器端( 不包括编码器端的l s p 解码) ,如果由于传输的原因,接收编码信息出错, 那么l s p 解码将进行特殊的处理。编码信息出错有两个检测手段:一个是信道编码部分 检测到c r c 校验和错误,另一个是在解包编码信息时发现参数出现了不允许的值。当 出现错误帧时:l s p 解码参数修改如下: 。m = 4 ;l s p 量化索引固定为0 ,即i o ; 计算残余误差矢量的固定预测值b = 2 3 3 2 1 2 1 1l s p 插值 由于在一帧中只计算最后一个子帧的l s p 参数,编码器端并没有将其它子帧的l s p 参 数传输给解码器端,所以解码器端必须用一种方法计算其它子

温馨提示

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

评论

0/150

提交评论