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

Posted

技术标签:

【中文标题】java - 如何从java中的麦克风获取dB(或任何类型的音量)级别?【英文标题】:How to get the dB(or any kind of volume) level from a microphone in java? 【发布时间】:2011-04-27 18:41:51 【问题描述】:

如果我要问一些已经问过的问题,我真的很抱歉,但我到处看了看,什么都没出现。

我正在尝试使用 java sound api 即时读取房间中的当前音量。我注意到我从麦克风混音器获得的控件对此无济于事,从我所见,人们建议从 TargetDataLine 读取一小段声音并使用均方根算法检查音量。

实际问题 :) 问题是,每当我在样本上运行 rms 时(我为此使用 PCM_SIGNED,44100Hz 16 位),当我没有背景噪音时,我得到的值在 20-30 之间,当我说话/喊叫/说话时,我得到的值高达 60。 (我尝试从 100-44100 的缓冲区大小读取行 缓冲区大小越小,rms 越低 - 但总体而言 - 安静约为 10,噪音约为 30。)

问题是,当我播放我刚刚录制的内容时,您可以完美地听到所有内容,并且没有背景噪音。

tl;博士 谁能(请)告诉我一种从字节数组读数(PCM SIGNED 44100Hz 16bit)中分辨音量的方法?

先谢谢你的回答!

【问题讨论】:

【参考方案1】:

有关 RMS,请参阅 this reply。

【讨论】:

以上是关于java - 如何从java中的麦克风获取dB(或任何类型的音量)级别?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 从 USB 麦克风录制声音

如何从 python 中的麦克风获取声音输入,并即时处理它?

java - 如何从java中的executeUpdate OR update中获取值?

Java Sound API - 如何获取麦克风设备信息?

Java 声音采样器未完成获取缓冲区

如何从另一个 java 类中的 jTextField 或 jFormattedTextField 获取数据