APP下载

语音编码算法在局域网通信系统中的优化实现

2016-05-14吴游冯金金

现代电子技术 2016年9期
关键词:基音编解码解码

吴游 冯金金

摘 要: 针对多媒体通信技术在网络带宽有限和传输音频数据量大的情况下,带宽利用率低,传输效率低的问题,在局域网通信系统中选择并优化实现了G.723.1编解码算法。在VC++ 6.0平台上,采用TCP/IP协议,在两台计算机之间分别采用客户端/服务器模式完成了系统设计。实验结果表明,优化后的算法提高了性能,有较高的压缩比,编码后音频数据占用存储空间小,可以节省传输带宽,提高传输效率。

关键词: 局域网通信系统; 语音编解码; G.723.1; TCP/IP协议

中图分类号: TN912.32?34; TP391 文献标识码: A 文章编号: 1004?373X(2016)09?0070?05

Abstract: Since the bandwidth utilization ratio and transmission efficiency are low when the multimedia communication technology is used in the situation of the limited network bandwidth and mass audio data transmission, the G.723.1 coding and decoding algorithm was selected and optimally implemented in the local area network (LAN) communication system. The client/server modes are respectively adopted between two computers to accomplish the system design on VC++ 6.0 platform by using TCP/IP protocol. The experimental results show that the performance of the optimized algorithm is improved, its compression ratio is high, and the coded audio data occupies less storage space, which can save the transmission bandwidth and improve the transmission efficiency.

Keywords: LAN communication system; speech coding and decoding; G.723.1; TCP/IP protocol

0 引 言

由于数字化语音在传输过程和存储方面,都要比模拟语音更加可靠、更具有抗干扰性、价格等方面更具有竞争力,目前在卫星通信、综合业务数字通信网、微博接力通信、移动通信等系统中没有一个不采用数字化语音传输和存储[1]。但数字化语音的传输和存储的不足之处是占用的频带较宽,为了节省数字信号传输所需的带宽,人们开始深入的研究语音编码技术。

经过多年的发展,语音编码技术广泛应用于因特网、保密通信、卫星通信以及水下通信等领域,语音编码技术领域的研究成果也层出不穷,其中包括很多突破性的研究成果和实用的语音编码方案。随着研究成果应用的普及,主要的标准制定组织国际电信联盟ITU已经制定了一系列语音编码标准,其编码速率越来越低。

本文采用模块化的方式对局域网通信系统进行介绍,因为系统是非实时实现音频信号传输的,所以对需要的音频信号进行采集。在众多的语音编码标准中选择G.723.1算法进行研究分析,在分析的基础上实现算法的性能优化,采用TCP/IP协议,运用客户端/服务器模式,通过局域网实现了音频数据的传输。

1 系统的整体设计

如图1所示,该系统的设计工作主要包括四个部分:音频信号的采集,音频信号的编码,音频信号的传输和音频信号的解码。

系统的工作流程如下:首先需要采集测试需要的音频信号并按G.723.1算法要求作格式处理后进行存储,再对音频信号作数据分析;然后对音频信号的数据部分进行编码处理,将编码后的数据经过局域网发送到服务器端,前提是客户端和服务器已经根据TCP/IP协议建立了连接,能够实现数据通信。服务器端先接收音频数据,再进行解码处理,最后对音频数据作分析。

2 系统设计的关键技术

2.1 音频信号采集

由于G.723.1算法要求输入的音频信号是以8 kHz采样率进行采样,量化位数为16 b的单声道线性PCM数据;所以对于测试用的音频信号,可以用Windows的录音机录制一段wav格式的语音片段或是一段MP3格式的语音文件用软件Arial Audio Converter转换成8 kHz采样率,16 b量化,单声道的PCM形式的wav文件。

Wav文件由文件头和数据体两部分组成[2]。文件头是由文件标识字段与格式块两部分组成,后者保存的是编码参数和声音参数,而文件头部分不需要进行编码和解码。对于8 kHz,16 b量化,单声道的PCM形式的标准wav文件来说,文件头占44 B,所以这44 B的内容是通过直接从输入文件写入到输出文件中。对wav文件的文件头进行分析,对编写解码端的wav文件至关重要。选用时长为1 s的音乐片段作为测试文件,这个wav文件不是Windows标准的wav文件,就得用Ultra Edit软件分析wav文件的头部字节大小。分析wav头文件发现数据部分是从58位才开始的,所以在计算数据部分长度时存在58位的偏移量。

2.2 编解码算法的优化实现

