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(或任何类型的音量)级别?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 python 中的麦克风获取声音输入,并即时处理它?