gpt4 book ai didi

java - Java 中的麦克风级别

转载 作者:搜寻专家 更新时间:2023-11-01 01:30:03 24 4
gpt4 key购买 nike

我正在尝试通过 Java 访问麦克风的电平。我不需要记录任何东西,我只想知道声级的相对比例。

这可能是实时的吗?

如果这是不可能的,也许这可行:当电平超过某个值时开始记录,当电平低于某个电平一定时间后停止记录四分之一秒的位并读取其音量,如果低于阈值则停止记录。

提前致谢

最佳答案

http://www.technogumbo.com/tutorials/Java-Microphone-Selection-And-Level-Monitoring/Java-Microphone-Selection-And-Level-Monitoring.php

这方面的文章不错。对我帮助很大。

据我所知,这使用了@Nick 的回答中提到的均方根

基本上:

public int calculateRMSLevel(byte[] audioData)
{
long lSum = 0;
for(int i=0; i < audioData.length; i++)
lSum = lSum + audioData[i];

double dAvg = lSum / audioData.length;
double sumMeanSquare = 0d;

for(int j=0; j < audioData.length; j++)
sumMeanSquare += Math.pow(audioData[j] - dAvg, 2d);

double averageMeanSquare = sumMeanSquare / audioData.length;

return (int)(Math.pow(averageMeanSquare,0.5d) + 0.5);
}

和用法:

int level = 0;
byte tempBuffer[] = new byte[6000];
stopCapture = false;
try {
while (!stopCapture) {
if (targetRecordLine.read(tempBuffer, 0, tempBuffer.length) > 0) {
level = calculateRMSLevel(tempBuffer);
}
}
targetRecordLine.close();
} catch (Exception e) {
System.out.println(e);
System.exit(0);
}

关于java - Java 中的麦克风级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com