世界多个标准组织和工业实体提出了很多话音编码方案,但应用比较普遍的则是ITU组织提出的一系列语音编码协议。从算法是否复杂、编码速率的高低、延时多大和语音质量的好坏这四个方面评价语音编码算法[3]。ITU?T标准算法的性能比较,如表1所示。在这些编码算法中,高比特率(Kb/s)的语音数据会占用过多的系统资源,所以低比特率的算法在网络电话技术中应用最为广泛。

该系统采用了这些算法中编码速率较低,语音质量较好,在目前的语音传输中又经常用的G.723.1编码算法[4]。G.723.1标准是为可视电话而制定的一种低码率编码方案[5],它有两个编码速率[6],分别为6.3 Kb/s和5.3 Kb/s。

G.723.1算法编码过程主要包括以下几个部分:LPC(线性预测编码器)分析部分,计算LPC参数;共振峰感知加权滤波部分,得到感知加权语音信号;LSP(线性频谱对参数)量化部分,将最后一子帧的LPC参数转为LSP参数;基音估值部分,进行开环基音周期的估计;计算谐波噪声成形滤波部分;闭环基音预测部分,由估计基音周期和脉冲响应计算可得;脉冲响应计算器,由谐波噪声成形滤波器、共振峰感知加权滤波器、LPC合成滤波器三部分组成[7],脉冲响应送入解码器;激励信号,由自适应码本激励、固定码本激励构成,该激励信号是解码器需要的;自适应码本激励,需要闭环基音周期、自适应码本增益索引这2个参数,将闭环基音预测器的结果从目标信号中减去得到;固定码本激励,对于6.3 Kb/s,采用了多脉冲最大似然量化激励(MP?MLQ)[8];而对5.3 Kb/s,则采用代数编码激励(ACELP);最后发送编码信息。

G.723.1解码过程包括:基音解码和激励解码部分,由基音周期、固定码本激励、自适应码本激励得到激励信号;前向和后向基音后置滤波部分,对每一子帧作滤波处理;LPC合成滤波部分,从接收信息中提取LSP参数,通过LSP解码、内插将其转化为LSP系数,然后得到LPC系数,经过此滤波器后语音得以重建;共振峰后置滤波部分,对输出的语音作滤波处理;经过增益调整单元得到最后的输出。

在编码过程中,算法的计算量主要集中在基音估值器、自适应码本搜索和固定码本搜索模块,想要减少运算量,降低复杂度,对这三个模块进行优化是必要的。

2.2.1 开环基音预测优化

2.2.2 卷积运算的优化

在分析过程中发现,在取出64个历史自适应激励后计算卷积,计算时需要分成5轮进行,可以根据每个阶的特点降低计算的复杂度。首先是计算第5阶与冲激响应的卷积,这是按正常的方式计算的,然后从第4阶开始,依次更新到第1阶。前4轮的卷积是在最后一轮的基础上迭代出来的,这样就减少了不少的计算量。

2.3 音频信号传输

套接字是一个简单的网络应用程序接口,而Windows Socket则是应用比较广泛的网络编程接口,这是因为Windows Socket 规范是Windows下的一套开放的、支持多种协议的网络编程接口[9]。数据通信时通过应用程序调用Windows Socket APl实现,另外,Windows Socket又利用下层的网络通信协议、物理介质和操作系统完成数据传输[10]。

局域网通信系统采用TCP/IP协议,两台计算机在VC++ 6.0下分别采用客户端(编码发送端)/服务器模式(接收解码端)通过Windows Socket实现。编码发送端与接收解码端的通信流程图,如图2所示。

客户端与服务器连接之前,必须先知道服务器的名称,这个名称就是IP地址和端口号。服务器的套接字处于监听状态,用来监听客户端的连接请求,这是通过调用lisen()函数完成的。客户端也需要一个套接字,向服务器发送连接请求是通过connect()函数完成的。当服务器收到发来的请求后,通过调用accept()函数接受连接请求。连接后,双方就可以进行通信了。

2.4 系统测试

该系统要先启动服务器,等待客户端的连接,并选择与客户端相对应的解码模式。客户端打开电脑中需要编码发送的语音文件,输入服务器的IP地址,服务器IP地址为192.168.58.155,端口号在程序中设置为4568,连接服务器。如图3所示,客户端已经通过TCP/IP协议成功连接到服务器。

由前面的分析可知文件头和数据部分需要分开,所以先把测试文件的文件头中的44 B内容发送出去,写入输出文件。然后发送数据部分,从数据段开始读取数据,每一次从文件中读出一段数据编码进行编码,把编码后的数据直接发送出去,发送结束后会发送E类型给接收端通知发送结束。

服务器接收到文件头后先写入输出文件中,然后接收类型为D的数据部分将每次接收到的数据暂时先放入缓冲区,然后进行解码,得到解码后的数据再写入输出文件。编解码结束后双方即可关闭套接字。图4所示为低速率编码实现界面(高速率界面与之相似)。

