您的位置:4G网络电话 >> 行业信息>> 语音网关模块软件设计

语音网关模块软件设计

来源:网上转载-语音网关  发布时间:2014-08-25 16:02:52

语音网关音频接口驱动程序实现

语音网关UDA1341是Philips 公司的一款经济 型音频CODEC,片内集成了立体声ADC、DAC 以及模拟输入通道,其中模拟输入通道包括可编程增益放大器(PGA)、数字自动增益控制(AGC)、 数字声音处理(DSP)等。用于实现模拟音频信号的采集和数字音频信号的模拟输出,并通过IIS 数字音频接口,实现音频信号的数字化处理。为了能录音和 播放WAV 文件,首先要对硬件UDA1341 进行初始化。

 

语音网关SIP 协议栈的选取与移植

目 前的开源SIP 协议栈主要有OPAL,VOCAL,sipX,ReSIProcate,Osip2 我们选择了Osip2 和eXosip 作为方案的 SIP 协议栈来完成应用程序的开发,采用oRTP 协议栈来实现实时传输协议RTP。Osip2,eXosip 和oRTP 协议栈都是用标准C 实现 的协议栈,移植的主要工作就是对其进行交叉编译,生成能够在ARM 环境里运行的二进制文件。

 

语音网关以下为编译步骤:

1建立安装树,并设定路径mkdir/arm_sipexport ARM_INSTALL_TREE=/arm_sip

2编译osip2./configure--prefix=/usr--host=arm-linux--with-gnu-ld--disable-staticMakemake install DESTDIR=$ARM_INSTALL_TREE

3 编译eXosip./configure --prefix=/usr一host=arm一linux--with一gnu一Id一disable一 statis一disable一glib--with一 osip=$ARM_INSTALL_TREE/usrMakemake install DESTDIR=$ARM-INSTALL-TREE

4编译oRTP./configure--prefix=/usr--host=arm一linux--with一gnu一Id一disable一static

Make

make install DESTDIR=gARM INSTALL TREE

语音网关最后将安装树目录内生成的库文件放到目标板根文件系统的/usr目录下。

 

语音网关语音编解码库的选择与移植

语 音网关SIP协议中并未规定所使用的编解码算法,这里我们选用语音压缩编解码的开源软件包HawkVoice。它支持Linux和Windows两个操作 系统平台,具有很好的可移植性。它内含许多免费的语音编解码器,例如G.71 1  u一law, Intel/DVI ADPCM, GSM, LPC 和CELP等。本文使用HawkVoice软件包里面的Intel/DVI  ADPCM语音编解码器。它与标准的ADPCM编解码不同的地方是编码器输 入和解码器输出直接就是16位的均匀PCM信号,跳过了A-law或u-law PCM与16位均匀PCM之间的转换。软件包提供了简单易用的编程接口, 编解码由以下两个函数实 现:adpcm_coder(short *indata, unsignedchar  *outdata,  int  len,  struct  adpcm_state*state) 和 adpcm_decoder(unsigned char *indata,short  *outdata,  int  len,  struct  adpcm- state*state)。编码函数adpcm_coder的参数indata是要编码的音频数据存放的缓冲区的指针,outdata是编码以后的数据存 放的缓冲区的指针,len是indata指针指向的缓冲区中数据的个数。state是一个adpcm_state类型的结构体的指 针,adpcm_state结构体保存预测值和预测系数的信息,以备编码和解码函数使用。解码函数adpcm_decoder的参数indata是要进行 解码的数据存放的缓冲区的指针,outdata是解码以后的音频数据存放的缓冲区的指针,其余的三个参数与编码函数的对应参数具有相同的含义。设置好缓冲 区、填好相应的参数,就可以调用编解码函数实现音频编解码。

上一条:分析移动WiFi技术的优点与缺点
下一条:语音网关-系统硬件电路设计