社区
多媒体/流媒体开发
帖子详情
如何通过麦克风来获取当前说话的音量或分贝高低
gooyan
2010-12-29 02:35:52
设施:PC机+麦克风+软件
软件能通过麦克风获得观众掌声、欢呼声最高音量即可。
关键是软件怎么实现呢?请给个思路或代码。谢谢
gooyan@163.com
...全文
2629
20
打赏
收藏
如何通过麦克风来获取当前说话的音量或分贝高低
设施:PC机+麦克风+软件 软件能通过麦克风获得观众掌声、欢呼声最高音量即可。 关键是软件怎么实现呢?请给个思路或代码。谢谢 gooyan@163.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
麦田的守望-lion
2013-01-07
打赏
举报
回复
我也遇到了这个问题,求解
quakeguobiao
2011-03-05
打赏
举报
回复
他是uchar,音频都是震动的,所以中点127是无声静音。
dengzikun
2010-12-30
打赏
举报
回复
好像是在对话框的一个Process函数中。
dengzikun
2010-12-30
打赏
举报
回复
呵呵,手头没有源码。里边有一个FFT类,你找找哪里用这个类了。
gooyan
2010-12-30
打赏
举报
回复
dc.LineTo(xnow/100,rect.bottom/2 - 63 - ynow);
gooyan
2010-12-30
打赏
举报
回复
没看到啊,就是上面的一段函数,就画线了
dengzikun
2010-12-30
打赏
举报
回复
[Quote=引用 11 楼 gooyan 的回复:]
下面的函数是响应MM_WIM_DATA消息,并画波形图,也没有看到fft转换啊。
if(ynow >= 0)
ynow = 127 - ynow;
else
ynow = -(128 + ynow);
dc.LineTo(xnow/100,rect.bottom/2 - 63 - ynow);
不明白什么意思,为什么出来127,128和63这些数字
WAVEHDR *……
[/Quote]
这里应该是振幅波形。你看他的频谱图处理,里面有FFT.
dengzikun
2010-12-30
打赏
举报
回复
[Quote=引用 10 楼 gooyan 的回复:]
windows下可以用wave系列函数或dsound采集到声音PCM数据,
然后分帧做FFT变换,计算音量。FFT网上有代码。
PCM数据是什么数据呢?
MM_WIM_DATA消息里面的吗?WAVEHDR中的lpdata吗?
[/Quote]
采集出来的就是PCM数据。
gooyan
2010-12-30
打赏
举报
回复
下面的函数是响应MM_WIM_DATA消息,并画波形图,也没有看到fft转换啊。
if(ynow >= 0)
ynow = 127 - ynow;
else
ynow = -(128 + ynow);
dc.LineTo(xnow/100,rect.bottom/2 - 63 - ynow);
不明白什么意思,为什么出来127,128和63这些数字
WAVEHDR *pwhi;
pwhi->lpData=waveBufferRecord[k];
void CAddnewdataDlg::OnMM_WIM_DATA(UINT wParam,LONG lParam)
{
pwhi=&whis[bufflag];
waveInUnprepareHeader(hwi,pwhi,sizeof(WAVEHDR));
pwhi=&whis[MAX_INQUEU - 1 - bufflag];
pwhi->dwFlags=0;
pwhi->dwLoops=0;
waveInPrepareHeader(hwi,pwhi,sizeof(WAVEHDR));
waveInAddBuffer(hwi,pwhi,sizeof(WAVEHDR));
static unsigned char prevBuf[BUFSIZE];
memcpy(prevBuf,waveBufferRecord[bufflag], BUFSIZE);
bufflag = (bufflag + 1)%MAX_INQUEU;
///////////////////////////////////
CClientDC dc(this);
if(xnow == 110250)
{
dc.SelectObject(&penDot);
dc.FillSolidRect(mrect,RGB(0,0,180));
int width = mrect.Width();
int heigh = mrect.Height();
for(int i=0;i<21;i++)
{
dc.MoveTo(mrect.left+i*width/20,rect.top);
dc.LineTo(mrect.left+i*width/20,rect.bottom - 130);
}
for(int j=0;j<13;j++)
{
dc.MoveTo(mrect.left,rect.top+j*heigh/13);
dc.LineTo(mrect.right,rect.top+j*heigh/13);
}
xnow = 0;
}
dc.MoveTo(xnow/100,rect.bottom/2 - 63);
dc.SelectObject(&plotpen);
double ynow1=0;
if(timedisply == true)
{
for(int k = 0;k <BUFSIZE;k++)
{
ynow = prevBuf[k];
if(ynow >= 0)
ynow = 127 - ynow;
else
ynow = -(128 + ynow);
dc.LineTo(xnow/100,rect.bottom/2 - 63 - ynow);
xnow = xnow + 1;
}
}
}
gooyan
2010-12-30
打赏
举报
回复
windows下可以用wave系列函数或dsound采集到声音PCM数据,
然后分帧做FFT变换,计算音量。FFT网上有代码。
PCM数据是什么数据呢?
MM_WIM_DATA消息里面的吗?WAVEHDR中的lpdata吗?
gooyan
2010-12-30
打赏
举报
回复
声音波形幅度值(峰值)有没有最大、最小,是多少啊
dengzikun
2010-12-30
打赏
举报
回复
[Quote=引用 7 楼 gooyan 的回复:]
对录完的保存为文件的声音或正在录音的内存数据怎么分析波形或音量呢?
[/Quote]
FFT变换。
参考
gooyan
2010-12-30
打赏
举报
回复
对录完的保存为文件的声音或正在录音的内存数据怎么分析波形或音量呢?
dengzikun
2010-12-29
打赏
举报
回复
没有直接的方式,只能写程序实现。
gooyan
2010-12-29
打赏
举报
回复
这方面不了解,感觉太难了。没有现成的函数能获取麦克风说话声音大小的吗?
dengzikun
2010-12-29
打赏
举报
回复
或者找开源的播放器,应该有相关的代码。
dengzikun
2010-12-29
打赏
举报
回复
那个帖子已经说的很清楚了。
剩下就是具体实现了。
windows下可以用wave系列函数或dsound采集到声音PCM数据,
然后分帧做FFT变换,计算音量。FFT网上有代码。
gooyan
2010-12-29
打赏
举报
回复
参考??
dengzikun
2010-12-29
打赏
举报
回复
参考
FFmpeg4.3开发系列之10:采集
麦克风
AAC+MP3编码存储直播
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习:采集
麦克风
、PCM重采样、AAC或MP3音频编码存储、并直播。具体内容包括:1.FFmpeg采集
麦克风
并存储为PCM。2.PCM重采样原理及实战。3.采集
麦克风
并实时转码AAC或MP3并保存文件。4.采集
麦克风
并实时转码AAC并可以直播。 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。 目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。
Android
获取
麦克风
的
音量
(
分贝
)
基础知识 度量声音强度,大家最熟悉的单位就是
分贝
(decibel,缩写为dB)。这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压(20微帕,人类所能听到的最小声压)。因此日常中说道声音强度是多少多少
分贝
时,都是默认了一个很小的参考值的。 而Android设备传感器可以提供的物理量是场的幅值(amplitude),常用下列公式计算
分贝
值: 从S
C# 终于会实时获得
麦克风
的响度了
哇塞,查了好久,网上的各种烦,像我这种没耐心写着玩玩的菜比根本懒得看,关键词查了响度,频率啊,不过我这种垃圾都是百度的。。。 终于找到了个简单的,来自哪里我也找不到了 NAUDIO官网有下 好吧,我承认我就是想自己写个八分音符酱,可是声音真的好难啊 代码: using System; using NAudio.Wave; using System.Windows;
android
麦克风
动画,用ClipDrawable实现音频录制
麦克风
讲话效果
麦克风
由于最近项目开发需要用到自定义SeekBar,于是又对android下的各种类型drawable进行了一个全面系统的认识,只能感慨drawable的功能还是很强大的。通过自定义SeekBar有感而发,尝试用ClipDrawable实现音频录制过程的一个
麦克风
录制效果:在实现开发之前先让我们一起认识两种类型的Drawable:LayerDrawableLayerDrawable可以包含一个dr...
UE4-音频音高和
音量
控制基础技巧
音频音高和
音量
控制基础技巧问题描述解决技巧 问题描述
音量
和音高是UE4场景搭建绕不过的一个坎儿 可能你需要以不同的
音量
和音高播放一段音频. 可能你需要一段音频在不同的时刻以不同的
音量
和音高播放. 解决技巧 第一个问题: 设置音频的
音量
和音高,并恒定的播放到结束,这时候你需要调制器节点 这很常见. 第二个问题:一段音频在播放的不同时刻有不同的音调和音高,这时候你需要envelope节点: ...
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章