当前位置:首页 > 通信技术 > 通信技术
[导读]摘要:文中针对Tetra通信系统中采用的ACELP算法,分析了该算法的基本原理,介绍了其算法基于VC++6.0的软件实现过程,重点阐述了ACELP在网络通信中的实现及应用情况。随着通信技术的快速发展,语音编码技术发展越来越

摘要:文中针对Tetra通信系统中采用的ACELP算法,分析了该算法的基本原理,介绍了其算法基于VC++6.0的软件实现过程,重点阐述了ACELP在网络通信中的实现及应用情况。

随着通信技术的快速发展,语音编码技术发展越来越迅速、应用越来越广泛。TETRA(Terrestrial Trunked Radio)集群通信系统是欧洲电信标准协会ETSI制定的数字集群移动通信标准。近几年发展很快,其产品已被包括我国在内的世界多个国家广泛采用。TETRA承载的语音通信业务采用ACELP语音编码算法,该算法是一种改进型的CELP,它继承了传统CELP的主要优点,并克服了其缺点。传统CELP用固定的随机码本来逼近语音信号的余量信号,缺乏灵活性,不能很好地控制码本的频域特性。ACELP采用代数码本结构,不仅降低了码本的存储量和搜索量,还提供了频域控制函数,从而增强了码本的灵活性和多样性,能更好地逼近余量信号,保证了高质量的语音服务。该算法占用带宽较小,其编码速率仅为4.567 kbps,同时编码语音质量高,特别适合多媒体语音通信使用。目前该算法已有许多在嵌入式系统中实现的方案,但由于编译环境以及硬件条件的限制,应用不够灵活方便,因此本文基于Visual C++软件编程技术,采用服务器与客户端网络通信模式,在服务器端采用声卡对语音信号进行实时AD采样,对采样数据进行ACELP语音编码处理,并将编码后数据通过网络实时发送到客户端;在客户端实时接收服务器端发送的语音编码数据并进行软件译码处理,同时将译码后数据采用声卡进行实时播放,从而实现基于ACELP算法的网络语音通信。

1 ACELP语音编译码算法的基本原理

ACELP是一种改进的代数码本激励线性预测算法,该算法要求输入语音信号为8 kHz采样、16比特量化,信号以30 ms分帧,每一帧分为4个子帧,每个子帧7.5 ms,每帧数据编码后为137比特,包括线性预测参数、基音延迟T、最佳码本索引和最佳增益参数。编码器原理框图如图1所示。

编码过程主要由短时预测、长时线性预测、码本搜素和增益计算等组成。其中短时预测提取声道滤波器的LPC系数并进行插值和量化;长时线性预测通常分为开环基音分析和闭环基音分析两步,开环基音分析每帧数据(30 ms)处理一次,采用自相关法估算基音周期,按较低基音延迟优先的原则获取基音周期的大致范围,闭环基音分析基于子帧完成,每7.5 ms处理一次,以获取基音周期的准确值;码本搜索和增益计算主要用于计算合适的码本和增益,使重建语音的质量具有更高的清晰度和自然度。

解码过程就是将线性预测参数、基音延迟T、最佳码本索引和最佳增益参数等各个编码参数等从编码比特流中提取出来,重构输出信号和各个滤波器,最后得到重构语音。解码过程以分帧为单位进行。首先将LSP矢量转换为LP滤波器系数,然后通过基音延时查找基音的整数和分数分量,将激励进行解码,对解码后的激励信号通过后基音滤波器送入合成滤波器,得到合成信号。合成信号经过共振峰后滤波器和增益放大单元控制得到语音信号。其ACELP解码原理框图如图2所示。

2 ACELP语音编译码算法的软件实现概述

根据ACELP语音编译码算法原理.本文基于VC++6.0软件平台,采用面向对象思想,编制CTetra_ACELP_Cod类和CTetra_ACELP_Dec类分别实现语音信号编、译码。另外,本文采用动态链接库方式对编译码类进行封装,接口简洁,使用方便。

2.1 CTetra_ACELP_Cod编码类

该类为ACELP语音编码类,主要实现对输入该模块的8 kHz采样,16比特量化的语音样点数据流进行编码,类的主要函数定义如下:

其中Init(TETRA_ACELP_COD_PARAM*pCodParam)函数完成编码模块初始化工作,TETRA_ACELP_COD_PARAM结构体参数实时存储编码过程中相关参数。void PreProcess(Word16 signal[],Word16 lg)函数完成待编码语音信号帧的预处理。ACELPCod(Word16 signal[],Word16parm[],TETRA_ACELP_COD_PARAM*pCodParam)函数完成语音编码处理,signal[]参数为待编码的语音样本帧数据,parm[]为编码后参数。Prm2 bi ts(Word16 prm[],Word16 bits[])函数实现编码参数到比特流的转化。

