柯俊霄
(四川托普信息技术职业学院 四川 成都 611743)
随着计算机通信技术的迅猛发展,语音信号处理技术的重要性日益突出,已经成为现代工业发展的一个必备的基本技术。数字化语音存储与回放系统,具有操作方便、可靠简单、便于携带、成本低廉等特点,在各类公共设施、智能仪表、家用电子产品等领域有着广泛的应用。
目前一般的数字语音录放系统[1]以单片机为主体来控制语音芯片,从而实现语音的数字化存储与回放,但其数据量较大;为节约存储空间,在一些应用中[2]采用DSP实现对语音信号的压缩存储,其实现要求高,专业性强,研发成本较高;为了降低实现成本和使用方便,有研究[3]提出采用简单快捷的IMA-ADPCM编码算法在C8051F系列单片机上具体实现语音信号的编解码和压缩解压。
文中介绍了一种基于单片机实现语音信号编码压缩的数码录放系统设计方案,详细论述了该系统的硬件结构,并根据G.726标准ADPCM语音编解码的算法原理,针对语音记录系统的特点进行了算法的改进和优化,降低了算法的复杂程度以及算法的运算量,提高了程序的执行效率。运行结果表明,解码后语音还原质量较好,波形失真度符合预期。
数码录放机的总体设计如图1所示,声音信号通过ML2308采样处理后送到单片机内,单片机压缩编码后把数据传送到FLASH中保存。需要时,可从FLASH调用数据经单片机解码由ML2308处理后滤波输出。为了操作方便,还配备了控制键盘、GXM12864液晶显示模块和DS1302低功耗实时时钟电路,单片机可以通过232总线与PC机连接。
图1 数码录放机的总体设计图Fig. 1 Overall design of digital recorders
MCU采用STC12C5410单片机,这是一款兼容51内核的增强型8位机,它内部包含10K用户程序空间,片上集成512字节SRAM,1K的EEPROM空间,支持ISP/IAP,具有低功耗和超强的抗干扰能力,片上还集成了看门狗电路及MAX810专用复位电路。它支持单时钟/机器周期,工作频率范围为0~35 MHz,比普通8051速度快8~12倍,其速度完全有能力处理语音信号的编解码和压缩解压。
ML2308是立体声录音/播放LSI,在单个芯片中集成了录音和播放音频数据所需的所有功能。话筒或线入的模拟信号被模-数转换器转换成数字信号,经由缓冲存储器输出到外部设备。此外,从外部设备输入的数字信号由1比特数-模转换器转换为PWM信号,然后由 PWM驱动器输出,PWM驱动器可以直接驱动耳机。其音频数据输出信号模式支持μ律G.711 适应性8比特PCM 编码和8 比特/16 比特线性PCM编码,取样频率为4~32 kHz。
FLASH采用SAMSUNG公司生产的NAND型存储器K9F5608U0C,工作电压为2.7~3.6 V;其存储空间是按块和页来组织的,芯片容量为(32 M+1024 K)×8 Bit,由2 048块组成,每个块由32页组成,每个页的大小是(512+16)×8 Bit;读和写以页为单位,擦除以块为单位,写一页的时间约200 μs,擦除一块的时间约2 ms;可擦写十万次,数据可保存十年;数据口、地址口和命令口是8个管脚分时复用的,是一款性价比很高的大容量数据存储器件,尤其适用于嵌入式系统的数据存储,可以很大程度上提高应用系统的总体功能。
图2 STC12C5410单片机电路Fig. 2 The circuit diagram of STC12C5410 MCU
图3 立体声录音/播放芯片ML2308电路Fig. 3 The ML2308 circuit diagram
语音编码是语音信号数字处理的核心理论基础,通常分为3类:波形编码、参数编码、混合编码。波形编码力图使重建后的语音时域信号的波形与原语音信号波形保持一致,它具有适应能力强、话音质量好等优点,但需要用到的编码速率高,其主要代表就是自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation,ADPCM)。
图4 存储器K9F5608U0C电路Fig. 4 The K9F5608U0C circuit diagram
它的核心思想是利用自适应改变量化阶的大小,即使用小的量化阶去编码小的差值,使用大的量化阶去编码大的差值;使用过去的样本值估算下一个输入样本的预测值,使实际样本值和预测值之间的差值总是最小。ADPCM 记录的量化值不是每个采样点的幅值,而是该点的幅值与前一个采样点幅值之差。它是利用语音样本之间的相关性,并针对语音信号的非平稳特点,使用自适应预测和自适应量化,在保证可接受恢复语音质量的同时,能有效降低比特流数。
根据1990年ITU通过的G.726标准[4],其编码器组成框图如图5所示。其编码器的基本工作原理是:输入的非线性PCM信号S(k)经格式转换后变成线性PCM信号Sl(k),然后与预测信号Se(k)相减得到二者的差分信号d(k),自适应量化器以量化定标因子自适应产生的定标因子y(k)来定标,对该差分信号进行量化得到ADPCM编码I(k);一方面I(k)作为编码输出,另一方面逆自适应量化器利用I(k)得到量化后的差分信号dq(k),再同重建信号计算器产生的重建信号Sr(k)一起,送到自适应预测器,产生预测信号Se(k),自适应预测器采用二阶极点、六阶零点的混合预测器,利用Sr(k)、 dq(k)以及前几个时刻的值,对下一时刻将要输入的信号Sl(k+1)进行预测,计算出预测值Se(k+1)。自适应还要依据输入信号的特性自动改变自适应速度参数来控制量阶,这由定标因子自适应量化器、自适应速度控制、单音和转移(瞬变音)检测器等3个功能模块完成。ADPCM算法的一个重要特点是解码器中的解码算法已嵌入在编码器中,故在设计中可以只设计编码器,而解码器可以直接由编码器中的模块组合得到。
经过对编码器中各个模块作用的分析,针对本文所设计的语音记录系统的特点,同时为减轻单片机运算复杂度和减少代码量,对标准G.726算法进行了如下一些优化。
1)考虑到所采用的是8位单片机,进行大量浮点小数运算比较困难,所以设定整个程序中所有变量的字长最大为两字节,并且程序不涉及浮点运算;利用查表和乘法功能完成变量自由移位,用数据指针与条件转移配合完成对数变换。标准G.726算法提供了5位编码40kbps、4位编码32kbps、3位编码24kbps和2位编码16kbps四种输出信号方案,因为FLASH存储格式也是8位的,系统采用了4位编码32kbps和2位编码16kbps两种输出形式。经实际测试,我们认为系统播放的语音音质是可以接受的,满足设计要求。
图5 G.726编码器组成框图Fig. 5 The Composition block diagram of G.726
2)标准算法中为了在原有的30(32)路PCM方式数字通信设备中进行60路ADPCM方式的数字通信,设计了将μ/A 律8位非线性PCM输入信号转换为14位线性PCM信号的格式转换单元。本设计不涉及设备复用问题,并且ML2308的数据输出格式支持线性PCM信号,因此在编译码过程中省略了格式转换模块。
3)由于语音记录系统无需对语音信号进行异地传输,所以取消了因ASCII字符传输时产生误码而实施补偿的单音和转移检测单元,同时也取消了解码器中为实现通信同步而设的同步码调整模块。
4)在标准算法自适应速度的控制部分中,为了使量化器对数据调制解调器(MODEM)和音频信令信号与语音信号都能获得最佳自适应特性,采用了快速和慢速两种不同定标因子的自适应算法。录放机的输入信号只有语音,从而可以取消针对数据调制解调或音频[6]信令信号的慢速标度因子yl(k)的计算;对于语音信号,自适应速度控制系数 al(k)→1,因此直接把计算得到的快速量化标度因子yu (k)作为新的量化器标度因子y(k),从而可以在保证合成语音质量的前提下极大的降低算法的复杂程度。
图6 原始语音信号与解码信号的波形图对比Fig. 6 Contrast figure of the original speech signal and the decoding signal
图6为原始语音信号与解码信号的波形图对比情况,可以看出,解码信号没有出现严重失真,基本保持了原始信号的全部信息量,语音信号的自然度保持较好,虽然信噪比稍差,但系统播放的语音音质仍然是可以接受的,对整个系统的性能没有大的影响。
文中所设计的语音录放系统,应用单片机进行信号的编码压缩,采用基于标准ADPCM的优化算法,提高了编码效率,实现了对语音信号的实时处理。运行结果表明,本设计达到了预期的语音压缩效果,具有实现方便、低功耗、功能可扩展等特点,降低了这项技术的门槛和产品成本,在一些对音频性能要求不是很高的低端消费领域具有较大的应用价值。
[1] 许春冬,刘亦晴,刘钧彬,等.一种嵌入式数字语音录放系统的设计[J].电子元器件应用,2010,12(12):42-44.XU Chun-dong,LIU Yi-qing,LIU Jun-bing,et al. A design of embedded digital audio playback system[J].Electronic Applications,2010,12(12):42-44.
[2] 胥霖,穆道生,唐晓刚.基于DSP和单片机的数字压缩语音录放系统[J].通信市场,2008(1):65-69.XU Lin,MU Dao-sheng,TANG Xiao-gang.Compressed digital voice recording system based on DSP and MCU[J].Communications Market,2008(1): 65-69.
[3] 万晓华,陈连坤.一种适用于单片机的语音编码算法及应用[J]. 计算机工程, 2005,31(6):184-185.WAN Xiao-hua,CHENG Lian-kun. A kind of applied to singlechip voice coding algorithm and its application[J].Computer Engineering,2005,31(6):184-185.
[4] CCITT.Recommendation G.726 40, 32, 24, 16 kb/s Adaptive Differential Pulse Code Modulation(ADPCM)[S].1990.
[5] 赵力.语音信号处理[M].2版.北京:机械工业出版社,2010.
[6] 吴继伟.双声道混合音频系统的设计与实现[J].电子科技,2013(7):94-96.WU Ji-wei.Design and implementation of the dual-channel mixing audio system[J].Electronic Science and Technology,2013(7):94-96.