CN102903366A - 一种基于g729语音压缩编码算法的dsp优化方法 - Google Patents
一种基于g729语音压缩编码算法的dsp优化方法 Download PDFInfo
- Publication number
- CN102903366A CN102903366A CN 201210344525 CN201210344525A CN102903366A CN 102903366 A CN102903366 A CN 102903366A CN 201210344525 CN201210344525 CN 201210344525 CN 201210344525 A CN201210344525 A CN 201210344525A CN 102903366 A CN102903366 A CN 102903366A
- Authority
- CN
- China
- Prior art keywords
- search
- algorithm
- dsp
- coding
- speech
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种基于G729语音压缩编码算法的DSP优化方法,其特征在于按下列步骤进行:使用CCS3.3版本的DSP软件开发环境并将G729语音编码算法的开源源代码一直到TMS320C55X上,成功对语音编码;对算法中的LPC阶段进行多项式求根算法的改进,在固定码本搜索阶段,对码本的搜索算法进行了优化,在矢量距离的计算过程中,对距离搜索的过程进行了简化;对编译器进行设置;依次在C语言层面和汇编层面,对一些模块函数进行改写。本发明显著效果是:提供了一种基于G729语音压缩编码算法的DSP优化方法,具有编码时间短的优点,能够解决多路语音在DSP上实时编码的困难。
Description
技术领域
本发明涉及一种基于嵌入式的语音压缩算法的优化技术。在TMS320C55X系列DSP上实现多路语音的实时控制,其中语音压缩编码协议为G729。
技术背景
数字语音通信是当前信息产业中发展最快,普及面最广的业务。移动通信数字化,拓展了信道容量,改善了服务质量,促进了这一产业的飞速发展。相比于模拟语音,数字语音具有抗干扰强,保密性好,管理和控制方便,生产成本低等优点。随着社会的发展,人们对通信的要求越来越高。P2P的语音通信技术已经非常成熟,然而在越来越多的场合,人们产生一对多,多对多的语音通信需求。同时随着ISDN技术的推广,VOIP技术,多媒体技术的快速发展,这一想法也能够实现了。
随着人们对语音通信提出了越来越高的带宽要求,语音压缩编码技术也取得了飞速的发展,特别是中低码率的语音编码技术方面。16kb/s,8kb/s的压缩编码技术已经得到标准化和产品化。由于VOIP,多媒体通信,综合业务数字通信,移动通信等业务的快速发展,基于G。728,G729的产品的嵌入式实时开发正逐渐成为研究的热点问题。尽管G729算法具有码率低,合成语音质量高等优点,但是其具有较高的算法复杂度,嵌入式实时应用成为一大难题。如何高效的压缩语音数据来缩短G729算法编码时间以达到实时性的要求是有待解决的一个重要问题。
发明内容
为了缩短G729算法在TMS320C55X系列DSP上的语音编码时间,以满足多路语音实时压缩编码的要求。本发明通过对G729算法的各个阶段算法进行改进,在不影响编码效果的同时,大大减少在DSP上运行的时间,达到对语音编码的实时性要求。
.729协议过程
G729采用8kb/s共轭结构-代数码激励线性预测编码——语音编码器,它是基于CELP编码模型的。编码器对语音帧进行处理,语音以每秒8000样点采样,每10ms对应80个样点为1帧,每帧对语音信号进行分析,提取CELP模型的参数(LPA系数,自适应码数与固定码数的索引和增益),这些参数被编码并传输。在译码端,这些参数被恢复成激励参数和合成滤波器参数,是激励通过短时何曾滤波器来得到重建语音。短时语音滤波器是基于10阶线性预测(LP)滤波器。长时合成滤波器采用自适应码书方法实现。重建语音计算出来以后,在利用后滤波提高语音质量。编码过程见图1,G.729算法流程见图2。
分析及优化原理
短时分析综合滤波器是一个基于10阶线性预测(LP)的滤波器。这个滤波器的传递函数被定义为:
其中 是量化后的线性预测(LP)系数。对于每一个10ms的语音帧,先用一个30ms的不对称窗口对数据进行加窗,计算自相关。即是说,每80个样点(10ms),计算一次加窗语音的自相关系数,通过莱文森(Levinson)算法得到滤波器的系数。然后把LP系数转化为线谱对LSP系数,并用于量化和插值。插值后的量化和未量化滤波器系数又被转换回LP滤波器系数,目的是为每一个子帧构建综合加权滤波器。LP向LSP转换过程是:LP滤波器系数转化为线谱对系数(LSP)用于量化和插值。对于一个10阶的LP滤波器来说,LSP系数定义为下面两个多项式等式的根:
(2)
其中,,先把等间隔分成60个点,然后计算,在这些点上符号的改变来得到LSP系数。符号的改变就意味着根在这个区间内存在,接下来就把这个区间四等分,以跟踪得到更好的根。切比雪夫多项式用来计算,的根。在处多项式,,可以被写作:
在LPC阶段,矢量量化需要占用大量的时间,通过分析发现在LSP系数转化为LSF系数过程中,均要用到CHEBYSHEV多项式来实现线谱对的搜索,在搜索的过程,需要把等分为60份,在每一个小区间进行4次搜索,可以增加区间宽度和减少搜索次数来达到减少运算量的目的。通过反复验证,可以把划分成40个区间,每个区间进行2次搜索能保证正确性的情况下优化编码时间。
固定码本搜索及优化原理
固定码本是基于ISPP的代数码本结构,在这个码书中,码本矢量包含4个非零的脉冲。每个脉冲的幅度要么是-1,要么是1。位置如下表所示:
码本矢量由下面的式子给出:
(8)
固定码本搜索是通过最小化加权输入语音和加权输出重建语音的均方差来得到的。在闭环基音搜索过程使用的目标信号就是通过减去自适应码本的贡献更新的,,其中,是自适应码本增益。矩阵H定义如下,是一个下三角的托普列兹(Toepliz)矩阵,它的主对角线上是,次对角线上是。矩阵由h(n)的自行关组成,这个对称矩阵的元素如下:
能量E表示为:
聚焦搜索法用来进一步简化搜索的过程.预先计算一个门限值,每当进入下一次循环之前先进行检查.只有超过这个门限才进入下一次循环.由于进入循环的最大次数是固定的,使得码本搜索只占很少时间.这个门限基于相关值C.在进行码本搜索之前,需要算出相关值的绝对值的最大值为,相关值的平均值为。门限值就用下式给出:
进入第四次循环的条件是绝对相关值超过门限,其中。的值控制着码本搜索的比例。建议为0.5。注意这会造成可变的搜索时间。为了进一步控制搜索,进入最后一次循环的次数不能超过某个确定的最大值。在这里设置为180。
对矢量量化中距离计算的优化,在G729的码本搜索过程,有很多计算两个向量的最小距离的地方,如:
本发明提供了一种基于G729语音压缩编码算法的DSP优化方法,具有“编码时间”短的优点,解决了由于G729算法复杂度引起的编解码实时性问题。
为了达到上述目的,本发明所述的一种基于TMS320C5502的G729语音编码算法的优化方案,其关键在于按下列步骤进行。
步骤一、在PC机上面安装DSP的软件开发环境,使用CCS3.3版本;
步骤二、将G729语音编码算法的开源源代码移植到TMS320C55X上,并成功对语音编码;
步骤三、分别对G729语音编码算法中的LPC阶段,进行多项式求根算法的改进;在固定码本搜索阶段,对码本的搜索算法进行了优化;在矢量距离的计算过程中,对距离搜索的过程进行了简化;
步骤四、编译器层面,具体的设置情况为-g -k -pm -al -o3 –fr,其中-o3表示优化的级别,选择合适的优化级别有利于程序的优化,-pm表示使能文件级别的优化,-k表示生成对应的汇编文件,-g表示使用debug方式;
步骤五、C语言层面,在编码阶段和优化阶段,充分利用了TMS320C55X和编译器的特点,针对TMS320C55X DSP和CCS3.3编译器的特点,在C语言层面上,对一些模块函数进行改写,实现高效的循环和乘法成为最大的特点;
步骤六、 汇编层面,利用了编译器内嵌的汇编基本函数库来代替标准代码中的基本运算函数,大大减少代码运行时间;另外对一些特殊的代码段,比如“综合滤波器”,采用了手工汇编的方法,进一步加强了算法的实时性。
本发明是一种基于G729语音压缩编码算法的DSP优化方法,其特征在于按下列步骤进行: 使用CCS3.3版本的DSP软件开发环境并将G729语音编码算法的开源源代码一直到TMS320C55X上,成功对语音编码;对算法中的LPC阶段进行多项式求根算法的改进,在固定码本搜索阶段,对码本的搜索算法进行了优化, 在矢量距离的计算过程中,对距离搜索的过程进行了简化;对编译器进行设置;依次在C语言层面和汇编层面,对一些模块函数进行改写。本发明显著效果是:提供了一种基于G729语音压缩编码算法的DSP优化方法,具有编码时间短的优点,能够解决多路语音在DSP上实时编码的困难。
附图说明
图1 G729 编码方案图
图2 G729 算法流程图
图3 MATLAB中查看编解码语音波形和原始语音波形
图4 系统框图
具体实施方法
在PC机上面安装DSP的软件开发环境,使用CCS3.3版本。将G729语音编码算法的开源源代码移植到TMS320C5502上。为了考察移植后C代码的运行效率,利用CCS自带的Profiler工具对编解码函数的运行效率进行分析,从而对优化提供有效的指导,分析结果如表1所示。
LPC阶段1 | LPC阶段2 | LPC阶段3 | 固定码本搜索阶段 | 参数编码 | |
编码一帧的所需时钟个数 | 2864870 | 2473685 | 2187140 | 8371690 | 40478780 |
表1 算法优化前,编码器各部分所占用的执行时间
通过分析发现,编码的大部分时间耗费在LPC分析,码本搜索尤其是固定码本搜索阶段,矢量量化,所以算法优化主要集中在这些部分。在LPC阶段,矢量量化需要占用大量的时间,分析发现在LSP系数转化为LSF系数过程中,均要用到CHEBYSHEV多项式来实现线谱对的搜索,在搜索的过程,需要把(0,)等分为60份,在每一个小区间进行4次搜索,可以增加区间宽度和减少搜索次数来达到减少运算量的目的。通过反复验证,可以把(0,)划分成40个区间,每个区间进行2次搜索能保证正确性的情况下优化编码时间。对固定码本搜索部分的改进措施。因为G729固定码本搜索在40个可能的位置上进行,目标时使表达式最大。所以,首先用每一个脉冲去计算表达式,在同一个轨道中按重大到小的重新排列,然后选择最大的4个进行搜索。接下来再计算这几个脉冲的贡献,如果不符合要求再用深度搜索算法进行搜索。由于固定码本采用特殊的代数结构,仅含4个非零脉冲,所以可以利用这个特点进行快速深度搜索。G729采用四层嵌套循环的方法进行搜索,每一次嵌套加入一个脉冲的贡献。 要完全搜索一遍需要搜索8192次,为了减小搜索的次数,在进入最后循环前,预先算出一个门限值,只有前3个循环的贡献超过这个门限时才进行第4次搜索。其中,为平均相关,为最大绝对相关,为搜索百分比,经过测试取0.5比较合适。为了进一步控制搜索,进入最后一次循环的次数不能超过某个确定的最大值。在这里设置为180。对矢量量化中距离计算的优化,在G729的码本搜索过程,有很多计算两个向量的最小距离的地方。如式(18),对于每一个矢量,计算加权误差是,计算下一个误差时,用这个误差与计算结果进行比较,如果比在i为10 以前,加权误差已经大于,就可以停止计算。
如表2中所示,
LPC阶段1 | LPC阶段2 | LPC阶段3 | 固定码本搜索阶段 | 参数编码 | |
编码一帧的所需时钟个数 | 6141 | 141212 | 120150 | 153962 | 596819 |
表2 算法优化后各部分所占用的执行时间
算法优化前指令数1456013,算法优化后,对解码语音进行MOS测评,在保证正确的情况下,测试编码后耗费的指令为650597,大大提高了编码效率。
然后对编译器进行设置,CCS3.3具体的设置情况为-g -k -pm -al -o3 –fr,其中-o3表示优化的级别,-pm表示使能文件级别的优化,-k表示生成对应的汇编文件,-g表示使用debug方式。
C语言优化过程,利用inline关键字嵌入函数段,使用-oi<size>自动嵌入。生成高效循环代码;尽可能使用int类型作为循环计数变量,使用MUST_ITERATE pragma 来消除代码在循环周围的跳转,并帮助编译器生成高效的硬件循环;产生双乘操作,双乘操作是C55x的一个重要的硬件特性,代码中通过两个连续的MAC(乘加/乘减)指令来实现双乘操作。
汇编层面,利用了编译器内嵌的汇编基本函数库来代替标准代码中的基本运算函数,大大减少代码运行时间。另外对一些特殊的代码段,比如“综合滤波器”,采用了手工汇编的方法,进一步加强了算法的实时性;利用特殊的结构特点,比如双MAC硬件,并行操作和循环硬件,双MAC/MAS只能使用3个操作数,通过结构重组,DSP代码在算法和应用中3个操作数就足够了。结构重组的方法包括算法中隐含的对称性(对称FIR和复数乘法),循环的展开(块FIR,单采样FIR,矩阵乘法),多通道应用(用同一个滤波器处理不同数据流),多算法应用(用不同的算法处理同一个数据流),最小化流水线和IBQ(指令缓存队列)延迟,通过使用CPU寄存器保存数据来减少内存的访问;通过使用局部循环指令来减少内存的访问;重新安排变量和数据数组在内存中的位置,或者在运行时把数组临时复制到不冲突的内存中。
进行C语言级和汇编级的优化后,编码优化各个阶段的比较如表3中所示,编码指令周期数为417948。针对TMS320C5502芯片对编译器进行设置后,整个优化方案完成,各个部分最终的优化结果如表4所示,优化后的指令数为407306。
优化前 | 编译器优化后 | LPC编码优化后 | 固定码本优化后 | C语言优化后 | 汇编语言优化后 | |
编码一帧的指令周期数 | 8156240 | 1456013 | 650597 | 503487 | 417948 | 407036 |
表3 C语言级和汇编级的优化后,编码优化各个阶段的比较
LPC阶段1 | LPC阶段2 | LPC阶段3 | 固定码本搜索阶段 | 参数编码 | |
编码一帧的所需时钟个数 | 3858 | 48289 | 28350 | 149955 | 388253 |
表4 具体芯片设置编译器后的各部分最终优化结果
结论:代码优化前指令数650597,代码优化后,对解码语音进行MOS测评,在保证正确的情况下,测试编码后耗费的指令为407036,即0.4M。考虑到TMS320C5502的速度为300MIPS,一帧数据的时间为10ms,10ms时间为3M,考虑其他辅助程序的指令消耗,所以至少能实现五路语言实时编解码。
Claims (3)
1.一种基于G729语音压缩编码算法的DSP优化方法,其特征在于是按下列步骤进行:
步骤一、在PC机上面安装DSP的软件开发环境,使用CCS3.3版本;
步骤二、将G729语音编码算法的开源源代码移植到TMS320C55X上,并成功对语音编码;
步骤三、分别对G729语音编码算法中的LPC阶段,进行多项式求根算法的改进;在固定码本搜索阶段,对码本的搜索算法进行了优化;在矢量距离的计算过程中,对距离搜索的过程进行了简化;
步骤四、编译器层面,具体的设置情况为-g -k -pm -al -o3 –fr,其中-o3表示优化的级别,选择合适的优化级别有利于程序的优化,-pm表示使能文件级别的优化,-k表示生成对应的汇编文件,-g表示使用debug方式;
步骤五、C语言层面,在编码阶段和优化阶段,充分利用了TMS320C55X和编译器的特点,针对TMS320C55X DSP和CCS3.3编译器的特点,在C语言层面上,对一些模块函数进行改写,实现高效的循环和乘法成为最大的特点;
步骤六、 汇编层面,利用了编译器内嵌的汇编基本函数库来代替标准代码中的基本运算函数,大大减少代码运行时间;另外对一些特殊的代码段,比如“综合滤波器”,采用了手工汇编的方法,进一步加强了算法的实时性。
2.根据权利要求1所述的一种基于G729语音压缩编码算法的DSP优化方法,其特征在于:步骤二中,由于TMS320C55X系列DSP硬件配置的多路数据和地址并行及众多处理单元的特殊性,其代码移植的cmd文件直接关系到硬件资源的分配。
3.根据权利要求1所述的一种基于G729语音压缩编码算法的DSP优化方法,其特征在于步骤三所述不同阶段算法的改进:
在LPC阶段,矢量量化需要占用大量的时间,通过分析发现在LSP系数转化为LSF系数相互转化过程中,均要用到Chebyshev多项式来实现线谱对的搜索,在搜索的过程,需要把把 划分成40个区间,每个区间进行2次搜索能保证正确性的情况下优化了编码时间;
对固定码本搜索部分的改进措施,因为G729固定码本搜索在40个可能的位置上进行,首先用每一个脉冲去计算表达式,在同一个轨道中按重大到小的重新排列,然后选择最大的4个进行搜索;然后计算这几个脉冲的贡献,如果不符合要求再用深度搜索算法进行搜索,由于固定码本采用特殊的代数结构,仅含4个非零脉冲,利用这个特点进行快速深度搜索,G729采用四层嵌套循环的方法进行搜索,每一次嵌套加入一个脉冲的贡献, 要完全搜索一遍需要搜索8192次,为了减小搜索的次数,在进入最后循环前,预先算出一个门限值,只有前3个循环的贡献超过这个门限时才进行第4次搜索;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210344525 CN102903366A (zh) | 2012-09-18 | 2012-09-18 | 一种基于g729语音压缩编码算法的dsp优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210344525 CN102903366A (zh) | 2012-09-18 | 2012-09-18 | 一种基于g729语音压缩编码算法的dsp优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102903366A true CN102903366A (zh) | 2013-01-30 |
Family
ID=47575569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210344525 Pending CN102903366A (zh) | 2012-09-18 | 2012-09-18 | 一种基于g729语音压缩编码算法的dsp优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102903366A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103618555A (zh) * | 2013-11-27 | 2014-03-05 | 北京科技大学 | 一种海洋航线监测数据的压缩方法 |
CN103618555B (zh) * | 2013-11-27 | 2016-11-30 | 北京科技大学 | 一种海洋航线监测数据的压缩方法 |
CN107146627A (zh) * | 2013-04-29 | 2017-09-08 | 杜比国际公司 | 对更高阶高保真度立体声响复制表示进行压缩和解压缩的方法和装置 |
CN107483194A (zh) * | 2017-08-29 | 2017-12-15 | 中国民航大学 | 基于非零脉冲位置和幅度信息的g.729语音信息隐藏算法 |
CN109460229A (zh) * | 2018-09-17 | 2019-03-12 | 深圳壹账通智能科技有限公司 | 代码文件生成方法、装置、计算机设备和存储介质 |
-
2012
- 2012-09-18 CN CN 201210344525 patent/CN102903366A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107146627A (zh) * | 2013-04-29 | 2017-09-08 | 杜比国际公司 | 对更高阶高保真度立体声响复制表示进行压缩和解压缩的方法和装置 |
CN107146627B (zh) * | 2013-04-29 | 2020-10-30 | 杜比国际公司 | 对更高阶高保真度立体声响复制表示进行压缩和解压缩的方法和装置 |
US10999688B2 (en) | 2013-04-29 | 2021-05-04 | Dolby Laboratories Licensing Corporation | Methods and apparatus for compressing and decompressing a higher order ambisonics representation |
US11284210B2 (en) | 2013-04-29 | 2022-03-22 | Dolby Laboratories Licensing Corporation | Methods and apparatus for compressing and decompressing a higher order ambisonics representation |
US11758344B2 (en) | 2013-04-29 | 2023-09-12 | Dolby Laboratories Licensing Corporation | Methods and apparatus for compressing and decompressing a higher order ambisonics representation |
US11895477B2 (en) | 2013-04-29 | 2024-02-06 | Dolby Laboratories Licensing Corporation | Methods and apparatus for compressing and decompressing a higher order ambisonics representation |
CN103618555A (zh) * | 2013-11-27 | 2014-03-05 | 北京科技大学 | 一种海洋航线监测数据的压缩方法 |
CN103618555B (zh) * | 2013-11-27 | 2016-11-30 | 北京科技大学 | 一种海洋航线监测数据的压缩方法 |
CN107483194A (zh) * | 2017-08-29 | 2017-12-15 | 中国民航大学 | 基于非零脉冲位置和幅度信息的g.729语音信息隐藏算法 |
CN109460229A (zh) * | 2018-09-17 | 2019-03-12 | 深圳壹账通智能科技有限公司 | 代码文件生成方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101622664B (zh) | 自适应激励矢量量化装置和自适应激励矢量量化方法 | |
CN101542589A (zh) | 基音滞后估计 | |
CN101548317B (zh) | 自适应激励矢量量化装置和自适应激励矢量量化方法 | |
CN103493129B (zh) | 用于使用瞬态检测及质量结果将音频信号的部分编码的装置与方法 | |
CN1947173B (zh) | 分层编码装置及分层编码方法 | |
CN102903366A (zh) | 一种基于g729语音压缩编码算法的dsp优化方法 | |
EP1677287B1 (en) | A system and method for supporting dual speech codecs | |
CN102163430B (zh) | 采用信息隐藏技术进行amr-wb语音编码或解码的方法 | |
Agaram et al. | A characterization of speech recognition on modern computer systems | |
CN202615783U (zh) | 一种基于FPGA的Mel倒谱分析合成仪 | |
Itakura et al. | A hardware implementation of a new narrow to medium band speech coding | |
US20050256702A1 (en) | Algebraic codebook search implementation on processors with multiple data paths | |
CN103081007A (zh) | 量化装置及量化方法 | |
CN100416652C (zh) | 增强的amr编码器快速固定码本搜索方法 | |
WO1999041737A1 (en) | Method and apparatus for high speed determination of an optimum vector in a fixed codebook | |
Koc et al. | Text-to-Speech with Model Compression on Edge Devices | |
CN101609682B (zh) | 自适应多速率宽带不连续发送的一种编码器和方法 | |
Abhijna et al. | Implementation of CELP encoder using Vivado HLS | |
Chen et al. | Real-time speech communication system based on optimized G. 723.1 | |
Yang et al. | FAT-HuBERT: Front-End Adaptive Training of Hidden-Unit BERT For Distortion-Invariant Robust Speech Recognition | |
CN103489450A (zh) | 基于时域混叠消除的无线音频压缩、解压缩方法及其设备 | |
KR101168158B1 (ko) | 대수 코드북 검색을 위한 어드레스 생성기 | |
Prabhavalkar et al. | Extreme Encoder Output Frame Rate Reduction: Improving Computational Latencies of Large End-to-End Models | |
Yang et al. | The implementation and optimization of AMR speech codec on DSP | |
US9230553B2 (en) | Fixed codebook searching by closed-loop search using multiplexed loop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130130 |