APP下载

基于IMBE语音编译码算法在PC机上的实时实现

2015-12-15韩红帮肖红李海雁

电子设计工程 2015年7期
关键词:浊音声卡译码

韩红帮,肖红,李海雁

(昆明学院 现代教育技术中心,云南 昆明 650214)

基于IMBE语音编译码算法在PC机上的实时实现

韩红帮,肖红,李海雁

(昆明学院 现代教育技术中心,云南 昆明 650214)

对APCO 25集群通信系统中采用的改进型多带激励(IMBE)语音编码算法进行了分析,在Windows XP环境下,基于VC++6.0开发平台,利用声卡作为采集与播放设备,通过软件编程实现语音信号的实时采集、IMBE编译码以及译码语音的播放处理。IMBE语音编码算法占用带宽较小,编码语音质量高,适合多媒体语音通信使用。

IMBE算法;APCO 25;声卡编程;信号采集

随着通信技术的快速发展,语音编码技术发展迅速并得到广泛应用。多带激励(Multi-Band Excitation,MBE)语音编码技术是美国MIT大学林肯实验室1988年提出的一种具有高语音质量、低编码速率的语音编解码技术,因其在小于4.8kbps速率上的优越性能,该算法在多领域得到广泛应用。其改进的IMBE算法是北美APCO 25集群通信系统第一代FDMA体制标准中采用的语音编码标准算法,同时也是国际移动卫星组织INMARSAT和AUSAT移动卫星通信的语音编码标准算法。在 APCO 25系统中,IMBE编码速率为 4.4 kbps,编码时延为20ms。其占用带宽较小,编码语音质量高,特别适合多媒体语音通信使用。

目前针对该算法的实现,数字语音系统公司(DVSI)等有专门的编译码芯片,但由于硬件条件限制,应用不够方便。本文基于Visual C++6.0软件编程技术,通过软件编程调用Windows底层接口函数控制声卡实现语音信号的实时AD采样,并对采样量化数据进行IMBE语音编译码处理,最后将译码后的语音数据采用声卡进行实时播放处理[1]。

1 IMBE语音编译码算法

1.1 MBE语音编译码算法介绍

多带激励编码(Multi-Band Excitation,MBE)算法是在频域中将语音频谱按照各基因谐波频率分成若干个频带,对各个频带信号分别判断是浊音(V)还是清音(U),如果是浊音,将以基音为周期的脉冲序列作为激励信号产生相应的合成语音;如果是清音,则以白噪声作为激励信号产生相应的合成语音。最终的激励信号由各带激励信号相加构成,最后用激励信号激励声道合成滤波器,合成出具有较高自然度的语音[2]。MBE编码器不需要残差信号和码书等,有较低的复杂度。MBE语音编码系统原理框图如图1所示。

图1 MBE编码系统原理框图Fig.1 Flow chart of the principle of MBE coding system

1.2 IMBE语音编译码算法介绍

IMBE编译码算法是MBE编译码算法的改进,其编码器基于MBE语音模型,该编码器基本方法是将待传输的语音信号加窗处理为多个相互交叠的语音帧,然后将每个语音帧与内置的语音模型比对,并根据相应算法估算出一套模型参数,再对这些模型参数量化编码,最后进行信道编码处理并输出编码数据帧,译码过程为编码过程的反过程[3]。在APCO25采用的IMBE编码过程中,每20 ms语音数据为一帧语音帧,经编码后为88比特编码帧,由U0至U7共8个向量数据组成,其中第U0至U3向量均为12比特,采用(23,12,7)golay编码,第U4至U6向量长度均为11比特,采用(15,11,3)汉明码编码,第U7向量为7比特,没有进行信道编码。经纠错编码后各向量还存在扰码和矩阵交织。最终输出帧长为144比特,速率为7.2 kbps的编码数据。IMBE编码器框图如图2所示。

图2 IMBE语音编码器Fig.2 IMBE speech coder

2 IMBE语音编译码算法在PC机上的实现过程

本文基于VC++6.0软件平台,采用声卡作为采集播放设备,通过软件编程实现语音信号的采集播放及IMBE编、译码算法,最终在PC机上实现IMBE语音编译码算法。具体实现过程为:调用Windows底层函数控制声卡,实现语音信号以8 kHz采样,16比特量化方式进行采集播放,对采集到的语音信号以每160样点作为一帧送入IMBE编码模块进行压缩编码,压缩后编码数据帧长为88比特,对88比特编码帧数据送入IMBE译码模块进行译码,获取160样点长度的重建语音信号,最后将语音信号送入声卡播放模块进行播放处理[4]。在语音信号实时采集与播放实现过程中,为了实现声卡采集与播放数据的实时性、连续性和可靠性,系统中采用了多线程多缓冲技术,有效保证了数据的连续性和信号处理的实时性[5-6]。下面重点对IMBE编译码算法软件实现过程进行介绍。

2.1 IMBE语音编译码算法的软件实现过程

根据IMBE语音编译码算法原理,采用面向对象思想,编制CIMBECod和CIMBEDec类分别实现语音信号的IMBE编码和译码。

2.1.1 CIMBECod编码类

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

