Speex手册(八)——Speex窄带模式和Speex宽带模式
2014-02-23 10:23
471 查看
9 Speex窄带模式
这章介绍Speex如何在窄带(8kHz采样率)操作。这一模式下帧大小为20ms,对应160个采样点。每一帧又分成4个子帧,每个子帧40个采样点。
许多设计决策基于如下的初衷和假设:
1)使从先前帧提取的信息数量最小化(为了对丢包具有鲁棒性)
2)动态可选择的码本(LSP,音高和创新)
3)子向量固定码本(创新)
9.1 Whole-Frame分析
窄带模式下,Speex帧长为20ms(160个采样点),每帧又分成4个帧长5ms(40个采样点)的子帧。对于大多数窄带比特率(8kbps),在帧级接口的编码参数仅有线谱对子(Line Spectral Pairs,LSP)和一个全局激励增益gframe,如图9.1所示。其他编码参数都在子帧接口中。
图9.1 帧开环分析
每帧都会应用一个不对称的汉明窗,这个窗中心在第4个子帧,此时执行就会执行线性预测分析。因为线性预测系数(LPC)对量化不鲁棒,所以先将LPC转化为线谱对子(LSP)。LSP与第4个子帧有关并且与前3个子帧相关的LPC用当前和先前LSP系数线性内插获得。LSP系数然后转换回LPC滤波器A^(z)。非量化内插滤波器表示为A(z),能用做加权滤波器W(z),因为它对解码器是没必要的。
为了使Speex对丢包更鲁棒,在LSP系数量化之前不进行预测。LSP用向量量化(VQ)编码,其中高质量模式用30位,低质量模式用18位。
9.2 Sub-Frame Analysis-by-Synthesis
Analysis-by-Synthesis(AbS)编码器如图9.2所示。Speex与其他大多数CELP编解码器主要有3个方面的不同。第一,目前大多数CELP编解码器使用一个单一增益的分数基音估计算法,Speex用一个整数来编码基音周期,但使用一个3抽头预测器(3增益)。因而自适应码本ea
可表示为:
其中g0,g1和g2是共同量化的音高增益,e
是编解码器激励存储器。值得注意的是若基音周期少于子帧大小,我们在周期T重复此激励。例如,当n-T+1>=0,我们用n-2T+1代替。大多数模式下,基音周期用范围为[17,144]的7位编码,Bi系数用向量量化,其中高比特率(15kbps窄带及以上)用7位,低比特率(11kbps窄带及以下)用5位。
图9.2 子帧Analysis-by-synthesis闭环优化
目前许多CELP编解码器用移动平均(MA)预测来编码固定码本增益,这能获得稍微好点的编码,但依赖于先前已编码的帧。第二个不同点是Speex将固定码本增益编码为全局激励增益gframe与子帧增益修正系数gsubf的积。这样通过消除帧间依赖提高了丢包鲁棒性。子帧增益修正系数在搜索固定码本之前被编码(不是闭环优化)且每个子帧用0到3位,这依赖于比特率。
第三个不同是Speex用固定码本信号的子向量优化代替代数码本。每一个子帧分成5到20个采样点的子向量,每一个子向量从依赖于比特率的码本中选择且所有子向量串联形成一个子帧。例如,3.95kbps模式使用码本中32条目(5位)的20采样点子向量,意味着码本以每子帧10位编码或2000bps。另一方面,18.2kbps模式使用码本条目256(8位)的5采样点子向量,所以码本以每帧64位编码,或12800bps。
9.3 位分配
Speex定义了7种不同的窄带比特率,范围从250bps到24.6kbps,尽管不推荐使用5.9kbps以下的模式。每个模式的位分配如表9.1所示。每帧以模式ID开始,它以4位编码,允许范围从0到15,但是仅仅使用了前7个值(剩余值保留)。表中的参数以它们在比特流中的打包顺序列出,所有帧参数在子帧参数之前打包。某一子帧参数在下一子帧打包之前全部打包。注意参数描述中的“OL”表示参数是整帧的开环(open loop)估计。
表9.1 窄带模式位分配
目前为止,Speex没有进行平均意见得分(MOS,Mean Opinion Score)主观评测。为了获得理想的质量,表9.2列出了作者的主观意见。值得注意的是不同的人对语音质量的感觉是不同的,设计编解码器的人对主观意见可能有些偏见。最后,值得注意的是大多数编解码器(包括Speex)的编码质量因输入而异的。注意复杂度只是个近似值(精度0.5mflops,使用最低复杂度设置)。大多数模式下解码需要约0.5mflops(有感知增强为1mflops)。
表9.2 不同比特率的质量
9.4 感知增强
这部分在版本1.1.12之前有效。1.2-beta1版本(及之后)没包含,因为新的感知增强还没写好文档。
编解码器的这部分仅应用于解码器,甚至可以在不影响内部操作下改变。因为这个原因,这里提供和描述的实现仅作为参考。增强系统分为两部分。首先,合成滤波器S(z)=1/A(z)替换为增强滤波器:
其中a1和a2依赖于所用的模式,a3=1/r(1-(1-ra1)/(1-ra2)),r=0.9。增强的第二部分包括在激励域使用梳形滤波器增强音高。
10 Speex宽带模式(子带CELP)
对于宽带,Speex用一个正交镜像滤波器(QMF)将带宽一分为二。16kHz信号因此分成两个8kHz信号,一个代表低宽带(0-4kHz),另一个代表高宽带(4-8kHz)。低宽带用第9章描述的窄带模式编码,用这种方式“嵌入式窄带比特流”也能用窄带解码器解码。因为低宽带编码已经描述,这章仅描述高宽带编码。
10.1 线性预测
高宽带的线性预测部分类似于窄带的,唯一的区别是我们仅使用12位编码高宽带LSP,并用一个多级向量量化(MSVQ)。先用6位量化10个系数,然后用6位量化误差。
10.2 音高预测
这部分很简单:高宽带没有音高预测。这有两个原因,第一,通常在这一带宽内只有少量谐波结构(4kHz以上);第二,很难实现,因为QMF折叠4-8kHz为4-0kHz(反转频率轴),意味着谐波的位置已经不处于基频的倍数上。
10.3 激励量化
高宽带激励编码方式与窄带相同。
10.4 位分配
对于宽带模式,整个窄带帧在高宽带编码前打包,比特流的窄带部分定义在表9.1中,高宽带如表10.1所描述。对于宽带,模式ID与Speex质量设置相同。这意味着可能通过窄带解码器正确解码宽带帧,唯一的警告是如果同一个包内大于一帧,解码器需要跳过高宽带部分,以同步比特流。
表10.1 宽带模式下高带宽位分配
表10.2 宽带解码器不同比特率的解码质量
这章介绍Speex如何在窄带(8kHz采样率)操作。这一模式下帧大小为20ms,对应160个采样点。每一帧又分成4个子帧,每个子帧40个采样点。
许多设计决策基于如下的初衷和假设:
1)使从先前帧提取的信息数量最小化(为了对丢包具有鲁棒性)
2)动态可选择的码本(LSP,音高和创新)
3)子向量固定码本(创新)
9.1 Whole-Frame分析
窄带模式下,Speex帧长为20ms(160个采样点),每帧又分成4个帧长5ms(40个采样点)的子帧。对于大多数窄带比特率(8kbps),在帧级接口的编码参数仅有线谱对子(Line Spectral Pairs,LSP)和一个全局激励增益gframe,如图9.1所示。其他编码参数都在子帧接口中。
图9.1 帧开环分析
每帧都会应用一个不对称的汉明窗,这个窗中心在第4个子帧,此时执行就会执行线性预测分析。因为线性预测系数(LPC)对量化不鲁棒,所以先将LPC转化为线谱对子(LSP)。LSP与第4个子帧有关并且与前3个子帧相关的LPC用当前和先前LSP系数线性内插获得。LSP系数然后转换回LPC滤波器A^(z)。非量化内插滤波器表示为A(z),能用做加权滤波器W(z),因为它对解码器是没必要的。
为了使Speex对丢包更鲁棒,在LSP系数量化之前不进行预测。LSP用向量量化(VQ)编码,其中高质量模式用30位,低质量模式用18位。
9.2 Sub-Frame Analysis-by-Synthesis
Analysis-by-Synthesis(AbS)编码器如图9.2所示。Speex与其他大多数CELP编解码器主要有3个方面的不同。第一,目前大多数CELP编解码器使用一个单一增益的分数基音估计算法,Speex用一个整数来编码基音周期,但使用一个3抽头预测器(3增益)。因而自适应码本ea
可表示为:
其中g0,g1和g2是共同量化的音高增益,e
是编解码器激励存储器。值得注意的是若基音周期少于子帧大小,我们在周期T重复此激励。例如,当n-T+1>=0,我们用n-2T+1代替。大多数模式下,基音周期用范围为[17,144]的7位编码,Bi系数用向量量化,其中高比特率(15kbps窄带及以上)用7位,低比特率(11kbps窄带及以下)用5位。
图9.2 子帧Analysis-by-synthesis闭环优化
目前许多CELP编解码器用移动平均(MA)预测来编码固定码本增益,这能获得稍微好点的编码,但依赖于先前已编码的帧。第二个不同点是Speex将固定码本增益编码为全局激励增益gframe与子帧增益修正系数gsubf的积。这样通过消除帧间依赖提高了丢包鲁棒性。子帧增益修正系数在搜索固定码本之前被编码(不是闭环优化)且每个子帧用0到3位,这依赖于比特率。
第三个不同是Speex用固定码本信号的子向量优化代替代数码本。每一个子帧分成5到20个采样点的子向量,每一个子向量从依赖于比特率的码本中选择且所有子向量串联形成一个子帧。例如,3.95kbps模式使用码本中32条目(5位)的20采样点子向量,意味着码本以每子帧10位编码或2000bps。另一方面,18.2kbps模式使用码本条目256(8位)的5采样点子向量,所以码本以每帧64位编码,或12800bps。
9.3 位分配
Speex定义了7种不同的窄带比特率,范围从250bps到24.6kbps,尽管不推荐使用5.9kbps以下的模式。每个模式的位分配如表9.1所示。每帧以模式ID开始,它以4位编码,允许范围从0到15,但是仅仅使用了前7个值(剩余值保留)。表中的参数以它们在比特流中的打包顺序列出,所有帧参数在子帧参数之前打包。某一子帧参数在下一子帧打包之前全部打包。注意参数描述中的“OL”表示参数是整帧的开环(open loop)估计。
表9.1 窄带模式位分配
目前为止,Speex没有进行平均意见得分(MOS,Mean Opinion Score)主观评测。为了获得理想的质量,表9.2列出了作者的主观意见。值得注意的是不同的人对语音质量的感觉是不同的,设计编解码器的人对主观意见可能有些偏见。最后,值得注意的是大多数编解码器(包括Speex)的编码质量因输入而异的。注意复杂度只是个近似值(精度0.5mflops,使用最低复杂度设置)。大多数模式下解码需要约0.5mflops(有感知增强为1mflops)。
表9.2 不同比特率的质量
9.4 感知增强
这部分在版本1.1.12之前有效。1.2-beta1版本(及之后)没包含,因为新的感知增强还没写好文档。
编解码器的这部分仅应用于解码器,甚至可以在不影响内部操作下改变。因为这个原因,这里提供和描述的实现仅作为参考。增强系统分为两部分。首先,合成滤波器S(z)=1/A(z)替换为增强滤波器:
其中a1和a2依赖于所用的模式,a3=1/r(1-(1-ra1)/(1-ra2)),r=0.9。增强的第二部分包括在激励域使用梳形滤波器增强音高。
10 Speex宽带模式(子带CELP)
对于宽带,Speex用一个正交镜像滤波器(QMF)将带宽一分为二。16kHz信号因此分成两个8kHz信号,一个代表低宽带(0-4kHz),另一个代表高宽带(4-8kHz)。低宽带用第9章描述的窄带模式编码,用这种方式“嵌入式窄带比特流”也能用窄带解码器解码。因为低宽带编码已经描述,这章仅描述高宽带编码。
10.1 线性预测
高宽带的线性预测部分类似于窄带的,唯一的区别是我们仅使用12位编码高宽带LSP,并用一个多级向量量化(MSVQ)。先用6位量化10个系数,然后用6位量化误差。
10.2 音高预测
这部分很简单:高宽带没有音高预测。这有两个原因,第一,通常在这一带宽内只有少量谐波结构(4kHz以上);第二,很难实现,因为QMF折叠4-8kHz为4-0kHz(反转频率轴),意味着谐波的位置已经不处于基频的倍数上。
10.3 激励量化
高宽带激励编码方式与窄带相同。
10.4 位分配
对于宽带模式,整个窄带帧在高宽带编码前打包,比特流的窄带部分定义在表9.1中,高宽带如表10.1所描述。对于宽带,模式ID与Speex质量设置相同。这意味着可能通过窄带解码器正确解码宽带帧,唯一的警告是如果同一个包内大于一帧,解码器需要跳过高宽带部分,以同步比特流。
表10.1 宽带模式下高带宽位分配
表10.2 宽带解码器不同比特率的解码质量
相关文章推荐
- 浅析聊天机器人的技术和前景 .
- 转自CSDN,关于状态机
- 火狐完整版下载地址
- 我看智能手环手表:机遇只在医疗健康领域
- UVa11127 - Triple-Free Binary Strings
- poj 2677 Tour(双调欧几里德旅行商问题,dp)
- Unity3D游戏制作(三)——移动平台上的角色阴影制作
- EASY_PAT_ADVANCED LEVEL 1008_简单的面向对象 队列的使用
- 连接的价值——汇聚信息
- 图说微积分(六)泰勒级数
- 《高效学习OpenGL》 之 显示列表实例 glCallList(),glGenLists(),glNewList(),glEndList()
- visio2010去除直线交叉处的跨线
- 关于【分页显示】的一些方法
- 为一个不爱的人难过太不值了
- 将Android和iOS设备屏幕映射到电脑屏幕工具
- 4年之后我们又相见了
- 有时,爱也是种伤害.残忍的人,选择伤害别人,善良的人,选择伤害自己.
- 黑马程序员---UDP传输
- dblink传输clob字段三种解决方案
- UVa 11729 Commando War 贪心