g729源码分析-3-基音周期搜索(上)
2012-04-11 23:08
267 查看
基音周期搜索,是自适应码本搜索的一个重要依据,
自适应码本的搜索就是在基音周期附近进行的.
和g723的基音周期搜索不同,g729的基音周期搜索搜索也更为精细
g729把基音周期的搜索分成3段,取了每一段中自相关的极值,
三段区间分别为[20,39] [40,79] [80,143]
这三个区间的权值是不一样的,以0.85递减
这个选取归规则可以从itu的文档里看出来,选出基音周期的值较小.
避免选则了基音周期的倍数
另外,itu的基音周期较短的情况下,基音周期的搜索会精细的分数级
这里就涉及到一些升抽样的算法,在一些处理上,itu也采用了一些取巧
的做法,这里就分数基音周期的情况做一些分析
首先搜索出整数的基音周期,方法上面已经讲述了
//lsc 开环基音搜索,分成三个区间搜索,不一定会取最大的,而是尽量取基音周期小的,比例阀值大约为0.85
T_op = Pitch_ol(wsp, PIT_MIN, PIT_MAX, L_FRAME);
然后是在整数基音周期附近,搜索分数基音周期,解析度为1/3
先来回顾一来如何进行升抽样的.
我们先来回顾一些信号处理里面的调制与抽样的一些性质.
在离散的抽样处理,实际上是用一个等间隔的单位信号与被抽样的信号进行乘积(这点很容易理解)
即,设 x
是原始离散信号 对它进行每隔3个点一次抽样,抽样的信号可以表示为
y
=x
*t
, 其中t
=1当n%3==0
再从频域角度来看y(e^jw) x(e^jw) t(e^jw) 我们知道时域上的乘积对应频域的卷积(这个奥本海姆的信号与系统中有详细推导)
可以证明t(e^jw)在频域上也是一系列的冲激串组合
y(e^jw)实际是x(e^jw)在频域上复制n份.如果抽样满足香农定理,即只要对y
进行低通滤波,就可以完全是从y
中恢复x
即所谓的升抽样.
当然在g729中不用考虑满不满足香农定量,我们要做的就是升抽样,而且很显然,我们需要的滤波器在频域上就是一个矩形.
它的傅里叶级就是sinc函数(奥氏的信号与系统有详细推导)
于是我们就在g729中看到了相应的升抽样代码,就是将时域的离散信号(原始语音抽样或者相关)与sinc的值(定义在一个数组inter_3)
相乘,就完成了升抽样,然后进行分数级别的基音周期搜索.
很晚了,困了
笔者将在下章结合代码对分数基音周期再做进一步的说明.
祝各位编程愉快!
林绍川
2012.4.11于杭州
自适应码本的搜索就是在基音周期附近进行的.
和g723的基音周期搜索不同,g729的基音周期搜索搜索也更为精细
g729把基音周期的搜索分成3段,取了每一段中自相关的极值,
三段区间分别为[20,39] [40,79] [80,143]
这三个区间的权值是不一样的,以0.85递减
这个选取归规则可以从itu的文档里看出来,选出基音周期的值较小.
避免选则了基音周期的倍数
另外,itu的基音周期较短的情况下,基音周期的搜索会精细的分数级
这里就涉及到一些升抽样的算法,在一些处理上,itu也采用了一些取巧
的做法,这里就分数基音周期的情况做一些分析
首先搜索出整数的基音周期,方法上面已经讲述了
//lsc 开环基音搜索,分成三个区间搜索,不一定会取最大的,而是尽量取基音周期小的,比例阀值大约为0.85
T_op = Pitch_ol(wsp, PIT_MIN, PIT_MAX, L_FRAME);
然后是在整数基音周期附近,搜索分数基音周期,解析度为1/3
先来回顾一来如何进行升抽样的.
我们先来回顾一些信号处理里面的调制与抽样的一些性质.
在离散的抽样处理,实际上是用一个等间隔的单位信号与被抽样的信号进行乘积(这点很容易理解)
即,设 x
是原始离散信号 对它进行每隔3个点一次抽样,抽样的信号可以表示为
y
=x
*t
, 其中t
=1当n%3==0
再从频域角度来看y(e^jw) x(e^jw) t(e^jw) 我们知道时域上的乘积对应频域的卷积(这个奥本海姆的信号与系统中有详细推导)
可以证明t(e^jw)在频域上也是一系列的冲激串组合
y(e^jw)实际是x(e^jw)在频域上复制n份.如果抽样满足香农定理,即只要对y
进行低通滤波,就可以完全是从y
中恢复x
即所谓的升抽样.
当然在g729中不用考虑满不满足香农定量,我们要做的就是升抽样,而且很显然,我们需要的滤波器在频域上就是一个矩形.
它的傅里叶级就是sinc函数(奥氏的信号与系统有详细推导)
于是我们就在g729中看到了相应的升抽样代码,就是将时域的离散信号(原始语音抽样或者相关)与sinc的值(定义在一个数组inter_3)
相乘,就完成了升抽样,然后进行分数级别的基音周期搜索.
很晚了,困了
笔者将在下章结合代码对分数基音周期再做进一步的说明.
祝各位编程愉快!
林绍川
2012.4.11于杭州
相关文章推荐
- g729源码分析-3-基音周期搜索(上)
- g729源码分析-4-基音周期搜索(中)
- g729源码分析-4-基音周期搜索(中)
- g729源码分析-5-基音周期搜索(下)
- g729源码分析-5-基音周期搜索(下)
- g729源码分析-6-固定码本搜索
- g729源码分析-9-g729-解码
- Elasticsearch源码分析十四--搜索类型
- g723源码详细分析(四) 感知加权与基音周期搜索
- sphinx源码分析之搜索(search)
- [Android源码分析]蓝牙搜索过程中你所不知道的小细节
- g729源码分析-7-增益量化
- [Android源码分析]蓝牙搜索过程分析
- g729源码分析-7-增益量化
- g729源码分析-10-后置滤波处理(一)
- solr分布式搜索源码分析
- 【OpenCV】SIFT原理与源码分析:关键点搜索与定位
- 天网搜索TSE部分源码分析-url.cpp
- g729源码分析-8-内存更新打包
- g729源码分析-11-后置滤波处理(二)