3 结果分析验证

3.1 优化算法的正确性分析

(1) 数据分析

用Cool Edit软件分别打开算法优化前编解码后得到的音频文件和算法优化后得到的音频文件,观察文件里的具体数据是否一致。图5为算法优化前后的部分音频数据。

在对算法进行优化时,可以边优化边比对两个文件的数据,若发现两个数据的内容不一致时,则说明优化方法存在问题,就需要采用其他优化方法。

(2) 听音验证

听音验证就是以人耳的主观听觉感受为依据,通过人耳试听重建后的语音判断语音是否清晰可懂[11]。在本地计算机上播放原始语音文件,在接收计算机上播放重建后的语音文件,从听音感觉看,两种速率的编解码效果都非常好,语音清晰可懂。

(3) 波形验证

用计算机分别生成原来的语音信号波形和经两种速率编解码后生成的语音信号波形,将它们作比较。图6分别为测试语音在编码前、经过5.3 Kb/s和6.3 Kb/s编解码后得到的语音波形图,从图上可以看出,经编解码后的语音信号波形与原来的语音信号波形还是很相似的。

但图6(a)和图6(b)之间,图6(a)和图6(c)之间还是有误差的,这是因为一方面G.723.1语音编码算法属于参数编码的范畴,另一方面则是因为数据部分存在58位的偏移量,所以波形就有一些差异。

3.2 算法的压缩效率分析

在实现G.723.1算法时特意生成了编码后的中间文件,以此验证算法压缩的高效性。编解码之后的结果显示,原始文件大小为16 942 B,经速率为5.3 Kb/s的编码之后,文件大小为746 B,解码后得到的文件大小为16 366 B;经速率为6.3 Kb/s的编码之后,文件大小为886 B,解码后得到的文件大小为16 846 B。两种速率下的压缩比都达到了19[∶]1,可见压缩效率很高,在通信中可节省带宽,提高传输效率。

通过对wav文件的分析,在输出的音频文件中编写了正确的wav头文件。在两台PC上分别实现了语音编码发送和接收解码,从听觉来看,用优化算法编解码后的语音质量清晰可懂;从编码过程看,算法的性能得到了提高;从编码结果看,可节省传输带宽,提高传输速度,为以后进一步研究实时语音通信技术提供了基础和方法。

4 结 语

通过对wav文件的分析,在输出的音频文件中编写了正确的wav头文件。在两台PC上分别实现了语音编码发送和接收解码,从听觉来看,用优化算法编解码后的语音质量清晰可懂;从编码过程看,算法的性能得到了提高,从编码结果看,可节省传输带宽,提高传输速度,为以后进一步研究实时语音通信技术提供了基础和方法。

参考文献

[1] 李晔,崔慧娟,唐昆,等.数字语音编码技术[M].北京:电子工业出版社,2013.

[2] 王若钧,何杉.wav文件格式分析与详解[J].数字技术与应用,2014(3):93?94.

[3] 张雪英,贾海蓉,张伟雄.语音与音频编码[M].西安:西安电子科技大学出版社,2011.

[4] 彭仁明,陈擘威.一种语音压缩和网络传输系统设计[J].绵阳师范学院学报,2010,29(5):31?34.

[5] 李小东,梁宇,林嘉宇.一种语音编解码算法的研究与实现[J].微处理机,2011,32(3):52?54.

[6] ITU. Dual rate speech coder for multimedia telecommunications transmitting at 5.3 and 6.3 Kbit/s: ITU?T G.723.1 [S]. US: ITU, 1996.

[7] 李斌.G.723.1标准及其在语音处理中的应用[J].科技信息,2013(35):163?164.

[8] LIN R S, CHEN Y C, CHEN F K. Low complexity search method for G.723.1 MP?MLQ algorithm [C]// Proceedings of the Eighth International Conference on Intelligent Systems Design and Applications. Kaohsiung, China: IEEE, 2008.

[9] 刘端,黄元,李顺利.WINSOCK在网络测试编程中的使用[J].数字技术与应用,2012(8):23.

[10] 孙海民.精通Windows Sockets网络开发:基于Visual C++实现[M].北京:人民邮电出版社,2008.

[11] 王伟,李剑雄,周广禄.G.723.1语音压缩算法的分析及DSP实现[J].微计算机信息,2008,24(12):160?162.

猜你喜欢

基音编解码解码
《解码万吨站》
1553B总线控制器编解码设计
解码eUCP2.0
大型民机试飞遥测视频编解码方法研究
基于基音跟踪的语音增强研究
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于H.265编解码的高清视频传输系统研究
一种改进的基音周期提取算法
主流视频编解码软件的硬件性能分析与设计