应用speex进行音频去噪,speex功能很强大,因为opus的出现,用speex进行编码/解码的人几乎没有了,但是用speex来进行降噪,去除回声,增益还是很多。

这里用speex进行音频去噪,主要用如下几个关键点:

1,准确设置pcm音频的音频采样率,和帧长度,

st = speex_preprocess_state_init(FRAME_SIZE, FRAME_SAMPLERATE);//初始化

2,设置降噪参数,其中DENOISE_DB默认是-25,单位是dB(分贝);

int denoise = 1;

int noiseSuppress = DENOISE_DB;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &denoise); //降噪

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &noiseSuppress); //设置噪声的dB

源代码如下,main函数参数一是原始pcm文件名,参数二是去噪后的pcm文件名

#ifdef HAVE_CONFIG_H

#include "../config.h"

#endif

#include "speex/speex_preprocess.h"

#include

#define FRAME_SIZE 1152

#define FRAME_SAMPLERATE 32000

#define DENOISE_DB (-90)

int main(int argn, char* argv[]) {

char* szInFilename = NULL;

char* szOutFilename = NULL;

FILE* pInFileHandle = NULL;

FILE* pOutFileHandle = NULL;

short in[FRAME_SAMPLERATE];

int i;

SpeexPreprocessState *st;

int count=0;

float f;

printf("starting....\r\n");

if(argn != 3){

printf("please input 2 parameters\r\n");

return -1;

}

memset((void*)empty, 0, sizeof(empty));

szInFilename = argv[1];

szOutFilename = argv[2];

pInFileHandle = fopen(szInFilename, "rb");

if(!pInFileHandle){

printf("open file %s error\r\n", szInFilename);

return -2;

}

pOutFileHandle = fopen(szOutFilename, "wb");

if(!pOutFileHandle){

printf("open file %s error\r\n", szOutFilename);

fclose(pInFileHandle);

return -3;

}

st = speex_preprocess_state_init(FRAME_SIZE, FRAME_SAMPLERATE);

int denoise = 1;

int noiseSuppress = DENOISE_DB;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &denoise); //降噪

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &noiseSuppress); //设置噪声的dB

i=0;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i);

i=8000;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &i);

i=0;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB, &i);

f=.0;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &f);

f=.0;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &f);

int vad = 1;

int vadProbStart = 80;

int vadProbContinue = 65;

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_VAD, &vad); //静音检测

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_PROB_START , &vadProbStart); //Set probability required for the VAD to go from silence to voice

speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_PROB_CONTINUE, &vadProbContinue); //Set probability required for the VAD to stay in the voice state (integer percent)

while (1)

{

int vad;

int iLen = fread(in, sizeof(short), FRAME_SIZE, pInFileHandle);

if(iLen <= 0){

break;

}

if (feof(pInFileHandle))

break;

vad = speex_preprocess_run(st, in);

if(vad != 0){

printf("speech.\r\n");

fwrite(in, sizeof(short), FRAME_SIZE, pOutFileHandle);

}else{

printf("slience############################\r\n");

fwrite(in, sizeof(short), FRAME_SIZE, pOutFileHandle);

}

count++;

}

speex_preprocess_state_destroy(st);

fclose(pInFileHandle);

fclose(pOutFileHandle);

return 0;

}

编译的Makefile如下:

OBJS = test.o

CC = gcc

CFLAGS = -Wall -O -g -D HAVE_CONFIG_H

LD = /usr/local/lib/libspeexdsp.a

INCLUDE_PATH = /usr/local/include/speex

test : $(OBJS)

$(CC) $(OBJS) $(LD) -lm -I$(INCLUDE_PATH) -o test

test.o : test.c

$(CC) $(CFLAGS) -I$(INCLUDE_PATH) -c test.c

clean:

rm -rf *.o test

而编译speexdsp-1.2rc3库文件的脚本如下:

./configure --prefix=/usr/local --enable-shared --enable-static --enable-sse

make

make install

去噪后的效果,感觉不是很理想,原因应该是speex的去噪功能比较简单,基本上是以来声音分贝来进行去噪,所以不是很准确。

接下来去研究一下Audacity的源码,看看是否能提高降噪效果。

相关网址:

https://github.com/audacity/audacity

https://github.com/audacity/audacity/blob/ae5d29a04815cc41ccf36ef765a9f75636b8bd21/src/effects/NoiseRemoval.cpp

(runner42)

