我一直对AAC的量化器公式颇敢兴趣,想知道这样复杂的的函数量化器设计方法。也看了很多论文,试图从中找到原理。
MAGIC_NUM被定义为0.4054
这是AAC的量化器公式
我们既然是工程导向的逆向学习,那就先提出问题:
1.为什么是2的指数
答:2的指数可以理解为是为了2进制表示方便,也可能是计算得到。如果是计算得到,如何计算得到。而不是3.
2.为什么是1/4相乘
答:可以肯定的说,原因之一是甚至可能唯一是乘以1/4是为了降低量化步长。当然也可能是计算得到。如果是计算得到,如何计算得到。
3.为什么设计一个common_scalefac
答:这是一个小技巧,scalefactor是每个scalefactor band的因子,他们之间也有相关性,比如,可能是3,4,6,3,8,9,12. 他们的最小值是3. 而得到common_scalefac的值是3,scalefactor变为,0,1,3,5,6,9,进一步压缩幅值(注意这里不分正负)。提高对scalefactor的压缩效率。
这里引入的技巧是提取差值公因子
4.为什么设计出指数的指数(3/4)
答:这必然是一个计算值,为什么。如何算。下面介绍。
5.魔术因子MAGIC_NUM如何得到
答:这必然是一个计算值,为什么。如何算。下面介绍。
引申,A率和U率的公式如何设计得到。
找了这么就,其实答案就在身边,这就是逆向学习的弯路。。。。。。。
十一回公司的飞机上,重新翻阅戴善荣的《数据压缩》,发现方法其实就在枕边,之前没有系统扎实的学习啊。在第一章量化原理就有讲。虽然不完整,但是以A率和u率为例讲了设计方法,也包括Lloyd-Max经典方法等。
这里不赘述,仅提一下思路。
里面从线性量化引入失真计算,失真与线性量化的关系,再引出压扩量化也就是A率和u率。讲了A率和u率的设计方法,讲了如何设计最佳的压扩量化器。当然
你从设计方法上很容易想到其他的指数量化器的设计方法。
书里讲到了,从已知概率密度函数PDF推导计算压扩量化器的方法。
就变成如和通过已知随机数据(如MDCT变换后数据)计算PDF的方法。也就是信号的概率分布特征问题。
这里一般音频信号和语音信号用伽玛分布,Laplacian 分布,高斯分布的来模拟,也可以自己再调整参数。设计合理的压扩量化器。
这里调整参数包括,分布函数的参数调整,那就先假设一个先验分布和变量参数,根据方差或是衡量公式去逼近,得到比较好的参数。
说白了,就是先假设一个公式(当然这个公式不是随便设的,是根据经验的到的。比如,为什么是以上3个分布近似而不用其他分布近似)。这个先验-》参数计算是基本物理公司推导原理了。牛顿经典也是这样总结的。
说回来。这样就完成了压扩量化器的设计。
当然,至于tns参数的反正切量化器,那另当别论。可以想象也是分布-》先验公式-》公式收敛参数。
补差,该书16页对公式1.2-37解释p(*)时,说p(*)是分布密度,这个说法不准确。一般讲是分布函数,密度函数,至少我从百度,和google中英文翻译中没搜到分布密度的定义。最后经过分析,这里是PDF,概率密度函数。结合wikipedia对laplacian 分布的解释
http://en.wikipedia.org/wiki/Laplacian_distribution
p的公式(1.2-19的公式)是在b(wiki中的laplacian 分布的pdf中参数)为a/(2^0.5),u = 0时的分布函数。
注意我之前的博客引入的量化论文,和改书籍第一章结尾引入的论文
Principles of Quantizaiton.
好:量化问题转化为分布的逼近和概率密度函数的技算上了。。。。。。