社区
多媒体/流媒体开发
帖子详情
求音频加减增益的算法
qingdaolibo
2010-12-26 03:13:29
通过DirectShow的SampleGrabber filter,我可以拿到音频PCM数据的buffer,但是如果对其做加减增益的处理,请高手帮忙,谢谢
...全文
948
18
打赏
收藏
求音频加减增益的算法
通过DirectShow的SampleGrabber filter,我可以拿到音频PCM数据的buffer,但是如果对其做加减增益的处理,请高手帮忙,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pp673802227
2013-07-23
打赏
举报
回复
请问有speex的增益降噪算法吗?
shangqt
2011-03-14
打赏
举报
回复
[Quote=引用 16 楼 shangqt 的回复:]
第一个参数是你每次speex_preprocess_run 做处理的sample个数,因为speex_preprocess_run函数没有指定buff长度的参数,所以需要在初始化时设定。
[/Quote]
自己的帖子居然无法编辑。。。。。
根据你的情况:“按照您说的方法,现在倒是有声音了,但是声音伴随着劈啦劈啦的杂音,而且声音的增益本身也没有变化” ,很有可能是你每次交给speex_preprocess_run的buff长度与你初始化时输入的长度不同导致的。
shangqt
2011-03-14
打赏
举报
回复
第一个参数是你每次speex_preprocess_run 做处理的sample个数,因为speex_preprocess_run函数没有指定buff长度的参数,所以需要在初始化时设定。
qingdaolibo
2011-01-06
打赏
举报
回复
Buffer是严格意义的PCM信号值
qingdaolibo
2011-01-06
打赏
举报
回复
还是不行呀,
frame_size = 48000/1000*10;
float q = 24000.0F;
pOutData是我从DirectShow里取出的Buffer,长度为4096
SpeexPreprocessState *st;
st = speex_preprocess_state_init(frame_size, 48000);
BYTE * p_SingleData =NULL;
hr = speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &y);
hr = speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &q);
hr = speex_preprocess_run(st, (spx_int16_t*)pOutData);
speex_preprocess_state_destroy(st);
如果frame_size = Buffer的长度,也就是4096,那就是没有声音,如果frame_size > 0 ,那么就会有劈啦劈啦声,如果frame_size = 0,程序就报错。这种情况应该和q是多少没有关系
hdq1115
2011-01-02
打赏
举报
回复
那肯定还是你的参数设定的有问题啊,自己再仔细检查检查吧
qingdaolibo
2010-12-31
打赏
举报
回复
按照您说的方法,现在倒是有声音了,但是声音伴随着劈啦劈啦的杂音,而且声音的增益本身也没有变化
hdq1115
2010-12-29
打赏
举报
回复
[Quote=引用 7 楼 qingdaolibo 的回复:]
还是贴代码吧!!如下:
SpeexPreprocessState * st;
st = speex_preprocess_state_init(SampleSize/2,48000);
int i=1;
hr = speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i);
f = 24000.0F;
hr = speex_……
[/Quote]
[Quote=引用 8 楼 qingdaolibo 的回复:]
现在的问题是,上述的代码在hr = speex_preprocess_run(st,(short*)pOutData);
执行之后pOutData都变成0了
[/Quote]
这个都变成零了,看下是不是参数设置的不正确,hr = speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &f); 有可能第二个参数设置的是错的,用另一个SET_AGC选项, 前辍也是 SPEEX_PREPROCESS_SET_AGC_XXXX,具体名字不太记得了,开发环境里面敲一下,有两个,选另一个试试,之前记得用一个会导致不发声的
祝好运!
hdq1115
2010-12-29
打赏
举报
回复
SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate); 这个函数里面的参数自己注意看下Speex的编程API,frame_size是一帧语音时长的样本个数,和你的 sampleing_rate 有关,比如你sampling_rate取 48000,而语音是每 10ms一帧,则 frame_size应该是 ( 48000样本/s)*10ms=480,另外还有一个再次强调下: frame_size只是表示一帧语音时长对应的语音样本个数,每个语音样本用几个字节来表示是另一回事
qingdaolibo
2010-12-27
打赏
举报
回复
现在的问题是,上述的代码在hr = speex_preprocess_run(st,(short*)pOutData);
执行之后pOutData都变成0了
CyberLogix
2010-12-27
打赏
举报
回复
Speex里面有AGC语音增益的代码,你可参考下
qingdaolibo
2010-12-27
打赏
举报
回复
还是贴代码吧!!如下:
SpeexPreprocessState * st;
st = speex_preprocess_state_init(SampleSize/2,48000);
int i=1;
hr = speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i);
f = 24000.0F;
hr = speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &f);
i=1;
hr = speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &i);
hr = speex_preprocess_run(st,(short*)pOutData);
speex_preprocess_state_destroy(st);
qingdaolibo
2010-12-27
打赏
举报
回复
现在还有个问题,就是SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate);这个函数怎么调用?我的DirectShow 的 音频buffer是48000的采样率,buffer的大小是4096,参数是不是可以如下填写:SpeexPreprocessState *speex_preprocess_state_init(4096/2,48000),一直没琢磨明白,还请明白的人指点一下
AudioAEC
2010-12-26
打赏
举报
回复
对,Speex 可以对声音进行增强。
hdq123
2010-12-26
打赏
举报
回复
若还有疑问联系我: 扣扣 403174794。
hdq123
2010-12-26
打赏
举报
回复
有一款开源的编解码器 Speex 提供有语音前后端处理技术,有AGC语音增益处理啊,你看看
qingdaolibo
2010-12-26
打赏
举报
回复
打错字了,不是“如果”,是“如何”
基于谱减法的
音频
信号噪声抑制
算法
实现理论知识学习总结
一、内容 1.
音频
信号噪声抑制原理 2. 谱减法的原理和相关
算法
3. WAV
音频
文件的格式 二、
音频
信号噪声抑制原理 2.1语音和噪声 1、冲激噪声 冲激噪声的时域波形是类似于冲激函数那样的窄脉冲,常见的消除冲激噪声的方式有两种: (1)对带噪语音信号的幅值
求
均值,将该均值作为判断的标准,超过该标准的视作噪声,在时域将其滤除。 (2)当噪声不太密集的时候,可以通过某...
05|
音频
降噪如何对症下药?
听到噪声,很多人可能首先想到的是深夜的广场舞曲、呼啸的东北风、车水马龙的呼啸而过。但其实噪声是一个相对的概念。如果你想听的目标只有人们说话的声音,那么所有其它的声音包括音乐、 风声等其就都是噪声,而如果你想听鸟语虫鸣,那人声对你来说也是噪声。 在这里主要聊的是当保留目标是人声时,噪声会有哪些分类,它们有什么特点,以及如何更好地保留人声去除噪声。这也是音视频工程师的主要工作场景。 噪声的分类 从通信系统的角度来说,噪声可以分为加性噪声和乘性噪声。 加性噪声与信号之间满足加性条件,即加噪信号是由噪声和源
SHARC
音频
DSP的
算法
详解(十)All Pass - Canonical (全通滤波器)
算法
的实现及代码详解
SHARC上,
算法
实现全通滤波功能,声音信号经过该滤波器以后频谱幅度不变,仅改变相位,即产生延时。
传统语音增强——最小均方(LMS)自适应滤波
算法
传统语音增强——最小均方(LMS)自适应滤波
算法
05|
音频
降噪概述(1)一传统降噪方法
单通道降噪概述
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章