4 lsp系数量化
现在来分析这个
10 lsp系数已经计算出来了,由于lsp的性质,可以将它们分成若干段,分别量化
它们将会被分成 3,3,4这三个分矢量
每个矢量都会有一个256的码本表(大概是这么多的,可以直接计算一下那个数组的大小)
Lsp_Qnt 这个函数,执行lsp量化的过程,会形成一个lsp三个分矢量在码本表里的下标索引
首先我们看到每个lsp系数被进行了加权
权值就是与相邻lsp距离大的那个值的倒数,也就是说,一个lsp系数如果位置有点"偏",那么
它在量化中的比重就小了
代码片段,这里就不列出计算距离的那一部分了
/* Invert the differences */ //lsc权值是距离的倒数
//lsc 为什么选用0x20,这是因为div_s要求被除数一定要小于除数,而0x20是一定满足这个条件的,这导致本应用0x80表示
1,最后的结果是扩大2^13次方
Tmp0 = (Word16) 0x0020 ;
for ( i = 0 ; i < LpcOrder ; i ++ ) {
if ( Wvect[i] > Tmp0 )
Wvect[i] = div_s( Tmp0, Wvect[i] ) ;
else
Wvect[i] = MAX_16 ;
}
注意取倒数的Tmp0 =0x0020,这个值选得是有依据的,保证itu的除法不出错
然后对权值进行归一化
去除直流分量,这是由于itu采用的是定点数,所以目标向量的值不宜过大,去除直流分量后,从
直流分量的定义,可以看出来,大概会在+-20之间
*/ //去除直流分量 lsp参数尽量减小,使码本里的值不会太大,减少计算的bit位(这可以从码本里的值看出来)
for ( i = 0 ; i < LpcOrder ; i ++ ) {
CurrLsp[i] = sub( CurrLsp[i], LspDcTable[i] ) ;
PrevLsp[i] = sub( PrevLsp[i], LspDcTable[i] ) ;
}
这里考虑到lsp的相关性,还应扣减之前lsp的值的12/32,进一步减小目标向量值的大小
*/ // 12/32将以前的lsp进行衰减,量化差值
for ( i = 0 ; i < LpcOrder ; i ++ ) {
Tmp0 = mult_r( PrevLsp[i], (Word16) LspPrd0 ) ;
CurrLsp[i] = sub( CurrLsp[i], Tmp0 ) ;
}
LspPrd0 就是12/32,即它是扩大了32767倍的这是由于mult_r缩小计算后的值,所以预先扩大12/32
在码本表里搜索,采用的方式是欧式距离最短的那个码本向量的下标,做为量化的结果(当然,要乘上权值后搜索),
代码片段
/*
g723里的公式,经过推演实际上为 (E - Eb)^2 * W E即为去除直流分量的,并且做了预测差值的项,即标准中的 en
(3.4) ,于是在 Lsp_Svq里量化时,直接计算 Eb为码本里的值
只需要计算 w(2 Eb * E - Eb^2)的最大值即可,因为 E^2是固定的,从这里看出w的扩大倍数,对计算结果无影响
*/
return Lsp_Svq( CurrLsp, Wvect ) ;
Lsp_Svq 这个就是搜索欧式距离最小的那个码本向量 search vector quat(呵呵,看函数名应该是这个意思)
注意,并没有完整地计算欧式距离,因为E^2是固定的,只需要计算w(2 Eb * E - Eb^2)最大即可,
推导
w(E^2 - 2 Eb * E + Eb^2),本应计算此式的最小值,因为E^2不变,所以只需计算w(2 Eb * E - Eb^2)最大
代码片段较为简单,此处不列举了
至此,完成了声道参数的编码过程.接下来,就是要对激励进行编码了(也就是逆滤波后的残差信号)
待续....
林绍川
2011.5.15 于杭州
分享到:
相关推荐
文件“Multi Switched Split Vector Quantizer.pdf”可能详细介绍了多切换分段矢量量化技术。这种技术通过动态地选择最佳的子码书,根据输入信号的不同部分,来进一步优化量化效果。这样可以适应语音的动态变化,...
5. **源码阅读与分析**:如何阅读和理解Lisp源码,识别函数定义、调用和参数处理。学习如何调试和修改现有代码以适应特定需求。 6. **LSP扩展开发**:如果打算使用这些通用函数来构建自己的LSP服务器,需要掌握如何...
贱人工具箱源码汇总
快速建块 源码 快速建块 源码 快速建块 源码 快速建块 源码 快速建块 源码 快速建块 源码 快速建块 源码
自行研究学习。分享个早期搜集学习的lisp源码
标题中的“lsp分析方法”指的是“Local Synchronization Pattern(局部同步模式)”分析方法,这是一种在生物节律研究中广泛应用的技术。生物节律是指生物体内存在的自然周期性变化,如24小时的昼夜节律、月度的潮汐...
### G.723.1语音编码器的实现与应用 #### 一、引言 随着互联网技术在全球范围内的快速发展,特别是Internet和Intranet(企业内部互联网)的普及,分组语音技术(Packet Speech Switching)变得越来越重要。为了...
本文将深入探讨“某CAD结构插件”的源代码,特别是LSP(AutoLISP)源代码,这是一种广泛用于AutoCAD中的编程语言。 LSP(AutoLISP)是基于LISP语言的一个方言,专为AutoCAD设计,使得用户能够创建自定义命令、脚本...
CAD边长标注插件
创建与更改视口比例-源码! 创建与更改视口比例-源码! 创建与更改视口比例-源码! 创建与更改视口比例-源码!
源码的分析和理解对于学习LSP的工作原理以及如何定制自己的LSP服务至关重要。 2. **LSP安装程序源码**:LSP服务的安装通常需要注册DLL到系统中,并将服务设置为网络堆栈的一部分。这个安装程序源码会展示如何正确地...
天正建筑源码20110714 lisp文件,源码公开, 天正建筑源码20110714 lisp文件,源码公开, 天正建筑源码20110714 lisp文件,源码公开, 天正建筑源码20110714 lisp文件,源码公开, 天正建筑源码20110714 lisp文件,...
非常好用(旋转复制)CAD插件重要的是lsp源码,用过的都说非常好。不信你就下载来用。
LSP实现挟持网络 lsp 网络挟持 浏览器挟持
本文将对一个名为“zbbz.LSP.txt”的LISP程序进行深入分析,该程序旨在实现一键坐标标注功能,不仅支持不同版本的CAD软件,而且不受操作系统版本限制。通过快捷键`zbbz`即可快速启动,帮助用户轻松完成坐标标注任务...
lsp集合学习专用lsp集合学习专用lsp集合学习专用
cad经典LSP文件,各种应用实例 如果您使用 AutoCAD,下面的内容对您一定有帮助。在某些方面能大大提高 您的工作效率。下面的程序均以源程序方式给出,您可以使用、参考、修改它。 bg.lsp --- 表格自动生成 asc.lsp -...
LSP(Language Server Protocol)是一种通信协议,它允许开发工具与语言服务器进行交互,以提供丰富的代码智能感知功能,如自动补全、错误检查、跳转定义等。这个压缩包"**Lsp最好的入门示例.rar**"显然是为了帮助...
最后,考虑到Komodia是一家专注于网络监控和安全的公司,这个LSP源码很可能包含了一些安全相关的功能,比如数据包的深度检测(Deep Packet Inspection, DPI)、流量分析或者恶意软件检测等。这些功能的实现通常需要...