如何获取通过麦克风来获取当前说话的音量?

凌枫 2010-10-27 03:02:58
使用Wave系统API采集音频输入的数据,当数据缓存区满了后,收到消息取得数据后,如何根据这里面的数据,来计算出当前说话的声音分贝?
谁能讲述一下具体的流程,最好能给个Demo.
邮箱:mobailwang@163.com
...全文
724 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
DRAGON56789 2013-05-12
  • 打赏
  • 举报
回复
请发一份给我,谢谢,lcd_love@163.com
zhangzhiwei12 2013-04-20
  • 打赏
  • 举报
回复
能给我发一个吗?1036832401@qq.com
Torch009 2013-04-16
  • 打赏
  • 举报
回复
能不能给我一份呀,690271929@qq.com,多谢了
SimpleDrunk 2013-01-06
  • 打赏
  • 举报
回复
跪求楼主也发一份demo,万分感谢!! lihuan777@gmail.com
yyd01245 2012-10-15
  • 打赏
  • 举报
回复
忘了邮箱了,yydgame@163.com
yyd01245 2012-10-15
  • 打赏
  • 举报
回复
麻烦楼主也发个给我吧,我刚接触这块的工作,需要学习下,谢谢!
hy3268663 2012-10-10
  • 打赏
  • 举报
回复
烦请楼主也给发个demo,谢谢了!! 361871835@qq.com
anzhuge 2012-08-21
  • 打赏
  • 举报
回复
烦请楼主也给发个demo,谢谢了!! anzhuge@163.com
jiaozhan2012 2012-04-27
  • 打赏
  • 举报
回复
烦请楼主也给发个demo,谢谢了!! 307596494@qq.com
凌枫 2012-01-30
  • 打赏
  • 举报
回复
已发送
leimao361 2012-01-15
  • 打赏
  • 举报
回复
继续求demo急用
18085276@qq.com
谢谢啊
vista_vitas 2011-12-30
  • 打赏
  • 举报
回复
我的邮箱是tryonce@126.com。求帖子里那个demo。感谢啊
dhy0719 2011-10-25
  • 打赏
  • 举报
回复
我得邮箱是 616988155@qq.com 谢谢楼主
dhy0719 2011-10-25
  • 打赏
  • 举报
回复
我也需要这样的的一个demo 希望楼主把做好的发给我参考一下
dhy0719 2011-10-25
  • 打赏
  • 举报
回复
我想问一下你,从wav二进制文件里面,得到它data chunk那部分的数据,应该要怎么处理才能得到它的音量或者分贝?
sheldon4090 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tufaqing 的回复:]

你这种做法也太粗糙了,还是要求音量啊,就用我的方法,那个就是音量。你最多的声音对应它的一个值就行了,大概最大声音也就40,自己对照一下就好了,你不一定非要得到现实中的40分贝和他对应,你发出一个40分贝的声音,计算音量可能等于20,你将音量所有基数乘以2不就可以了吗?其实你根本不用关心多少分贝,这个现实中就很难计算的,我计算的音量等于多少了你觉得比较大了就用里面的音量值衡量就行了。
关于自动调……
[/Quote]

我想问一下你,从wav二进制文件里面,得到它data chunk那部分的数据,应该要怎么处理才能得到它的音量或者分贝?
凌枫 2010-10-28
  • 打赏
  • 举报
回复
算了,我现在是这样处理的:捕获到的每次数据,求出最大的一个采样振幅,因为声音是一个依次递增或者递减的一次过程,并且我们采用44100HZ的频率去采集,每次的数据回来也是很快的,然后只把那个最大采样振幅按照一定的公式,得到一个分贝值,用于判断声音大了,就减小麦克风的音量。你看这样个流程,大体上有没有什么问题?
我只是大致用这个计算方式去实现这个功能。之前一直研究那个分贝的计算,没有得出一个有用的结果,一直不甘心,碰到你了,所以问的多一点。
看来,这个要深入研究,还要去彻底了解声音学方面的知识啊。
tufaqing 2010-10-28
  • 打赏
  • 举报
回复
小于0部分表示没有音量,当0处理。音量值这个也是大概的,直接求平均的,大概达到效果就可以了,不是科学计算。乘以8是我给的一个大概放大值,为了将红线映射到和原来框框里比较好的显示。比较精确的算法比较复杂,人耳对不同频率的分贝值感应不一样,可以了解一下人耳等响曲线。我了解也不是太深入,你自己要很深入了解的话可以修改算法。
凌枫 2010-10-28
  • 打赏
  • 举报
回复
不好意思,之前我注意到了红色,但是没明白红色是什么意思。
double vol = 0;
for(int i = 0; i < m; i++)
{
if(fin[i] > 0) vol += fin[i];
}
vol /= m;
vol *= 8;
FOR循环是将所有为正的数都相加。
那么这个vol值是代表的是什么意思?然后为什么后面要乘以8呢?
然后后面画红色的时候,是用100-vol,那这个又是什么意思?

不好意思啊,我最近也是第一次接触这个音量,看了很多资料和计算公式,但是大部分资料里面解释的都不一样,难得碰到一个懂这个的活人,所以问题也就多点。
tufaqing 2010-10-28
  • 打赏
  • 举报
回复
你测试了没有,最后一个红色的线就是声音的音量值啊。
分贝值很难衡量,不能和实际物理世界的声音分贝等同。因为录音设备录入的时候有控制阈值音量大小,播放到喇叭的时候也是可以调整音量的。但那个值是和分贝成等比的,所以自己大概把握一下。
加载更多回复(5)

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