APP下载

基于STM32的光话机ADPCM压缩编码算法与实现

2016-12-19胡晓婷宋寿鹏

电子科技 2016年11期
关键词:编解码误码率光纤

胡晓婷,宋寿鹏

(江苏大学 机械工程学院,江苏 镇江 212013)



基于STM32的光话机ADPCM压缩编码算法与实现

胡晓婷,宋寿鹏

(江苏大学 机械工程学院,江苏 镇江 212013)

针对部分光纤铺设及维护工作是在山区、森林等无线信号差的条件下进行的情况,文中为了解决此种环境下通话困难的问题,同时降低数码率,节省光纤带宽,采用了一种简化的语音压缩编码算法,并在基于STM32单片机的光话机中实现。该压缩编码算法采用自适应差分脉冲编码调制技术,具有较高的压缩比。仿真实验表明,在压缩比为4:1的条件下,可获得较低的数码率和较高的语音通话质量。

光话机;语音;压缩编码算法;自适应差分脉冲编码调制;STM32

随着光纤的大量使用,光纤铺设及维护工作显地越重要,且众多光纤铺设及维护工作是在恶劣的环境中进行的,比如山区、森林等,这些地区无线信号差,普通的通讯设备通话质量差甚至无法通讯,这就给施工人员的工作带来了困难。光话机就是为解决以上问题研制的一种光纤通讯设备,目前市场上普遍存在的光话机以数字式为主[1],且价格昂贵。此外,目前光话机普遍采用的编码方法是脉冲编码调制(Pulse Code Modulation,PCM),它是比较简单的波形编码方法[2-4]。尽管该种编码算法简单,但其数码率高,占用带宽[5],不利于远距离通讯。自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation,ADPCM)技术,可以对语音信号实现较高比例的压缩,降低比特率[6-7]。国际电报电话咨询委员会提出的G.721、G.726及G.727编码器建议均采用ADPCM结构作为长途传输中的通用语言编码方法[8]。但该种压缩编码算法较复杂,计算量较大[9-10],应用在光话机中就需要高性能的处理器及一系列匹配外设,会增加系统成本。

针对以上情况,采用互动多媒体协会(Interactive Multimedia Association ,IMA)标准的ADPCM语音压缩编码算法,并在基于STM32单片机的光话机中实现。该种算法压缩比比PCM算法高,复杂度比ADPCM压缩编码算法低[11],可解决光纤铺设及维护过程中无线信号差环境时的通讯问题,降低光话机成本实现高质量语音通话功能。

1 IMA-ADPCM压缩编码算法

语音信号是一种具有短时平稳性的非平稳随机信号,其相邻样点间有着较强的相关性。IMA-ADPCM的核心思想就是利用自适应方法改变量化阶的大小,即使用小的量化阶去编码小的差值,使用大的量化阶去编码大的差值;利用语音样本之间的相关性,使用过去的样本值估算下一个输入样本的预测值,使实际样本值和预测值之间的差值总是最小。本系统采用的IMA-ADPCM压缩编码算法是一种适用于单片机的语音编码算法[12]。该算法采用4位编码输出方式,其量化值通过查询两个表的方式自适应量化获得。

假设采样点的位置为i,c(i)表示在i点的编码输出。输入信号的实际值为x(i),输入信号的预测值用y(i)表示,Δ表示实际值和预测值的差值。则

(1)

(2)

y(i+1)=y(i)+Δ

(3)

其中,step[index]表中给出了量化阶的尺寸;index[c(i)]表中给出了对应的索引值。

编码算法的自适应调整主要是对量化阶进行自适应修正,量化阶尺寸的变化与当前量化阶的尺度和上一个量化编码输出值有关。4位编码中除最左边最高位为符号位外的其余3位作为对当前音频样本计算得到的量化值c(i),用作表index[c(i)]的索引,这个表中查得的值用于对表step[index]的索引进行修正。

index[i+1]=index[i]+index[c(i)]

(4)

表index的索引值index[c(i)]与上一次储存的索引index[i]相加,如式(4)所示,检查所得到的和,要保证本次索引值index[i+1]在0~88之间。然后将其作为表step的索引来查询量化阶尺寸,量化级尺寸在32 768-32 767之间(16位有符号数的范围)。最后将本次索引值index[i+1]存储,用于下一步的自适应量化计算。

