增量调制算法的进展及其CVSD—PCM数码变换

时间:2007-04-20

摘要本文探讨了增量调制算法的进展,介绍了几种实用的ADM算法,,详细论述了CVSD—PCM数码变换。 

关键词:增量调制算法,脉冲编码调制,数码变换                        

一、引 言

现在,虽然中、低速率的语音编码发展很快,有16kbit/s速率的低迟延码激励线性预测(LD—CELP)语音编码(G.728建议),还有8kbit/s共扼结构代数码激励线性预测(CS—ACELP)语音编码(G.729建议)等64kbit/s标准PCM系统仍占有统治地位。它已极为广泛地应用于数字通信、数字交换机及一切语音数字化接口。  

增量调制(△M)是继PCM后出现的又一种模拟信号数字化的方法,因其有强抗误码能力,所以,从70年代开始,被广泛用于军事通信网以及航天通信系统中。

PCM编码有统一的国际标准。一般的多媒体计算机都可以听不同速率的PCM话音。因此,使用本文介绍DM—PCM数码变换,由计算机即可听一般的△M话。本文第二部分介绍ADM的主要算法,第三部分详细讨论连续可变斜率增量调制(CVSD)—PCM的数码变换,其方法亦可用于其它的DM—PCM数码变换。

二、自适应增量调制(ADM)的主要算法

PCM编码是对抽样值S(n)直接进行编码。△M是对两个相邻样值的差值进行编码,实际应用的增量调制总是设计成△的大小随信号大小而变的自适应增量调制(ADM)。它的工作特点是:信号斜率变大时,增量△也跟着自动变大;反之,信号斜率变小时,增量△也跟着自动变小。如何从传输的二进制数字码流c(n)中提取对计算△(n)有用的信息,是设计实用算法的关键。c(n)码流传送的是信号的斜率信息,当同符号c(n)连续出现时,则斜率变大;当c(n)交替出现1、0码时,则斜率为零。近年来,在ADM体制上开展了不少研究工作、下面介绍几种较为实用有效的算法。
  1.常因子自适应增量调制(CFDM)算法
           
式中
  2.高信息自适应增量调制(HIDM)算法
           
  3.Song算法
           
这种算法后来经改进用到了航天飞机中。
  4.混合自适应增量调制(HCDM)算法
             
M(n)的选取见表1。
                 表1    M(n)的真值表

 b(n)    b(n-1)   b(n-2)

 M(n)

  1     1    1

 1.5

  0      0     0 

 1.5

  0      0    1 

  1

  1      1     0 

1

  0      1     1 

0.66

  1      0     0 

0.66

  1      0     1 

0.66

  0     1    0

 0.66

  5.CVSD算法
  这种算法应用为广泛。一般是检测3~4个比特有无同极性码,若有,则增加△值,否则,靠滤波器自由衰减△值。算法为:
            
式中。由下式决定
            
  β为控制量阶衰减的因子,满足τ=T/(1-β)为音节时间常数,一般为5—10 ms。

三、CVSD—PCM数码变换

  CVSD也叫数字检测音节压扩增量调制,进入实用阶段已有十多年的历史。在美国和西欧北约各国的军事通信网中CVSD算法应用为广泛。一般使用16kbit/s或32kbit/s数码率的CVSD调制方式。16kbit/s的CVSD为3连“1”或连“0”的数字检测算法 。而32kbit/s的CVSD为4连“1”或连“0”的数字检测算法。目前商用的ADM多数为32kbit/s的CVSD。所以,下面主要讨论将32kbit/s的CVSD变换为16位的线性PCM的方法。

  1.零点的选取与对应的建立
  当传输的二进制数字码流c(n)中交替出现1、0码,则信号的斜率为零。如果某一时隙有m(可定为32、64等)个交替的1、0码,则该时隙对应PCM的零点,即此时隙为变换以后的PCM码的零点,也就是说,有:
              CVSD—→PCM
           (1010…10)—→0
  设k个交替的1、0码之后的比特为c(1),第二比特为c(2),…,第n比特为c(n),…,对应的PCM码值分别为PCM(1),PCM(2), …,PCM(n),…,而PCM(0)=0。这时,
  如果c(1)=1,则PCM(1)=PCM(0)+△,
  如果c(1)=0,则PCM(1)=PCM(0)-△,
  如果c(2)=1,则PCM(2)=PCM(1)+△,
  如果c(2)=0,则PCM(2)=PCM(1)-△,
  如果c(3)=1,则PCM(3)=PCM(2)+△,
  如果c(3)=0,则PCM(3)=PCM(2)-△,
  从c(4)开始,考虑 值的变化,如果
         c(4) = c(3) = c(2) = c(1) (1)
  则△(4)=△ +△o,如果(1)式不成立,则△(4)=β·△ ,这时就可确定PCM(4)的值,
如果c(4)=1,则PCM(4)=PCM(3)+△(4),
  如果c(4)=0,则PCM(4)=PCM(3)-△(4);
  同样可确定PCM(5),如果
   c(5) = c(4) = c(3) = c(2)           (2)
  则 (5)= (4)+△0,如果(2)式不成立,则△(5)=β·△(4),这时,
  如果c(5)=1,则PCM(5)=PCM(4)+△(5),
  如果c(5)=0,则PCM(5)=PCM(4)-△(5);
  余类推…,这即建立了CVSD码流到PCM码的对应。

  2.抽样频率32~8kHz的变换
  在增量调制中,抽样频率不是由抽样定理确定的,而是由量化信噪比决定的,而且数码率与抽样频率在数值上是相等的。即32kbit/s的数码率,其抽样频率为32kHz,16kbit/s的数码率抽样频率为16kHz。为了获得8kHz的PCM抽样频率,对于32kHz的CVSD,可在每4个样点中选择一个作为PCM抽样点。具体地讲,在上面得到的PCM样点PCM(0),PCM(1),PC M(2),…,PCM(n),…中,抽取PCM(0),PCM(4),PCM(8),…,PCM(4n),…,即可得到8kHz的PCM抽样频率。

  3.重新回到零点
  在进行码变换时,要不断地寻找新零点,即m个交替的1、0码。如果出现新的零点,对应的PCM码值应回到零,否则,经过一定的时隙,PCM的码值即达到饱和状态,从而出现码型变换带来的失真。         

  4.衰减因子β的计算
  在CVSD的算法中,由音节时间常数τ=T/(1-β),可知
            β=1—T/τ
  一般情况下,τ=5~10ms,对于32kHz与l 6kHz的CVSD,容易计算出β的值。

  5.量阶△与△0的实验测试
  对于由CVSD变换后的16位PCM码,如果量阶△与△0选择得过大,会出现噪声;△与△0过小,则语图起伏很小,失真较大。经测试△在10的量级较合适,△0可比△小一些,这样即可获得较好的语音质量。

  综上所述、就可实现从32kHz的CVSD编码到8kHz的16位PCM编码的变换,要进行其它DM编码到不同PCM编码的变换,用以上方法亦不难实现。


  
上一篇:A律和μ律
下一篇:双边带调制在语音加密中的应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料