一种增强的LPC参数多级矢量量化技术
发布时间:2008/5/27 0:00:00 访问次数:503
    
    矢量量化(vector quantization)是一种极其重要的信号压缩方法,广泛应用于语音、图像信号压缩等领域。信息论的一个分支——“率-畸变理论”指出,无论对于何种信息源,即使是无记忆的信息源(即各个采样信号之间互相统计独立),矢量量化总是优于标量量化,且矢量维数越大优度越高。因此,目前国内外对于矢量量化技术的研究非常广泛而深入。平衡考虑量化效果和运算复杂度,多级矢量量化(msvq)提供了一个很好的折衷办法。
    线性预测编码(lpc)参数能很好地表征语音信号的短时谱包络信息,在各种lpc参数中,线谱频率(lsf)[1]较其它参数能更有效地表达lpc信息。k.k.paliwal和b.s.atal仔细研究了用24~26个比特量化一个10阶lsf参数的方法,提出了分裂矢量量化(split vector quantization)和多级矢量量化msvq(multistage vector quantization)两种方案,并且试验得到了用25比特的2级msvq能取得较好的量化效果(平均失真1db,2~4db概率小于2%,大于4db为0)。
    msvq算法有效减小了码本容量,但如果在量化比特有限的情况下,想取得透明的量化效果,必须解决两个问题:(1)怎样搜索码本得到最佳匹配索引;(2)怎样设计码本。在算法设计中这两个问题必须统一考虑。对前一个问题,为了方便一般采用序列搜索算法,依次搜索得到各级的最佳匹配矢量。在码本设计中,更多的也是分级依次进行码本训练,割裂了各级码本之间的相关性。本文将着重研究多级矢量量化的联合优化码本设计问题。
    
    1 问题分析
    传统的msvq算法在lsf参数码本设计时采用一种连续(stage-by-stage)的设计方法,第k级码本只与前面的第1至第(k-1)级码本有关,而不考虑后续各级码本,即将后续各级码本内容视为0。在量化时,同样只在本级寻找1个最佳匹配矢量,然后得到余量矢量送入下一级量化。量化过程可以用式(1)表示,假设有2级码本,需要找出各级码本索引:
    
    
    其中,k1和k2是第一、二级的码本容量。最终量化结果为:
    
    
    在序列搜索算法中,搜索yi时,假设zj为0,搜索zj时yi已经固定。这样的搜索算法显然是一种次优的搜索算法,解决这个问题的方法是全搜索[3]。全搜索是最优的搜索算法,但是其计算复杂度却是难以承受的。例如,一个25比特2级码本(13-12结构),其全搜索复杂度是上述连续搜索的2000倍以上。m进制搜索[4]折衷解决了这个问题。在运算量大大减小的情况下,取得了逼近全搜索的量化效果。
    在码本设计中,无论是经典的gla算法还是改进的模拟退火(sa)算法,码本设计都是逐级连续进行的。利用各级码本之间的相关性优化码本设计,可以较明显地改善msvq的量化效果。在应用联合码本设计方法量化音频dct系数时,已经取得了大约0.4 db的snr改善[5]。本文在量化lsf参数时,对比300步的sr算法,得到了大约0.05db、约1bit的加权对数谱失真(wlsd)[6]的改进效果。
    2 算法说明
    2.1 失真距离量度
    对一个msvq码本,为方便考虑假设共有2级码本。lsf参数为10维矢量。对lsf参数而言,其敏感矩阵(sensitivity matrix)是对角阵,因此可以用加权最小均方误差(wmse)代替加权对数谱失真(wlsd)作为失真量度[6]。量化失真
    
    
    
    其中,wi为功率谱幅度加权,ci为lsf参数人耳听觉加权。
    
    
    r的经验值一般为0.15。
    2.2 理论推导
    对一个训练矢量集x和两级码本y、z,可以对x中每个矢量进行2级全搜索,得到最佳索引值对(i,j)。根据i和j的不同可以对x中每个矢量进行聚类。假设s为对第一级码字形成的聚类,si为所有x中第一级量化索引为i的训练矢量集合。同样假设r为第二级码字聚类,可知,{s1,s2,…,sk1}和{r1,r2,…,rk2}均是同一x集合的不同划分。对于x∈si,平均量化失真为:
    
    
    
     z的输入为(x-y),因此(5)式也可表达
    
    矢量量化(vector quantization)是一种极其重要的信号压缩方法,广泛应用于语音、图像信号压缩等领域。信息论的一个分支——“率-畸变理论”指出,无论对于何种信息源,即使是无记忆的信息源(即各个采样信号之间互相统计独立),矢量量化总是优于标量量化,且矢量维数越大优度越高。因此,目前国内外对于矢量量化技术的研究非常广泛而深入。平衡考虑量化效果和运算复杂度,多级矢量量化(msvq)提供了一个很好的折衷办法。
    线性预测编码(lpc)参数能很好地表征语音信号的短时谱包络信息,在各种lpc参数中,线谱频率(lsf)[1]较其它参数能更有效地表达lpc信息。k.k.paliwal和b.s.atal仔细研究了用24~26个比特量化一个10阶lsf参数的方法,提出了分裂矢量量化(split vector quantization)和多级矢量量化msvq(multistage vector quantization)两种方案,并且试验得到了用25比特的2级msvq能取得较好的量化效果(平均失真1db,2~4db概率小于2%,大于4db为0)。
    msvq算法有效减小了码本容量,但如果在量化比特有限的情况下,想取得透明的量化效果,必须解决两个问题:(1)怎样搜索码本得到最佳匹配索引;(2)怎样设计码本。在算法设计中这两个问题必须统一考虑。对前一个问题,为了方便一般采用序列搜索算法,依次搜索得到各级的最佳匹配矢量。在码本设计中,更多的也是分级依次进行码本训练,割裂了各级码本之间的相关性。本文将着重研究多级矢量量化的联合优化码本设计问题。
    
    1 问题分析
    传统的msvq算法在lsf参数码本设计时采用一种连续(stage-by-stage)的设计方法,第k级码本只与前面的第1至第(k-1)级码本有关,而不考虑后续各级码本,即将后续各级码本内容视为0。在量化时,同样只在本级寻找1个最佳匹配矢量,然后得到余量矢量送入下一级量化。量化过程可以用式(1)表示,假设有2级码本,需要找出各级码本索引:
    
    
    其中,k1和k2是第一、二级的码本容量。最终量化结果为:
    
    
    在序列搜索算法中,搜索yi时,假设zj为0,搜索zj时yi已经固定。这样的搜索算法显然是一种次优的搜索算法,解决这个问题的方法是全搜索[3]。全搜索是最优的搜索算法,但是其计算复杂度却是难以承受的。例如,一个25比特2级码本(13-12结构),其全搜索复杂度是上述连续搜索的2000倍以上。m进制搜索[4]折衷解决了这个问题。在运算量大大减小的情况下,取得了逼近全搜索的量化效果。
    在码本设计中,无论是经典的gla算法还是改进的模拟退火(sa)算法,码本设计都是逐级连续进行的。利用各级码本之间的相关性优化码本设计,可以较明显地改善msvq的量化效果。在应用联合码本设计方法量化音频dct系数时,已经取得了大约0.4 db的snr改善[5]。本文在量化lsf参数时,对比300步的sr算法,得到了大约0.05db、约1bit的加权对数谱失真(wlsd)[6]的改进效果。
    2 算法说明
    2.1 失真距离量度
    对一个msvq码本,为方便考虑假设共有2级码本。lsf参数为10维矢量。对lsf参数而言,其敏感矩阵(sensitivity matrix)是对角阵,因此可以用加权最小均方误差(wmse)代替加权对数谱失真(wlsd)作为失真量度[6]。量化失真
    
    
    
    其中,wi为功率谱幅度加权,ci为lsf参数人耳听觉加权。
    
    
    r的经验值一般为0.15。
    2.2 理论推导
    对一个训练矢量集x和两级码本y、z,可以对x中每个矢量进行2级全搜索,得到最佳索引值对(i,j)。根据i和j的不同可以对x中每个矢量进行聚类。假设s为对第一级码字形成的聚类,si为所有x中第一级量化索引为i的训练矢量集合。同样假设r为第二级码字聚类,可知,{s1,s2,…,sk1}和{r1,r2,…,rk2}均是同一x集合的不同划分。对于x∈si,平均量化失真为:
    
    
    
     z的输入为(x-y),因此(5)式也可表达