speex源码分析-2-lsp量化

本文详细介绍了在完成线性预测编码(LPC)分析并将信号转换为线谱参数(LSP)之后,如何进行量化处理的过程。通过采用欧式距离最短的方法在码本表中搜索,实现LSP的高效压缩与传输。文章分为三个主要步骤:首先,去除直流分量以统一LSP系数的取值范围;其次,进行第一级搜索,选取与码本表中最接近的LSP量化值;随后,计算每个LSP系数的权重,用于指导第二级更精细的搜索;最终,通过将误差逐级放大并搜索,得到量化后的LSP值。整个过程旨在优化编码效率与压缩比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

完成了lpc 分析,并转成lsp之后,
接下来就是要对lsp进行量化 lsp_quant_nb


speex lsp的量化是采用欧式距离最短的方法,在码本表里搜索
分成三级


首先扣减直流分量
   for (i=0;i<order;i++)
      qlsp[i]=SUB16(qlsp[i],LSP_LINEAR(i));//lsc 做一个类似扣减速直流分量的操作,(lsp的取值范围大约是在-3.14 ~ 3.14之类) 让各个lsp系数落同一个取值区间,减少量化的阶数


第一级搜索
   id = lsp_quant(qlsp, cdbk_nb, NB_CDBK_SIZE, order);//lsc 这个算法很简单,取欧式距离最小的
qlsp将被更新成误差


然后是第二级搜索,第二级搜索是有一个加权的,加权的依据是:
   compute_quant_weights(qlsp, quant_weight, order);//lsc 得出每个lsp系数的权值,权值为该根与其相邻根距离(单位圆上,角度值)的倒数


第二,三级搜索被拆成,lsp系数被分成两组,每组5个,
分别在cdbk_nb_low1 cdbk_nb_low2 cdbk_nb_high1 cdbk_nb_high2
这几个码本表里搜索(根据欧式距离最短的原则,搜索最佳码字)


每级搜索,都是搜索上一级的误差(误差会被放大两倍),
最后得到的误差,做一个减法,就得到了量化后的lsp值,存在qlsp数组里
下一节被分析speex窄带激励
未完待续...




                                        林绍川 2012-10-30 于杭州
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值