DSP

移植speex库

2019-07-13 15:11发布

1、下载speex源代码 http://download.csdn.net/detail/codeheng/9523856
2、配置makefile ./configure --host=arm-linux CC=arm-linux-gcc --enable-static --disable-shared 3、make 4、xxspeexdsp-1.2rc3libspeexdsp.libs路径下会生成静态库文件 5、xxspeexdsp-1.2rc3libspeexdsp 会有一些demo供参考 6、编译链接的时候加上 -lm
//speex不是线程安全的,如多线程调用必须加锁 static SpeexPreprocessState* init() { SpeexPreprocessState* SPstat = speex_preprocess_state_init(160, 8000); // 8000: 采样率;160:20ms的采样点(8000/1000*20) int value = 1; speex_preprocess_ctl(SPstat, SPEEX_PREPROCESS_SET_DENOISE, &value); value = -50; speex_preprocess_ctl(SPstat, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &value);//降噪强度 return SPstat; } static int audio_speex_denoise(SpeexPreprocessState* SPstat, unsigned char* buf, int size) { int samples = 160; // 20ms 的采样点 int frame_size = samples*2; // 每个采样点2bytes int remain_size = size; unsigned char* begin = buf; while (remain_size >= frame_size) { speex_preprocess_run(SPstat, (short*)begin);// 每调一次处理20ms个采样点(与speex_preprocess_state_init一致) //如果不是frame_size的整数倍,则想办法弄成整数倍,否则会有部分数据得不到降噪处理 begin += frame_size; remain_size -= frame_size; } return 0; }