G.723.1双速率语音编解码算法的DSP实现 高小波.郑烩 (中国科学技术大学自动化系,合肥230027) 摘 要:在介绍了G.723.1双速率编解码算法标准,S!LogiKc公司的DSP芯片KSI403LP的特性以及对G.723.1标准的C 源代码进行深入分析的基础上,对标准中的双速率语音编解码算法进行了优化,并且在KSI403I P上进行了实现,结果表 明可以得到较低的算法时延和极高的语音音质。 关键词:G.723.1:语音编码;VolP; ̄化 文章编号:1002—8331(2006)33—0097—03 文献标识码:A 中图分类号:TP391 Implementation of G.723.1 Dual Rate Codec Algorithm in DSP GA0 Xiao-bo.ZHENG Quan (Department of Automation,University of Science and Technology of China,Hefei 230027,China) Abstract:In the article,the G.723.1 dual rate codec algorithm and the features of KSI403LP(【sI Logic)are introduced at first.The G.723.1 algorithm is then optimized based on the fact that the C code of the Recommendation is deeply analyzed.Then this algorithm is realized on KSI403LP.The results indicate that the lower algorithm time complexity and satisfied synthetic speech quality are received. Key words:G.723.1;speech coding;VolP;optimization l 前言 目前.对适合于家庭和小型办公场所的Voice over IP (VolP)的解决方案的需求正在不断增长.G.723.1和G.729是两 种常用的低码率语音压缩标准 G.723.1标准是ITU组织于 1996年推出的一种双速牢语音编解码标准.能够将8 kHz采样 l6 bil的线性PCM语音信号压缩成6.3 Kbps或5.3 Kbps的比 特流.压缩比分别达到2O或24.并且两种速率下都能提供很 好的语音质量.因此G.723.1成为H.323的首选标准 在普通PC机上用标准C定点实现了G.723.1编解码算法 帧,用加权语音信号计算其开环基音周期(LOL),基音搜索范 围从18到142 利用计算得到的开环基音周期再构造一个谐 波噪声整形滤波器,和线性预测编码合成滤波器、共振峰感知 加权滤波器一起组成一个联合滤波器.计算联合滤波器的冲击 响应 再利用开环基音周期和冲激响应计算闭环基音周期.然 后从目标矢量中扣除自适应码本分量.并将闭环基音周期和残 差信号送到解码端。在高速牢(6.3 kbDs)下对激励信号进行多 脉冲最大似然量化(MP—MLQ);在低速率(5.3 kbps)下采用代 数码本激励线性预测(ACELP)。先用实际信号减去预测信号得 的基础上,准备存数字信号处理器(DSP)上实现该算法。由于 DSP系统对语音编码的实时性要求及DSP自身资源空间的局 到残差信号.再用一个脉冲序列通过组成滤波器来模拟残差信 号,在最小误差准则下,将得到的一系列参数如滤波器系数、脉 冲位置、脉冲幅度打包成一个比特流传送出去..整个编码器框 图如图1 限性.要求 将C程序移植到DSP之前必须先对算法进行优 化 本文存介绍了G,723,】语音编解码算法原理的基础上,对 该算法进行分析和优化,最后给出结论。 厂— 2 G.723.1编解码算法 LPC转 !墨塾里些堡 l .1 ISP转 模拟 }2.1编码器原理 G.723.1编码算法使用线性预测——合成编码来进行语音 分 帧 求 换为LSP『 1换为LPC r__1解码器 构成感 知加权 滤波器 构成谐 自适应 高 通 滤 取 LPC 及其他声音信号的编码 G.723.1编解码算法来对语音信号 波噪声 滤波器 码本搜索 进行压缩编码时.输入信号按帧读入 帧长为30 ms.在8 ooO Hz 采样时包含240个样本值..每帧信号都先经过高通滤波器除直 流(DC)成分后再分成4个子帧.每一个子帧送入一个l0阶线 系 波 数 开环基 吲搜索 吲定 码本搜索 性预测编码器(T PC).计算LPC系数。最后一个子帧的LPC系 数采用预测分裂矢量量化器(PSVQ)量化.最终生成一个24比 特的子帧 量化前的LPC用束建立短时感知加权滤波器,整帧 图1 G.723.1编码框图 2.2解码器原理 解码器也同样采用分帧处理。首先将编码参数解码,重构 信号通过该滤波器后得到感觉加权语音信号 对于每两个子 基金项目:同家863高技术研究发展计划资助项目(2005AA103)。 作者简介:高小波(1981一),男(汉族),硕士,主要研究方向:嵌入式系统,语音处理;郑烃,副教授。博士。研究方向:智能控制,人工智能,模式识别 KDD 计算机工程与应用2006.33 97 维普资讯 http://www.cqvip.com
维普资讯 http://www.cqvip.com
e (1)=el— 广11 (4) 用的初始化代码 e (n+2)=e[(n lnod L )一 】O≤n≤6l bootloader的设计带有一个特殊的功能..这段DSP代码可 其中, 是第i个子帧的基音周期,e(n)是激励矢量。仔细分析 创建另一段特殊的代码 这段代码会被放在boodoader原来所 一下上面的公式,当L,<62时,e (n)=e (n+kL ),萁中n+kL ≤ 在的地方 当主机loader装载DSP应用程序的时候,它会推迟 63.k时整数。这样上面的公式义可以表示为: 装载这一段代码直至其他代码装载完毕。最后它会把这一段代 e (O)=e[-L;-2】 码装载进去 DSP的bootloader识别出这一段特殊的代码,它就 e (1)=e[-Lr-1】 会允许bootloader被覆盖.因此可以收回除了10words以外的 e (2+j)=eli—Lf]O ≤ (5) 所有空间 e (2+j)=e 【2 一L,I厶≤ ≤61 两阶段的启动过程也被考虑过 这种技术可以让所有的一 这种算法在ISI403LP中很容易实现,避开了求余运算.达 次性的初始化代码先执行.然后才把最终的应用程序装载到DSP 到了同样的效果 上。这样的话.初始代码可被覆盖。但是,后来发现这种方式没有 在固定码本搜索中.为了生成Dirac序列.也会遇到类似 必要.因为在其他方面做的优化已经足够支持所需要的功能。 的问题.同样可以用上述算法来解决。 4.2.2针对I.S14031 P的优化 5 结束语 4.2.2.1循环展开 经实际测试.若采用ITU组织提供的G.723.1的C语言源 使用具有并行能力的DSP开发软件时,一个重要的思想 代码.在LSI403LP上实现一帧语音数据5.3 kbifs的编解码需 就是充分利用DSP的字长和数目众多的运算单元.尽量把循 要450 ms.使用LSI403LP开发环境的最高优化级优化后时间 环体展开 通过增加每次循环中执行的指令数来减少总的循环 可降至160 ms 最终实现一路语音的G.723.1编解码程序空间 次数.可使得在同样的时钟周期内能运行更多的指令.提高了 约为18KB.数据/堆栈空间为32KB。试验表明.以男生、女生、 循环的效率 音乐等多种音源作为输入.系统具有良好的适应性,能够达到 4.2.2.2提高寄存器的利用率 通信质量。G.723.1编码器在定点DSP上实时实现.产生出了性 DSP芯片内部运算单元运行效率非常高.如果寄存器和数 价比极高的语音编解码系统.在数字通信、数字卫星系统、多媒 据总线之『日】的数据交换频繁.将使DSP的执行效率大打折扣。 体通信等领域有较广泛的应用前景。(收稿日期:2006年2月) 冈为DSP在进行内存操作时.往往需要若干周期的延迟.如 Load指令要有4个周期的延迟.Store指令需要2个周期的延 迟.为了减少耗时的内存操作,可以存程序进入循环体之前,将 参考文献: 要频繁使用的数据预先放人寄存器.然后反复调用.实践证明 [1】ITU-T.Dual Rate Speech Coder for Multimedia Communication 这种方法可以提高一部分效率 Transmitting at 5.3 and 6.3 kbiVs,ITU—T Rec0mmendati0n G.723.1fs1. 1996—03. 4.2.2_3 有效地重复使用内存 [2】LSI403LP Digital Signal Processor User’s Guide.LSI Logic Corpo- 有些内存只是在系统启动时被使用过。这些代码只有当 ration,2002. DSP重新启动时才会被执行.因此没有必要长时间占据这些宝 【3】王炳锡.语音编码【MJ.西安:西安电子科技大学出版社,2002. 贵的DSP内存。这些代码可分为两类。一类是负责装载和启动 『41杨行峻,迟惠生.语音信号数字处理『M1.北京:电Y-T ̄,T,版}十,1995. DSP应川程序的bootloader..另外一类是仅在系统启动时被调 『5】毕厚杰.多媒体信息的传输与处理『M】北京:A LOng电山版社,1999. (上接9O页) [2】ZORIN D,SCHRODER P,DEROSE A,et a1.Subdivision for model— 实现丁上述算法..图5为本文算法的实验结果 ing and animation[J].ACM SIGGRAPH Course Notes。1998,12. 实验中.通过与用户的变互.本文算法能够方便直观地对 【3]KOBBELT L,CAMPAGNA S,VORSATZ J.Interactive muhi-resolu- 网格局部实施精确编辑.特别足网格对象中的特征比较突fn的 tion modeling on arbitrary meshes[C]//Proceedings of SIGGRAPH 部位,如手指、四肢等尤其有效(如图5(a))。而对于特征非常 98,1998:105 114. 不突m的部位.如人头像中的眼睛、嘴唇等部位(如图5(b),右 『41 BO rsCH M,KOBBELT L.An intuitive frameworkfor real—time 图为眼部经编辑模型),编辑敛果还不理想。 freeform modeling[J].ACM Trans Graph,2004.23:630—634. [5l YOSHIZAWA S,BELYAEV A G,SEIDEL H P.Free—form skeleton— 5 结论 driven mesh deformations[C]//ACM Solid Modeling 2003,c2003: 目前.针对 维表面网格的局部编辑的系统和算法.在编 247—253. 辑的准确性、直观性和町控性方面都存在一定的 全面性..为 [6】TAM R,HEIDRICH W.Shape simpliifcation based Oil the medial axis transform[J].IEEE Visualization.2003—10:481—488. 此.奉文在研究了三维网格骨架产生和优化的基础上,提出一 [7】DIJKSTRA E W.A note on two problems in connexion with graph4CV/ 个通过绘图方式改变网格骨架曲线形状的局部网格编辑算法。 Numerishe Mathemetik.New York:ACM press,1 959(1):269—27 1. 经过实验表明,该算法能够实时、方便、 直观地实现三维网格局 【8l朱红斌,王文成,吴恩华, 维模型骨架的矫iv[j].软件学报,2004, 部特征的变形 但对于模型局部特征不太明显的区域的变形. 15(6):961—968. 效果不理想.需要进一步改进 (收稿13期:2006年2月) [9】HOPPE H.Progressive meshes[c】//C0 puter Graphics 30:Annual Conferenee Series,1996:99—108. 参考文献: [10】YAGOU H,OHTAKE Y,BELYAEV A G.Mesh smoothing via [1】SEDERBERG T W,PARRY S R.Free-form deformation of solid mean and median filtering applied to face normals[C]//Geometrie geometric models[J].Computer Graphics,1986。20(4):151—160. Modeling and Processing,2002:124—131. 计算机工程与应用2oo6-33 99
因篇幅问题不能全部显示,请点此查看更多更全内容