2 压缩编码算法在STM32的应用

发送信号时,语音通过麦克风将声音信号转换为电信号,再使用VS1053B对语音信号进行采集编码之后发送到单片机,单片机将压缩编码后的数据通过串口经过电平转换之后发送到光纤收发器,最后,光纤收发器进行电光转换将语音信号从光纤信道发送出去。接收信号时,光话机接收来自另一端光话机发送的语音信号,首选光纤收发器接收到信号并通过电平转换传输至单片机,单片机控制解码单元对接收的待解码信号进行解码,最后经过功率放大处理后输出驱动扬声器发声。为方便操作,系统还配备了控制按键、TFTLCD液晶显示器、可供选择使用的耳机接口等。 光话机系统工作流程图如图1所示。

图1 光话机系统工作流程图

信号在光纤中的传输是通过光纤收发器实现的,但光纤收发器的发送接收电平为差分输入输出电平,与单片机串口电平不匹配。根据光话机全双工的通讯要求,需要在单片机和光纤收发器之间设计一个四线制RS485电平转换电路用于传输信号的电平转换,此处用的是SP1490E,将其分别与单片机通用收发串口USART及光纤收发器连接。此外,选用的光纤收发器实现收发功能还需要外加直流偏置,光纤收发模块的具体电路如图2所示。

图2 光纤收发电路

VS1053B内部包含一个高性能、低功耗的DSP处理器内核,可实现多种音频格式包括WAV(IMA-ADPCM,PCM)格式的音频解码和IMA-ADPCM编码功能。此外该芯片内部还具有一个可变采样率的ADC及可扩展外部DAC的IIS接口。编码时,语音信号经过麦克风进入VS1053B,通过其自带的A/D模数转换之后进行IMA-ADPCM编码缓存,之后对编码信号添加文件头使其成为带有采样率、通道数等信息的文件,最后单片机通过数据输出口读取缓存数据做进一步处理;解码时,将接收的编码信号送入VS1053B进行解码并输出。

图3 语音编解码电路

光话机选用的处理器为STM32F103RBT6,其具有价格低、功能强、使用简单的优点。其内部集成了20 kB的SRAM,128 kB的片内Flash,串行外设接口SPI,全双工通用同步/异步串行收发模块USART,DMA等强大的外设功能,可实现与光话机系统多个外设进行通讯的功能。此外,该处理器还具有在线调试接口JTAG,方便系统程序调试。最终,STM32单片机通过控制外部编解码器实现语音编解码功能[13-14],单片机电路如图4所示。

图4 STM32单片机电路

3 仿真结果

为验证IMA-ADPCM算法性能,设计使用多组不同的语音样本进行仿真试验。语音样本中包括元音、辅音及长短不同的语音信号,其中样本1为元音,样本2为辅音,样本3为0.01 s的语音,样本4为0.03 s的语音。参考ADPCM语音编码标准的仿真实现[15],分别用ADPCM压缩编码算法和IMA-ADPCM压缩编码算法对各个语音样本进行仿真。从误码率及输出编解码波形两个方面对两种编解码算法进行比较。

设采样位数为16位,采样频率为8 kHz。

(5)

并通过式(5)分别对两种编码算法的误码率进行计算。式中,ne为误码率;ni为编解码之后的语音信号值不同于原始语音信号值的总个数;n为采集的原始语音的总个数。

计算出4个语音样本的误码率,如表1所示,可以得出ADPCM和IMA-ADPCM两种压缩编码算法输出语音的误码率都比较低,但ADPCM压缩编码算法的误码率相对要高。此外,语音样本时间过长时,两种算法编解码都会出现明显延时,所以语音帧长度的选取也不宜过长,否则会出现语音信号不连续的问题。

表1 不同语音样本误码率

选择一个内容为“12345”的语音样本,验证经过IMA-ADPCM算法编解码之后的语音信号与原始语音信号是否有失真出现。分别采用ADPCM和IMA-ADPCM算法对语音信号进行编解码并输出对应原始信号及编解码输出波形,如图5所示。从波形输出结果可看出,两种算法编解码之后输出的语音信号波形均未出现明显失真。

