今天说说Speex。 Speex是一种音频编码格式,并专门针对语音进行优化。它支持窄带(8KHz)及宽带(16kHz)的编码,支持可变比特率(VBR)以及丢包补偿等,因此非常适合VoIP应用。...参见:http://en.wikipedia.org/wiki/Speex 不过,维基百科也指出:由于有了更好的编码OPUS出现,Speex应该淘汰了——“Xiph.Org now considers...但无论如何,FreeSWITCH支持很多音频编码,自然也支持Speex。...FreeSWITCH对speex编码的支持是在mod_speex中实现的,但是,从今天起,它被挪到核心中去了,参见:http://fisheye.freeswitch.org/changelog/freeswitch.git...代码提交说明是“move speex codec into the core since it already has speed anyway”,不过我尚不知具体原因。
speex库中音频降噪效果不错,应该是应用最广泛的吧,speex库下载地址https://www.speex.org/downloads/,可以直接下载二进制代码使用,像配置OpenCV一样配置speex.../speex_preprocess.h> #include #define HEADLEN 44 #define SAMPLE_RATE (48000) #define...i; i = 0; speex_preprocess_ctl(state, SPEEX_PREPROCESS_SET_AGC, &i); i = 80000; speex_preprocess_ctl...(state, SPEEX_PREPROCESS_SET_AGC_LEVEL, &i); i = 0; speex_preprocess_ctl(state, SPEEX_PREPROCESS_SET_DEREVERB..., &vad); speex_preprocess_ctl(state, SPEEX_PREPROCESS_SET_PROB_START, &vadProbStart); speex_preprocess_ctl
而Speex提供了声学回声消除算法库,本文就简单用Speex对一段录音进行回声消除,当然这不是实时处理的。...Speex中回声消除API封装在语音处理API中,在最新版本的Speex中将语音处理相关的API独立封装成libspeexdsp。...原文参见http://www.360doc.com/content/11/1008/18/11192_154383516.shtml,原文所用speex版本是1.1.9,我们用的是speex-1.2beta3...1、speexEC.h #ifndef SPEEX_EC_H #define SPEEX_EC_H #include #include /*在项目属性里设置VC++...目录的包含目录和库目录分别为speex库中的include和lib,我用的是speex-1.2beta3-win32*/ #include #include
使用方便,下面见解析 低内存占用,提供捞底回收 多接口延伸,例如结果文件路径的返回,和文件的大小 基于 Speex jni 库,高效,自定义语音文件格式 解析 实例: private VoiceRecorderHelper...单位分贝 */ } } ); } 技术点 (可以不看) jni层:编译好 Speex.so
*/#ifdef HAVE_CONFIG_H#include "config.h"#endif/*使用回声消除器需要加#include "speex/speex_echo.h"*/#include "speex.../speex_echo.h"/*使用预处理器需要添加#include "speex/speex_preprocess.h"*/#include "speex/speex_preprocess.h"#include...SPEEX_PREPROCESS_SET_ECHO_STATE,echo_state);*/ speex_preprocess_ctl(den, SPEEX_PREPROCESS_SET_ECHO_STATE...(st, SPEEX_PREPROCESS_SET_AGC, &i); i=8000; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL.../speex_jitter.h>*/#include "speex/speex_jitter.h"#include union jbpdata { /*联合类型的声明,union是联合体关键字
完成上述配置之后,正式开始在Android中使用Speex进行音频编解码。主要包括以下步骤: 1、下载Speex源码(https://speex.org/downloads/)。...推荐使用Speex 1.2.0稳定版,由于目前Speex 已不再继续维护,官方建议使用Opus。但在某些场合,使用Speex已然足够满足需求。 ?...在jni中speex源码目录下的include/speex文件夹下,有一个speex_config_types.h.in文件,在include/speex目录下创建speex_config_types.h...speex <= nb_celp.c [armeabi] Compile thumb : speex <= quant_lsp.c [armeabi] Compile thumb : speex <...[armeabi] Compile thumb : speex <= speex_header.c [armeabi] Compile thumb : speex <= speex.c [armeabi
引入头文件 #ifdef USE_SPEEX #include #endif #ifdef USE_AAC #include "aacDecoder/include/neaacdec.h...audioOutput = (i16 *)malloc(640); auto mode = speex_lib_get_mode(SPEEX_MODEID_WB); speexState...= speex_decoder_init(mode); speex_bits_init(&speexBits); #endif #ifdef USE_AAC faacHandle =...{ speex_bits_read_from(&speexBits, (const char *)input, 52); speex_decode_int(speexState...释放资源 #ifdef USE_AAC faacDecClose(faacHandle); #endif #ifdef USE_SPEEX speex_decoder_destroy(speexState
编码流程 使用Speex的API函数对音频数据进行压缩编码要经过如下步骤: 定义一个SpeexBits类型变量bits和一个Speex编码器的内存指针变量enc。...调用speex_bits_init(&bits)函数初始化bits。 调用enc = speex_encoder_init(&speex_nb_mode)函数初始化enc。...其中speex_nb_mode是SpeexMode类型的变量,表示的是窄带模式。还有speex_wb_mode表示宽带模式、speex_uwb_mode表示超宽带模式。...表示要定义的参数类型,如SPEEX_GET_FRAME_SIZE表示设置帧大小,SPEEX_SET_QUALITY表示编码的质量等级;参数ptr表示要设定的值。...调用speex_bits_init(&bits) 函数初始化bits。 调用dec = speex_decoder_init(&speex_nb_mode) 函数初始化dec。
可选格式 ios android做音频相关的开发时可选用的格式有 mp3,speex,aac,amr,ilbc 已知应用 amr:微信 evemote speex:米聊 文件格式大小 mp3>aac>...amr/ilbc>speex 各个格式简介 amr:生成格式相对较小,Android原生支持,ios可用第三方库进行编码解码 speex:生成文件最小,Android、ios均需要用第三方库进行编码解码...文件小 ilbc:生成文件较小,ios 4.3以上支持,Android早期不支持可用第三方库 mp3:相比文件最大,比较流行的格式 个人推荐 相比下来,我还是比较推荐用amr格式,网上的教程多,又不像speex
其中唯一Open-source开源的两个编解码器之一就是speex。...2007年12月11日Speex1.2beta3中首次将Speex中所有非编解码器组件(预处理器、回声消除、抖动缓冲区)都已移至新的libspeexdsp中。...2014年12月6日推出的Speex 1.2rc2和SpeexDSP1.2rc2正式将speex编解码器库和speexDSP库拆分为单独的源代码。...-c -m 644 speex_echo.h speex_jitter.h speex_preprocess.h speex_resampler.h speexdsp_types.h '/home/jiajiahao...-1.2.1/include/speex”make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”make
int width, int height); /** * 设置音频数据(AAC/PCMA/PCMU/SPEEX..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB...timestamp,ByteBuffer parameter_info, int parameter_info_size); /** * 设置音频数据(AAC/PCMA/PCMU/SPEEX..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB
101. c=IN IP4 192.168.3.119. b=TIAS:96000. a=rtcp:4007 IN IP4 192.168.3.119. a=sendrecv. a=rtpmap:103 speex.../16000. a=rtpmap:102 speex/8000. a=rtpmap:104 speex/32000. a=rtpmap:125 opus/48000/2. a=fmtp:125 useinbandfec...8 9 101 c=IN IP4 27.194.24.94 b=TIAS:96000 a=rtcp:4007 IN IP4 192.168.3.119 a=sendrecv a=rtpmap:103 speex.../16000 a=rtpmap:102 speex/8000 a=rtpmap:104 speex/32000 a=rtpmap:125 opus/48000/2 a=fmtp:125 useinbandfec
设置SPEEX音频编码质量,一般设置到8即可。.../** * Set speex encoder quality(设置speex编码质量) * * @param quality: range with (0, 10),..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB,..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB,..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB
int width, int height); /** * 设置音频数据(AAC/PCMA/PCMU/SPEEX..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB...long timestamp,ByteBuffer parameter_info, int parameter_info_size); /** * 设置音频数据(AAC/PCMA/PCMU/SPEEX..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB
/third_party/speexdsp/include/speex/speexdsp_types.h:122:10: fatal error: 'speexdsp_config_types.h' file...found解决办法:speexdsp_types.h 是由linux下编译生成的,因此需要在Linux下编译整个Speexdsp源码,然后把在speexdsp原生库目录下build/include/speex...目录生成的speexdsp_types.h文件拷贝到要ohos源码下的third_party/speexdsp/include/speex目录下,2.json文件语法发生错误。...其用到的libspeexdsp_share.z.so的头文件如下:#include "speex_preprocess.h"#include "speex_echo.h"#include "speex_jitter.h.../export_interface.sh -I/home/jiajiahao/Desktop/OpenHarmony/sources/third_party/speexdsp/include/speex
而新版API加强了长版音频档的转录精准度,也新增支持WAV、Opus和Speex文件格式,且Google也宣称,新版语音识别API比旧版的批处理速度快3倍。 ?...而新版API加强了长版音频档的转录精准度,也新增支持WAV、Opus和Speex文件格式,且Google也宣称,新版语音识别API比旧版的批处理速度快3倍。...在正式版的云端语音识别API,Google加强了长度较长的音频档案转录精准度,以及新增支持WAV、Opus和Speex文件格式。Google也声称,新版语音识别API比旧版的批处理速度快3倍。
PWD/install --disable-libwebrtc --disable-libyuv --disable-v4l2 --disable-opencore-amrnb --disable-speex-codec...--disable-speex-aec --with-openh264=/home/lyz/work/broadcast_app/app/thirds_libs_src/pjproject-2.12.1...PWD/install --enable-libwebrtc --disable-libyuv --disable-v4l2 --disable-opencore-amrnb --disable-speex-codec...--disable-speex-aec --with-openh264=/home/lyz/work/broadcast_app/app/thirds_libs_src/pjproject-2.12.1
byte[] pps, int pps_len, int width, int height); /** * 设置音频数据(AAC/PCMA/PCMU/SPEEX...NT_MEDIA_CODEC_ID_AUDIO_BASE, * NT_MEDIA_CODEC_ID_PCMU, * NT_MEDIA_CODEC_ID_AAC, * NT_MEDIA_CODEC_ID_SPEEX..., * NT_MEDIA_CODEC_ID_SPEEX_NB, * NT_MEDIA_CODEC_ID_SPEEX_WB, * NT_MEDIA_CODEC_ID_SPEEX_UWB
PWD/install --disable-libwebrtc --disable-libyuv --disable-v4l2 --disable-opencore-amrnb --disable-speex-codec...--disable-speex-aec --with-openh264=/home/lyz/work/broadcast_app/app/thirds_libs_src/pjproject-2.12.1...PWD/install --enable-libwebrtc --disable-libyuv --disable-v4l2 --disable-opencore-amrnb --disable-speex-codec...--disable-speex-aec --with-openh264=/home/lyz/work/broadcast_app/app/thirds_libs_src/pjproject-2.12.1... --disable-speex-aec --with-openh264=/home/app/thirds_libs_src/pjproject-2.12.1/third_party/openh264
领取专属 10元无门槛券
手把手带您无忧上云