类别:Linux 应用LinPhone组件speex 声明:转载,请保留链接
注意:如有错误,欢迎指正。这些是我学习的日志文章......
***************************************************************************************************************************
在LinPhone这个系统中,第二个我们要介绍的第三方库组件:speex,Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码器,Speex也很适合网络应用,在网络应用上有着自己独特的优势,废话少说,进入speex功能介绍吧,主要功能如下:
Speex是基于CELP并且专门为码率在2-44kbps的语音压缩而设计的。特点如下:
■ 窄带(8kHz),宽带(16kHz)和超宽带(32kHz)压缩于同一位流。
■ 强化立体编码
■ 数据包丢失隐蔽
■ 可变比特率(VBR)
■ 语音捕捉(VAD)
■ 非连续传输(DTX)
■ 定点运算
■ 感官回声消除(AEC)
■ 噪音消除
对于噪音消除,这个功能,我做过测试,效果还是不错的,虽然消噪之后,声音会有一些.....但是,通过软件和硬件处理,效果还是不错的。
一:ARM Linux的编译
1):libogg的编译
如果想在ARM平台上编译speex,需要用到libogg,这是因为speex的测试demo程序用到了libogg,当然具体的应用不一定会用到libogg,所以,首先需要下载libogg,同时也要先编译libogg。http://www.xiph.org/downloads/ 是libogg的下载地址,我在解压之后的libogg的目录下建立了一个build.sh文件,同时还新建一个_install的文件夹,如下:
./configure --prefix= ./_install/ \ --host=arm-linux \ --target=arm-linux \ --disable-static \ --enable-fixed-point make make install
编译完成之后,会在libogg的路径下的_install目录下,会有libogg的相关库,之后将其拷贝到speex的_install的目录下。
2):speex的编译
speex的源码是在www.speex.org 网站上下载,首先在speex目录下先建立_install文件夹,同时也在speex的目录下建立一个build.sh文件。其设置支持是通过Speex配置脚本的:
-prefix=<path> 指定Speex安装其本路径(如 /usr)
-enable-shared/-disable-shared 是否编译共享库
-enable-static/-disable-static 是否编译静态库
-disable-wideband 取消Speex的宽带部分(典型的节省空间)
-enable-valgrind 为调试目的启用额外valgrind的命中率
-enable-sse 启用SSE指令(只在 x86/浮点)
-enable-fixed-point 编译Speex为无浮点单位(FPU)处理器
-enable-arm4-asm 启用汇编指定为ARMv4架构(只在gcc)
-enable-arm5e-asm 启用汇编指定为ARMv5E架构(只在gcc)
-enable-fixed-point-debug 只使用调试定点码(非常慢)
-enable-epic-48k 启用一个专门(不兼容)4.8kbps窄带模式(在1.1.x和1.2beta)
-enable-ti-c55x 启用支持TI C5x族
-enable-blackfin-asm 启动汇编指定为Blackfin DSP架构
-enable-vorbis-psycho 使编码器使用Vorbis心理学模型。
如下所示:
#./configure --prefix=/_install/ \ --host=arm-linux \ --target=arm-linux \ --disable-static \ --enable-fixed-point \ --enable-arm-asm \ #make #make install
编译之后,可以在_install的文件夹下的bin文件下,可以看到speexdec和speexenc两个测试程序。