APP下载

探析语音录放系统的FPGA设计与实现

2014-12-26吴东伟

科技视界 2014年4期
关键词:解码器差值录音

吴东伟

(沈阳师范大学 物理科学与技术学院,辽宁 沈阳110034)

1 DPCM算法和ADPCM算法

因为音频信号存在冗余,这些冗余有主观的,也有客观的。如果去掉了人耳无法感知的信息,那么不会对听觉效果产生影响,而且还会达到压缩的目的。有一种消除冗余的方法非常简单,这种方法是将相邻两个样本进行相减,然后再根据这个差值进行编码,因为被量化的对象会在一定程度上减少变化范围,记录信号的容量同时也被减少了。这样的技术被称为DPCM,也就是差分脉冲编码调制。但是有一种编码方法比DPCM更加的高效,这种方法就是ADPCM,它不但可以改变量化步长,而且还能够根据目前的值来进行预测,从而方便下次进行编码。这样一来,预测值和实际样本之间的误差会小很多。其可以选择的幅度差的量化比特位数有2bit、4bit以及8bit。

在编码器当中,输入样本X(n)和前一次样本X(n-1)的预测信号XP(n-1)求差,这样可以得到差值 D(n),D(n)通过自适应量化器之后会得到ADPCM的编码,这个编码用C(n)来表示。为了得到XP(n-1),必须要首先把编码信号 C(n-1)反量化为样本差值Dq(n-1),这个时候再和前一次的预测样本Xp(n-2)相加,最后和送入自适应预测器,得出预测值为Xp(n-1)。这样解码器非常简单,ADPCM编码C(n)通过自适应反量化器对差值进行恢复,得出Dq(n),然后和上一次所输出Y(n-1)的预测值求和,这样可以恢复出第n个样本值,这个样本值用 Y(n)来表示。

在通过差值信号得到ADPCM编码的时候,因为量化器会根据差值信号的幅度自动对步长进行调节,因为它也是自适应的。在信号发生了很大的变化之后,步长也会随之而增加,在信号的变化很小的时候,步长也会随之而减少。因此,在ADPCM编码反量化的时候,反量化器会通过ADPCM编码来选择一个索引,根据这个索引来对步长进行调整。也因此,ADPCM会采用非均匀的量化。

在本文的试验当中,采用的是IMA ADPCM算法,这种算法非常简单方便,可以在20MHz的386级PC上对44.1KHz,16bit立体声的声音实施解码。世界上有许多的游戏在保存声音数据文件的过程中,都是使用的IMA ADPCM技术。通过采用IMA ADPCM技术来进行压缩,可以得到很好的声音效果。不仅是在游戏当中,手机铃声和MP3、WAV录音也采用了IMA ADPCM。这种技术有一个特点,那就是它的预测器非常简单,它可以直接的用于上一次的预测值Xp(n-1),并且和反量化值Dq(n)的和作为后面的一个预测值。通俗的说,IMA ADPCM的预测器可以作为一个延迟单位,因为没采用任何其他预测值Xp(i)来得到更好的预测,因此这种预测器也是非自适应的。

2 语音录放系统的设计和优化

2.1 设计之前需要注意的方面

因为ADPCM算法当前在语音录音这方面得到了非常广泛的应用,而且这种算法的录音系统会比较容易设计和实现,所以设计拟定的目标应该是采用ADPCM编解码器来实施录音工作,从而使语音能够得到回放。

在设计的过程中,要使用4bit ADPCM编码和8bit ADDA,它的工作频率大概是8KHz,因此,应该这样来计算PCM信号的码率,8KHz乘以8bit,得出PCM信号的码率为64kbits,要计算ADPCM编码的码率,则应该由8KHz乘以4bit,得出ADPCM编码的码率为32kbits。这样就可以得出压缩率为64kbit:s32Kbits,其结果为2:1。此外,因为可以采用4bit ADPCM编码,每一秒需要32Kbit4 bit等于8K个存储单元,平均每一个存储单元4bit,也就是4KByte的存储空间。

因为设计当中使用了FPGA,它的内部仅仅只有90Kbit的存储空间。而且还需要为算法当中使用的修正表以及步长表留一部分存储的空间,所以计划录音的时间为2秒。这时录音编码会占据一定的空间,32Kbits乘以2秒等于64,也就是说64kbit4bit等于16个存储单元,存储器的地址线是14bit。

2.2 系统的工作过程

图1 基于FPGA的语言编码解码系统图

整个编码解码系统主要由五个部分组成,即存储器、编码器、控制单元、时钟、解码器。播放键和录音键按下之后,控制单元会产生存储器使能信号CS、地址信号addr以及读写控制信号WE,同时还有编码器的使能信号En-en,复位信号PL-RST。

它的工作过程应该是这样的,先按下录音键,便开始进行了录音,在大约1个时钟周期的时间里,编码器会复位。然后存储器和编码器开始运行,对输入的8bit PCM信号编码放入存储器RAM当中,这时松开录音键,录音便完成了。

在播放录音的时候,先按播放键,播放便开始了,在大约1个时钟周期的时间里,解码器会复位,然后存储器和解码器会正常运行,对RAM进行循环读,解码器输出8bit PCM信号,这时松开播放键,播放录音的过程便结束了。

2.3 设计编码器和解码器

首先是编码器,将索引修正表和量化步长表进行单独的设计,使之成为两个模块,这样好方便调用。为了减去预测信号,需要输入PCM信号,从而得到ADPCM的最高位。得出的ADPCM编码会通过和刚才量化过程相反的步骤,从而恢复出差值。恢复出来的差值加上前面的预测值,可以得出新的预测值,对周期进行延迟,方便计算下面的差值。

其次是解码器,解码器仍然使用量化步长表以及索引修正表。整个解码和编码的过程是相同的,将ADPCM编码进行反量化,再由低3位编码修正步长,这3位编码会决定步长能不能和12步长、14步长进行累加。它们之间累加的和经过修正后,编码最高位会决定它们的正负。反量化出来的差值加上前面一个恢复出来的PCM信号,这样可以恢复出这一次的PCM信号。

3 总结与体会

本文对基于ADPCM算法的语音录放系统设计进行分析,发现通过采用FPGA来实现录音的录放功能,得到了非常好的播放效果,但还需要采取噪音整形等方面技术来改进语音的质量,这样才能得到更好的效果。

[1]索明何,黄培花,王进宏.基于ISD4003的语音录放系统设计与实现[J].电脑知识与技术:学术交流,2008(8):823-824.

[2]张战鸣,尹耕钦.基于STC89C51RD的语音录放系统设计[J].自动化技术与应用,2012(8):88-90,101.

猜你喜欢

解码器差值录音
科学解码器(一)
科学解码器(二)
Funny Phonics
科学解码器(三)
funny phonics
差值法巧求刚体转动惯量
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
枳壳及其炮制品色差值与化学成分的相关性
Colorful Seasons多彩四季
A New Term