图5 语音信号波形对比图

4 结束语

文中研究了IMA-ADPCM压缩编码算法,并将其在基于STM32的光话机中实现。该压缩编码算法压缩比为4∶1,误码率低,数码率为32 bit·s-1,主观意见评分 (Mean Opinion Score,MOS)>4,具有较低的数码率和较高的语音质量。该光话机系统电路设计简单、成本低,对光话机产品在压缩编码算法方面的研究具有一定的补充意义。

[1] 夏震宇,翟昭文.光纤电话机:中国,200420022025.3[P].2005-09-14.

[2] 张玥.光纤语音电话通信技术概述[J].现代科技,2009(6):56-58.

[3] 王炳锡.语音编码[M].西安:西安电子科技大学出版社,2002.

[4] 吴家安.语音编码技术及应用[M].北京:机械工业出版社,2006.

[5] 王培开.基于51单片机的PCM解码设[J].电子制作,2012(1):58-64.

[6] ITU CCITT. Recommendation G.726 40,32,24,16kB/s adaptive differential pulse code modulation[S].Geneva:ITV CCITT,1990.

[7] 李睿.基于FPGA系统的ADPCM编解码应用[D].上海:复旦大学,2009.

[8] 房德新,魏建强.ITU G.726语音编码器在DSP上的实现[J].微计算机信息,2001,17(10):28-29.

[9] 王小军,赵嘎,舒平平,等.基于FPGA的IMA-ADPCM 编/解码器的设计与实现[J]. 云南大学学报:自然科学版,2012(4):415-419.

[10] 李天任.基于DSP的ADPCM编译码系统研究[D].长春:长春理工大学,2005.

[11] 徐朝炯,李平,高峰.基于ADPCM 算法的语音录放系统优化设计与FPGA 实现[J].电声技术,2007,31(S2):27-30.

[12] 万晓华,陈连坤.一种适用于单片机的语音编码算法及应用[J].计算机工程,2005,31(6):184-185.

[13] 张崇武.基于单片机的语音编码系统实现[D].济南:山东大学,2012.

[14] ST.AN2931 application note implementing the ADPCM algorithm in high-density STM32F103xx microcontrollers [M].Italy:ST,2009.

[15] 张雪英.数字语音处理及Matlab仿真[M].北京:电子工业出版社,2010.

Optical Telephone ADPCM Compression Coding Algorithm and Implementation Based on STM32

HU Xiaoting, SONG Shoupeng

(School of Mechanical Engineering, Jiangsu University, Zhenjiang 212013, China)

Some optical fiber laying and maintenance are carried out in poor wireless environment, such as mountain areas and forests. In order to solve the problem of call difficulties in such environments, reduce digital rate and save fiber bandwidth, a simplified speech compression coding algorithm is adopted and realized in optical telephones based on the STM32 single chip microcomputer. The speech compression coding algorithm adopts the adaptive differential pulse code modulation technology, which has high compression ratio. Simulation result shows that it can achieve high-quality voice calls at a compression ratio of 4:1.

optical telephone; speech; compression coding algorithm; adaptive differential pulse code modulation; STM32

2016- 01- 30

胡晓婷(1990-),女,硕士研究生。研究方向: 光纤通信。宋寿鹏(1967-),男,教授,博士。研究方向:超声波检测新原理及检测设备等。

10.16180/j.cnki.issn1007-7820.2016.11.005

TN912

A

1007-7820(2016)11-016-04

猜你喜欢

编解码误码率光纤
面向通信系统的误码率计算方法
ASN.1 的PER 分层运行库系统的设计和实现
FIBBR King-A系列HDMI光纤线
1553B总线控制器编解码设计
为多重编解码世界做好准备
大型民机试飞遥测视频编解码方法研究
一种快速同步统计高阶调制下PN 码误码率的方法∗
高品质的忠实还原 FIBBR Ultra Pro2 HDMI光纤线
浅谈数字通信系统中误码率的估计方法
一条光纤HDMI线的诞生长飞/长芯盛FIBBR工厂走访实录