g729源码分析-6-固定码本搜索
2012-04-18 10:17
375 查看
g729自适应激励部分在基音周期中分析了.
g729固定码本搜索和g723极其类似,相应的算法可以参考g723的算法.
但作为编码的一个重要环节,又不得不提一下.
考虑到笔者那已经少得可怜的脑细胞,就一笔带过吧.
首先有这么一行:
gain_pit = G_pitch(xn, y1, g_coeff, L_SUBFR);
gain_pit 其实是自适应码本增益的一个估值(自适应码本的增益会在后继章节接着讲)
利用这个估值,得到固定码本的搜索目标信号
这个估值的计算公式是这样的:
39
Σ x
y
n=0
gain_pit = ------------------
39
Σ x
y
n=0
x
序列,就是代码中的目标语音信号xn
y
序列,就是代码中的y1数组,它是h1与综合滤波器卷积形成的
G_pitch 不但完成了这个估值计算,还计算了一些后继增益量化时会用到的一些项
保存在g_coeff,这些会在后继章节分析(大体也是求偏导之类的)
有了这个估值 gain_pit,就可以从目标语音信号xn中扣除自适应激励成份,
而得到固定码本的目标向量,
代码片段如下:
/* xn2[i] = xn[i] - y1[i] * gain_pit */
//lsc 扣除自适应激励,搜索固定码本
for (i = 0; i < L_SUBFR; i++)
{
L_temp = L_mult(y1[i], gain_pit);
L_temp = L_shl(L_temp, 1); /* gain_pit in Q14 */
xn2[i] = sub(xn[i], extract_h(L_temp));
}
很简单,就是做一个卷积,然后从xn中扣除
目标向量保存在xn2数组里头.
然后是一个看不懂的函数名 ACELP_Codebook
这个函数就是在做固定码本搜索了(g729没有可选项,不做多脉冲激励搜索)
这个函数和g723的ACELP_LBC_code函数算法是一模一样的.
为了节约网络流量,以及csdn的存储空间,以及笔者那少量可怜的脑细胞,不分析了.
有兴趣的读者可以参考笔者之前写g723关于这部分算法的文章:
http://blog.csdn.net/lsccsl/article/details/6842514
接下去的内容稍微做一个前赡介绍,
g729接下来就是做激励编码(自适应激励与固定码本激励),用的方法如前所述.
能量误差最小,求偏导.
林绍川
2012.4.18于杭州
g729固定码本搜索和g723极其类似,相应的算法可以参考g723的算法.
但作为编码的一个重要环节,又不得不提一下.
考虑到笔者那已经少得可怜的脑细胞,就一笔带过吧.
首先有这么一行:
gain_pit = G_pitch(xn, y1, g_coeff, L_SUBFR);
gain_pit 其实是自适应码本增益的一个估值(自适应码本的增益会在后继章节接着讲)
利用这个估值,得到固定码本的搜索目标信号
这个估值的计算公式是这样的:
39
Σ x
y
n=0
gain_pit = ------------------
39
Σ x
y
n=0
x
序列,就是代码中的目标语音信号xn
y
序列,就是代码中的y1数组,它是h1与综合滤波器卷积形成的
G_pitch 不但完成了这个估值计算,还计算了一些后继增益量化时会用到的一些项
保存在g_coeff,这些会在后继章节分析(大体也是求偏导之类的)
有了这个估值 gain_pit,就可以从目标语音信号xn中扣除自适应激励成份,
而得到固定码本的目标向量,
代码片段如下:
/* xn2[i] = xn[i] - y1[i] * gain_pit */
//lsc 扣除自适应激励,搜索固定码本
for (i = 0; i < L_SUBFR; i++)
{
L_temp = L_mult(y1[i], gain_pit);
L_temp = L_shl(L_temp, 1); /* gain_pit in Q14 */
xn2[i] = sub(xn[i], extract_h(L_temp));
}
很简单,就是做一个卷积,然后从xn中扣除
目标向量保存在xn2数组里头.
然后是一个看不懂的函数名 ACELP_Codebook
这个函数就是在做固定码本搜索了(g729没有可选项,不做多脉冲激励搜索)
这个函数和g723的ACELP_LBC_code函数算法是一模一样的.
为了节约网络流量,以及csdn的存储空间,以及笔者那少量可怜的脑细胞,不分析了.
有兴趣的读者可以参考笔者之前写g723关于这部分算法的文章:
http://blog.csdn.net/lsccsl/article/details/6842514
接下去的内容稍微做一个前赡介绍,
g729接下来就是做激励编码(自适应激励与固定码本激励),用的方法如前所述.
能量误差最小,求偏导.
林绍川
2012.4.18于杭州
相关文章推荐
- g729源码分析-4-基音周期搜索(中)
- g729源码分析-4-基音周期搜索(中)
- g729源码分析-5-基音周期搜索(下)
- g729源码分析-3-基音周期搜索(上)
- g729源码分析-5-基音周期搜索(下)
- g729源码分析-3-基音周期搜索(上)
- g723源码详细分析-10-固定随机码本搜索
- Android拨号搜索机制源码分析
- MySQL查询优化器源码分析--多表连接优化算法之三,greedy_search(),搜索表之间的各种组合以得到最优的查询计划
- 分布式搜索Elasticsearch源码分析之二------索引过程源码概要分析
- g729源码分析-9-g729-解码
- wukong引擎源码分析之搜索——docid有序的数组里二分归并求交集,如果用跳表的话,在插入索引时会更快
- 【OpenCV】SIFT原理与源码分析:关键点搜索与定位
- ListView过滤搜索功能源码分析
- g729源码分析-开篇
- g729源码分析-2-共振锋感知加权
- Elasticsearch源码分析十四--搜索类型
- 【OpenCV】SIFT原理与源码分析:2.关键点搜索与定位
- 悟空分词的搜索和排序源码分析之——索引
- g729源码分析-7-增益量化