织梦CMS - 轻松建站从此开始!

老快乐十分开奖结果:湖南快乐十分玩法

speex进行音频去噪

jackyhwei 发布于 2016-03-11 10:55 点击:次 
应用speex进行音频去噪,speex功能很强大,因为opus的出现,用speex进行编码/解码的人几乎没有了,但是用speex来进行降噪,去除回声,增益还是很多。这里用speex进行音频去噪,主要用如下几个关键点

湖南快乐十分玩法 www.7mhm0.cn 应用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 <stdio.h>

#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)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [//www.7mhm0.cn/a/201603/17438.html]
本文出处:博客园 作者:runner42 原文
顶一下
(9)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
将本文分享到微信
推荐内容

  • 呵呵,有见地,有深度。 2019-05-14
  • 赋予妇女更多权利!沙特首次向女性发驾照 2019-05-14
  • 河流旅行地中国国家地理网 2019-05-13
  • 一行两会传递金融开放信号 沪伦通制度安排就绪  2019-05-01
  • 外媒热议习近平讲话:中国军队现代化速度超越西方想象 2019-04-21
  • 原始社会为何会走向私有制?就是有这样的阶级要过得比共同一起生活更好,要过得比大多数人的生活好,自然就有了阶级斗争,要过得比大多数人更好的阶级就战胜要共同一起生活 2019-04-21
  • 始终坚持以人民为中心的发展思想不断满足群众日益增长美好生活需要 2019-04-14
  • 人民网评:医疗服务应该回归患者本位 2019-04-14
  • 鹿晗解说、姜文定制宣传片 世界杯主题的网综来了 2019-04-12
  • 【北京丰泰康宏车型报价】北京丰泰康宏综合店车型价格 2019-04-10
  • 新生儿生理性黄疸 多吃多拉可助减退 2019-04-03
  • 立秋日 滇池上空出现七彩云霞 2019-04-03
  • 西安楼市进入短暂调整期 摇号细则近日将出 2019-03-25
  • 左手公信,右手公益,两手都硬气 2019-03-25
  • 年龄大了,也想积点口德,已经给你笔下留情了。 2019-03-16
  • 966| 937| 921| 944| 216| 444| 247| 203| 751| 897|