如何从麦克风输入中获取音量

Posted

技术标签:

【中文标题】如何从麦克风输入中获取音量【英文标题】:How to get volume from mic input 【发布时间】:2011-04-22 23:50:15 【问题描述】:

我通过 AudioRecord 接口使用麦克风输入(3.5 毫米)作为一种模数转换器。我需要大约每 1(最坏情况)到 3(最好情况)毫秒采样一次并测量音量(相对电压)。只要我能看到峰值,绝对电压并不重要。

问题是我对音频知之甚少。有人可以推荐我如何设置我的 AudioRecord 和缓冲区,比如什么大小等?

是否可以在不使用 FFT 算法的情况下观察振幅?

谢谢

【问题讨论】:

【参考方案1】:

这个应用程序是实时的还是你要记录波形、存储它然后查看它?对于这个答案,我假设处理将离线完成。

您需要每 1 到 3 毫秒采样一次(从最坏情况到最好情况)。如果我的计算没有错,那意味着采样率分别为 1000 - 333 Hz。 android 中的采样率受编码器(输出格式)的最低采样率要求的限制。查看supported audio/video formats,似乎大多数格式都不支持您选择的采样率。因此,您可以尝试以 wav 格式进行编码(它可能具有您需要的采样率),或者以任何格式记录波形,下采样到您想要的频率范围,然后进行分析。

此外,您可以查看此应用程序 - Audalyzer 以查看波形。

是的,您可以在不获取 FFT 的情况下查看幅度,实际上,不是对信号进行 FFT 处理并按照记录的方式(在时域中)查看它,这可能是最好的方法。

HTH, 斯里拉姆

【讨论】:

我相信这将是实时的。我正在制作一个与霍尔效应传感器一起工作的车速表,该传感器检测车轮上的磁铁。每次车轮转动时,它都会通过“麦克风”传感器发送一个电压脉冲。我不需要保留任何音频数据,我只需要准确检测脉冲,这样我就可以得到一个相对时间来相互比较并获得车轮 PRM。

以上是关于如何从麦克风输入中获取音量的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何从java中的麦克风获取dB(或任何类型的音量)级别?

如何显示我的麦克风的当前音量?

调整麦克风输入音量

管理对麦克风输入和系统音量的访问

如何在 iOS 7 中获得麦克风音量?

如何以编程方式在 Android 中调整麦克风音量