g729
飞天大蟾蜍
这个作者很懒,什么都没留下…
展开
-
g729源码分析-开篇
完成了g723,打算先看看g729.大致扫了一篇编解码框图.都是基于10阶线性预测(10e lpc)看到了熟悉的莱文森德宾递推,基音周期搜索等。感知加权滤波器的设计有所不同。自适应激励与固定码本激励部分基本都差不太多。g729的处理的数据块为10ms,80个采样,相对g723编码时延更低。g729的高通滤波也比较纠结,阶数比g723的更高,让笔者不能原创 2012-01-30 23:28:03 · 6078 阅读 · 1 评论 -
g729源码分析-8-内存更新打包
得到g729和自适应码本增益与固定码本增益后,就可以根据两者解码出当前帧的激励,然后存放在历史激励数组当中即更新自适应激励码本代码片段: for (i = 0; i { /* exc[i] = gain_pit*exc[i] + gain_code*code[i]; */ /* exc[i] in Q0 gain_原创 2012-05-23 07:31:27 · 1639 阅读 · 0 评论 -
g729源码分析-10-后置滤波处理(一)
后置滤波处理后置滤波处理,大致有以下几个步骤step 1: 长时预测这段代码的主要目的是利用语音的长时相关来加强当前的语音信号做法是在基音延迟附近搜索最佳基音延迟,利用历史解码出来的激励信号对当前的激励信号做一个加权step 2:共振峰感知加权,这个不用说了,加强共振峰处的能量step 3:倾斜被偿,修正因为共振峰感知加权引入的频谱倾斜原创 2012-06-05 21:02:09 · 2352 阅读 · 0 评论 -
g729源码分析-7-增益量化
现在来分析g729的增益量化,这里包含两个增益,一个是自适应码本的增益gp,一个是固定码本的增益gc由于自适应码本与固定码本已经被搜索出来了,就可以根据这两级码本,与反量化的Az系数进行卷积,得到解码的语音信号(包含未知变量gc与gp)利用这个解码的语音信号与目标语音信号方差最小为准则,在增益码本里做搜索,搜索出最佳增益即itu文档中的3.9节,公式63.原创 2012-05-03 17:59:54 · 1721 阅读 · 5 评论 -
g729源码分析-9-g729-解码
现在来分析g729的解码.从g729的测试代码看出来,解码的过程被清晰地分成了两个部分.第一部分,就解码出lpc预测系数与激励,合成语音.第二部分,进行感加权,倾斜补偿这些与g723的处理是极其类似的,少了静音压缩,这样就少了一大块要分析的代码了先来看第一部分,也就是合成语音的部分Decod_ld8k 函数名的意思就是长延时8k解码器原创 2012-05-27 23:32:03 · 3442 阅读 · 0 评论 -
g729源码分析-6-固定码本搜索
g729自适应激励部分在基音周期中分析了.g729固定码本搜索和g723极其类似,相应的算法可以参考g723的算法.但作为编码的一个重要环节,又不得不提一下.考虑到笔者那已经少得可怜的脑细胞,就一笔带过吧.首先有这么一行: gain_pit = G_pitch(xn, y1, g_coeff, L_SUBFR);gain_pit 其实是自适应码原创 2012-04-18 10:17:49 · 1700 阅读 · 0 评论 -
g729源码分析-5-基音周期搜索(下)
前面两节讲完了g729基音周期搜索的基本流程与依据这里结合代码,进一步讲述这一过程整数基音周期搜索比较简单分成三段搜索,每段的权值不同,这在之前分析过了,不详述了分数基音周期搜索是针对每个子帧进行的每个子帧在开环基音周期附近,搜索闭环基音周期首先构造出冲激响应 W(z)/A(z) 即感知加权滤器和综合滤波器串联而成的系统代码片段:原创 2012-04-17 14:53:05 · 2549 阅读 · 0 评论 -
g729源码分析-4-基音周期搜索(中)
上一节对分数基音周期搜索作了文字说明,笔者画了几幅图,对分数基音周期搜索里的升抽样进一步说明图1:表示一个带限的离散时间信号的傅里叶变换,它必然是以2 pi为周期的函数.图2:当我们用 t[n]=1当n%3==0 对语音信号进行抽样时,t[n]的频谱图如图2所示,图3:图1与图2的卷积,因为t[n]的频谱是一连串的冲激串,相当于将语音原创 2012-04-16 13:38:14 · 1735 阅读 · 0 评论 -
g729源码分析-3-基音周期搜索(上)
基音周期搜索,是自适应码本搜索的一个重要依据,自适应码本的搜索就是在基音周期附近进行的.和g723的基音周期搜索不同,g729的基音周期搜索搜索也更为精细g729把基音周期的搜索分成3段,取了每一段中自相关的极值,三段区间分别为[20,39] [40,79] [80,143]这三个区间的权值是不一样的,以0.85递减这个选取归规则可以从itu的文档里看出来,原创 2012-04-11 23:08:41 · 1983 阅读 · 0 评论 -
g729源码分析-2-共振锋感知加权
不同于g723固定系数的共振峰感知加权g729的共振峰感知加权是自适应的.perc_var 这个函数来对共振峰感加权进行估值我们先看itu的文档 3.3节 的式30,这是一个判断语音频谱是否平坦的一个条件.因为人类语音的频谱有个特点,越高频的共振峰的能量会越弱.而共振峰感知加权要注意这个现象,如果频谱倾斜了(高频共振峰能量弱),要加强加权系数根据原创 2012-04-11 14:05:52 · 2195 阅读 · 0 评论 -
g729源码分析-1-lpc分析
g729编码分析了大部分,编码总体框架和g723有些类似.均是基于lpc分析的码本激励编码.g729提供了更低的编码延迟(10ms)g729的第一步Pre_Process照样是高通滤波,滤除低频噪声.Coder_ld8k 为编码主体函数Autocorr 第一步,计算自相关,根据lpc预测阶数10,从R(0)算到R(10),(类似g723) Lag_w原创 2012-04-11 11:07:45 · 3372 阅读 · 0 评论 -
g729分析笔记
分析g729的一些零碎笔记,原来随手扔在新浪微博,太零碎了,这里做一个汇总。729感知加权的问题,同723一样,仍然对高频分量做一个估值,高频低,则认为频谱是倾斜的。要感知加权的时候应做适当的补偿。因为人类的语音信息,在前两个共振峰能量较大,高频共振峰幅度则会依次回落。对比723,729引入了感知加权自适应机制,即,两个共振峰的位置如果太接近了,带宽扩展有可能导原创 2012-03-28 14:14:27 · 2544 阅读 · 2 评论 -
g729源码分析-11-后置滤波处理(二)
g729的长时后置滤波,最后还有一些细节处理会再次升抽样,用一个129的样点对激励进行升抽样,并与search_del的升抽样进行比较,哪个相关大选取哪个 /* Filtering with long filter */ compute_ltp_l(ptr_sig_cadr, ltpdel, phase, ptr_sig_pst0,原创 2012-07-05 19:59:35 · 2134 阅读 · 0 评论