先写个简单的吧,过段时间再把g723代码详细分析
g723针对8k采样,16bit量化的pcm信号进行编码,30ms的延迟,意味着每个数据块是240个采样
首先对信号进行低通滤波,为的是去掉低频分量
接下来是lpc10分析,提取出10lpc系数,沿着单位圆暴力搜索出对应的lsf系数,这一段为
各种语音编解码共有的,过段时间笔者再对lpc做一个代码级的详细分析吧.
完成了lpc分析之后,就剩对激励的编码了,这就是各种编解码的不同之处,
当然在这之前,g723会根据lpc系数对信号进行感知加权,
对激励源的编码也是针对感知加权后的信号进行的
这里简述一下5.3k速率的激励源编码
对信号进行基音周期分析(自相关法)
编码分两级进行,首先目标信号先得经过自适应激励,
所谓自适应激励,就是把历史的激励保存下来,
在基音周期附近,搜索自适应激励,
每个激励样值是由五个历史激励与增益码本里的系数乘积得到的
最佳自适应的取值标准是按欧式距离最短的方式得到的
自适应激励之后,得到了残差信号,对其在一个伪随机的码本搜索固定码本
g723对固定码本做了新的定义,随将伪随机冲激信号分成4个,每个只在固定的
位置出现,这样就简化的固定码本搜索的运算量.
码字为冲激信号的位置(所有的激励信号可以同时移动一个位置,这需要一个额位的bit位来编码)
,符号,并且在这一步算出固定码本的增益
完成了固定码本的搜索之后,
g723做一些同步内存更新,将当前解码后和自适应激励保存下来,作为之后最佳自适应激励的码本
g723解码...看懂编码,解码自然也就懂了,编解码双方都保存有自适应码本,做个语音合成