android speex 音频采样率,speex进行音频去噪相关推荐

  1. java转换音频采样率_转换音频采样率

    对于采样率,相信很多人知道这个词却不知道是什么意思. 官方解释:采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示.采样频率的倒数是采样周期 ...

  2. 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )

    文章目录 一. 头文件.成员变量准备 二. 创建 FAAC 编码器 三. 获取并设置 FAAC 编码器参数 四. 设置 FAAC 编码器编码标准 五. 设置 FAAC 编码器 AAC 编码规格 六. ...

  3. php能转换音频采样率吗,音频采样频率怎么设置-音频采样率转换软件下载

    如果你是一个音乐爱好者,又或者是你很喜欢听音乐,那么你应该会注意到歌曲的采样率,很多的歌曲的采样率是不一样的,不过大部分来说都是48000Hz的.那么音频采样率是什么?音频采样率跟音质有什么关系吗?又 ...

  4. php转换音频采样率,音频采样率转换 如何转换音频采样率

    如果你是一个音乐爱好者,又或者是你很喜欢听音乐,那么你应该会注意到歌曲的采样率,很多的歌曲的采样率是不一样的,不过大部分来说都是48000Hz的.那么音频采样率是什么?音频采样率跟音质有什么关系吗?又 ...

  5. 音频压缩工具——Speex的使用

    尊重原创,这篇文章是我转载的原文地址 http://blog.csdn.net/xyz_lmn/article/details/8013490 **************************** ...

  6. 音频压缩SPEEX应用,对讲机

    音频压缩SPEEX应用,对讲机 转载于:https://www.cnblogs.com/LittleTiger/p/10979563.html

  7. 音频编码-speex库的使用方法

    音频编码-speex库的使用方法 Speex是近年来开发出的一套功能强大的语音引擎,能够实现高质量和低比特率的编码.它不仅提供了基于码激励线性预测(CELP)算法的编/解码模块,而且在其最新发布的版本 ...

  8. Android手机音频采样率,手机音质差?提升音质必备App了解下

    在很多人的印象中,手机的音质水平并不高.特别是大多数的安卓机,抛却硬件不说,软件方面也存在一些音频输出的缺陷,例如播放音频时容易发生SRC等等. 不过就算是普通手机,也是可以通过一些APP来提升音质的 ...

  9. 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )

    文章目录 安卓直播推流专栏博客总结 一. AAC 音频格式解析 二. FLV 音频数据标签解析 1. 分析 FLV 格式中的 AAC 音频格式数据 2. AAC 音频特殊配置 3. AAC 音频数据标 ...

  10. 【Android FFMPEG 开发】OpenSLES 播放音频 ( 创建引擎 | 输出混音设置 | 配置输入输出 | 创建播放器 | 获取播放/队列接口 | 回调函数 | 开始播放 | 激活回调 )

    文章目录 I . FFMPEG 播放视频流程 II . OpenSLES 播放音频流程 III . OpenSLES 播放参考 Google 官方示例 IV . OpenSL ES 播放代码 ( 详细 ...

最新文章

  1. python程序采用unicode编码、英文字符,Python 与 Unicode
  2. cocos2d-x 错误异常抛出捕获和崩溃拦截
  3. 第五周项目一-三角形类雏形(4)
  4. 国办发明电〔2020〕27号:国务院办公厅关于2021年部分节假日安排的通知
  5. 微软网站下载XPerf没有成功
  6. 你所知道及不知道的骗贷、中介、欺诈团伙是怎么样的
  7. Oracle 根据一张发票的供应商,取供应商所有符合条件的发票的总额
  8. 【大会】海量高清视频服务端架构设计的变与不变
  9. 多线程java 银行_Java 多线程 之 银行ATM实例
  10. VB 获得磁盘的文件系统
  11. java difftime_Java8 日期时间操作
  12. Winform窗体验证登陆
  13. python xp系统_win XP的系统应该装哪个python的安装包?
  14. 总是听到有人说AndroidX,到底什么是AndroidX?
  15. 谈一下我对OOP的了解
  16. 【Pixiv】搜图教程和搜图网站
  17. centos大小写混乱问题
  18. 数据库之十二星座 水瓶座
  19. Android 引入高德地图 SDK
  20. 液晶显示器点屏方法步骤及参数表

热门文章

  1. freeMarker(四)——模板开发指南之模板
  2. 节理玫瑰花图怎么画_如何用Excel绘制节理玫瑰花图、水系玫瑰花图?如何将CAD属性平面角智能转化为方向角?...
  3. dnf 服务器喇叭怎么制作,DNF服务器喇叭要删除了吗 服务器喇叭删除后怎么聊天...
  4. 南京大学俞扬:环境模型学习——让强化学习走出游戏
  5. 【读书笔记】淘宝技术这十年
  6. 基于Node.js实现一个小小的爬虫
  7. 如何用photoshop做24色环_如何制作出Ps色环?
  8. 激光投影仪对比激光电视 成像原理和适用范围
  9. 模拟CMOS集成电路放大器总结(1)
  10. python强制关闭文件_python – 像“rm -f”中一样强制删除文件,或者强行从目录中取消链接文件路径...