2.2 CTetra_ACELP_Dec编码类

该类为ACELP语音译码类,主要实现对输入该模块编码数据帧(137比特帧长)进行译码处理,输出8KHz采样,16比特量化的语音数据。类的主要函数定义如下:

其中Init(TETRA_ACELP_DEC_PARAM*pDecParam)函数完成译码模块的初始化工作,TETRA_ACELP_DEC_PARAM结构体参数实时存储译码过程中相关参数。Bits2prm(Word16 bits[],Word16 prm[])函数实现137比特帧数据到ACELP编码参数的转化。ACELPDec(Word16 parm[],Word16 synth[],TETRA_ACELP_DEC_PARAM*pDecParam)函数完成编码参数的译码处理。编码参数通过ana数组返回。PostProcess(Word16 signal[],Word16 lg)对合成语音进行后处理工作。

2.3 动态链接库封装接口介绍

其中bits为137比特编码比特帧,signal为240*16bits的语音样点数据,pCodParam和pDecParam为编、译码过程中的中间结构体参量。

3 ACELP编译码算法在网络通信中的应用

采用网络服务器、客户端通信模式,将ACELP编译码模块应用到网络语音通信中,最终实现了基于ACELP算法的网络语音通信。具体通信过程为:服务器端采用声卡以8 kHz采样,16比特量化方式对语音信号进行实时采集,对采集到的语音信号每240样点作为一帧送入ACELP编码模块进行压缩编码,压缩后编码数据帧长为137比特,每帧数据进一步封装处理后通过网络实时发送到客户端。客户端通过网络实时接收服务器端编码语音数据包,经ACELP译码处理后实时发送到声卡进行播放处理,从而实现网络语音通信。

3.1 语音信号实时采集与播放技术实现

在语音信号实时采集与播放实现过程中,如何实现声卡采集与播放数据的实时性、连续性和可靠性是软件设计的关键所在。在本文软件系统中,通过直接凋用Windows最底层波形音频接口函数,实现声卡的编程控制,系统中采用了多线程多缓冲技术,即在服务器端,声卡采集与语音压缩编码使用不同的工作线程,同时给声卡提供多个用于承载采集数据的缓冲区,在同一时刻部分缓冲区供声卡采集线程装载数据的同时,另外已经装满数据的缓冲区供语音压缩数据处理线程处理,从而使得语音信号采集和压缩编码处理工作同时进行,有效保证了采集数据的连续性和信号处理的实时性。服务器端声卡实时采集原理框图如图3所示。

3.2 网络通信技术实现

软件系统采用客户/服务器模式和TCP/IP协议,利用Socket套接字编程技术实现数据接收与发送。其中数据接收模块采用VC++的CSo cket类,具体通信过程为:1)程序启动的时候在指定端口创建网络监听套接字,用以监听客户端的连接请求。2)当有客户请求连接时,创建接收套接字与客户端建立连接。3)当有数据需要接收时,CAcceptSocket响应OnReceive消息,调用Receive函数从缓冲里获取客户端传来的数据,实时的交给ACELP译码线程进行译码还原处理。4)当通信结束时,关闭监听套接字和接收套接字并释放资源。数据发送接口采用SOCKET通信技术,为了使系统在实时编码处理的同时及时将编码数据发送到服务器端,软件采用多线程技术;同时为了避免由于待发送数据流不均匀导致的数据帧丢失等情况发生,系统采用了多缓冲机制。主程序编码模块将要发送的编码数据源源不断的向缓冲队列中写,同时发送线程不断的检测缓冲队列中缓冲情况,当有缓冲满时及时进行发送。由于多线程与多缓冲机制的有效使用,使得网络通信能够实时高效的运行。

3.3 系统情况介绍

该系统实现了基于ACELP算法的网络语音通信,能够对通信过程中的语音波形样本数据、ACELP编码数据等进行实时存储和网络发送,对通行过程中的波形进行实时显示等。系统运行稳定,延迟较小,语音通信质量较好。图4所示为本文设计的软件系统运行截图。

4 结束语

文中研究了TETRA系统采用的ACELP语音编译码算法,在此基础上基于VC++编程技术实现ACELP编、译码软件模块,并采用动态链接库对其进行封装处理,接口简单,使用方便。最后开发相应系统,实现了ACELP编译码算法在网络语音通信中的应用。经实践证明,ACELP算法编码质量高,性能优异,具有较好的应用价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