其中 imbe_encode(IMBE_PARAM*pParam,short voice [160],BOOLEAN imbe[88])函数完成语音帧编码。pitch_est (IMBE_PARAM*pParam,short Frmes_buf)函数完成待编码语音信号帧的音频参数估计。sa_encode(IMBE_PARAM *pParam)函数完成谱幅度编码处理。voiced_sa_calc(int num, short den)函数完成浊音谱幅度计算。unvoiced_sa_calc(int num,short den)函数完成清音谱幅度计算。 v_uv_det (IMBE_PARAM*pParam,short fft_buf)函数完成清浊音判决处理。函数中,IMBE_PARAM*pParam为自定义的结构体变量,实时存储更新编译码过程中相关参数,该结构体定义如下:

2.1.2 IMBEDec译码类

该类为IMBE语音译码类,主要实现对输入该模块的88比特编码数据帧进行译码处理,译码后输出8 kHz采样、16比特量化的160样点语音数据。类的主要函数定义如下:

其中imbe_Decode(IMBE_PARAM*pParam,BOOLEAN imbe[88],short voice[160])函数完成编码帧译码处理。sa_Decode(IMBE_PARAM*pParam)函数完成谱幅度译码处理。v_synt(IMBE_PARAM*pParam,short voice[160])函数完成浊音合成。uv_synt(IMBE_PARAM*pParam,short voice[160])函数完成清音合成。v_uv_decode(IMBE_PARAM*pParam)函数完成清浊音译码合成处理。sa_enh(IMBE_PARAM*pParam)函数完成合成语音的增强处理。

2.2 IMBE语音编译码算法的软件接口封装

为了使软件编程接口简洁,使用方便,本文采用动态链接库方式对编译码类进行封装处理。生成IMBE_Vocoder.dll处理模块,该模块将CIMBECod编码类和CIMBEDec译码类进行封装并实例化。主要定义了 CIMBECod m_Enc [ENCUSERSIZE]和CIMBEDec m_Dec[DECUSERSIZE]对象数组,支持多用户同时使用,该模块主要提供如下接口函数:

其中 IMBEDll_EncInit函数和IMBEDll_DecInit函数分别完成各用户线路的编、译码初始化工作;IMBEDll_Encode函数和IMBEDll_Decode函数分别完成各用户线路帧数据的编、译码工作,imbe数组承载88比特编码帧比特数据,signal数组承载160*16bits的语音样点数据。

3 结束语

本文介绍了IMBE语音编译码算法,基于VC++6.0的编程实现过程,最后开发了相应系统,达到预期目的。经实践证明,合成语音较好地保留了讲话人的特征,其清晰度和自然度都比较好。IMBE算法占用带宽小、编码质量高,性能好,对语音编译码研究开发人员具有较好的实践和借鉴意义。

[1]曲喜强,刘哲.基于声卡的音频信号采集与分析系统设计[J].电子测试 2009(2):75-77. QU Xi-qiang,LIU Zhe.Audio signal acquisition and analysis system design based on sound card[J].Electronic Test,2009 (2):75-77.

[2]陆奕奕,袁三男,宋文涛.AMBE语音压缩算法实现及改进[J].通信技术,1998(4):63-66. LU Yi-yi,YUAN San-nan,SONG Wen-tao.The implement and improvement of AMBE voice compressing algorthm[J]. Commumicatios Technology,1998(4):63-66.

[3]Telecommunications Industry Association[S].Project 25 Vocoder Description BABA December 2003.

[4]叶向阳,黄国策,余侃民,等.计算机声卡在实时采样监控系统中的开发应用[J].微计算机应用,2006,27(5):582-584. YE Xiang-yang,HUANG Guo-ce,YU Kan-min,et al.The application of soundcard in the real--time monitoring system [J].Microcomputer Applications,2006,27(5):582-584.

[5]张兵.基于多缓冲区实时音频采集和传输实现[J].计算机工程,2006,32(12):272-273. ZHANG Bing.Real-time audio collection and transmission implementation based on multi-buffer [J].Computer Engineering,2006,32(12):272-273.

[6]董华,易克初,田斌.一种基于声卡的数据采集系统[J].山西电子技术,2006(1):3-4. DONG Hua,YI Ke-chu,TIAN Bin.A data acquisition system based on sound card[J].SHANXI Electronic Technology,2006 (1):3-4.

Real-time implementation based on algorithms of IMBE speech codec in PC

HAN Hong-bang,XIAO Hong,LI Hai-yan
(The Center of Modern Education Technology,Kunming University,Kunming 650214,China)

This paper is intended to discuss in detail the Improved Multi-Band Excitation(IMBE)speech coding algorithm, which is used to APCO 25 trunking communication system.In the Windows XP environment,based on the VC++6.0 development platform,using the sound card as the acquisition and playback equipment,through software programming to realize real-time speech signal acquisition,IMBE Co-decoding and voice playback processing.IMBE speech coding algorithm takes up less bandwidth,high quality speech coding,especially suitable for multimedia communication.

IMBE algorithm;APCO 25;sound card programming;signal collecting

TN912.3

A

1674-6236(2015)07-0186-03

2014-07-17 稿件编号:201407134

韩红帮(1977—),男,云南曲靖人,硕士,高级实验师。研究方向:现代教育技术。

猜你喜欢

浊音声卡译码
基于校正搜索宽度的极化码译码算法研究
日语半浊音的变化规律研究
清浊音分离抗噪的语音识别算法的研究
有关鼻浊音使用实态的研究
——以NHK新闻为中心
从霍尔的编码译码理论看弹幕的译码
LDPC 码改进高速译码算法
基于概率裁剪的球形译码算法
基于概率裁剪的球形译码算法
日语与永州方言浊音相似点小议①
麻雀成凤凰 本本声卡变X—Fi