2 回答

TA贡献1860条经验 获得超9个赞
在Java中开始录制操作时,如何检测静音?
计算一组声音帧的dB或RMS值,并确定将其视为“静音”的级别。
什么是PCM数据?
数据是在脉冲编码调制格式。
如何用Java计算PCM数据?
我不明白这个问题。但是,猜测它与speech-recognition标记有关,我有一些坏消息。理论上,这可以使用Java Speech API来完成。但是,显然没有适用于API的“语音到文本”实现(只有“文字到语音”)。
我必须计算语音识别项目的均方根值。但是我不知道如何用Java计算。
对于信号double范围在-1到1之间的单个通道,可以使用此方法。
/** Computes the RMS volume of a group of signal sizes ranging from -1 to 1. */
public double volumeRMS(double[] raw) {
double sum = 0d;
if (raw.length==0) {
return sum;
} else {
for (int ii=0; ii<raw.length; ii++) {
sum += raw[ii];
}
}
double average = sum/raw.length;
double sumMeanSquare = 0d;
for (int ii=0; ii<raw.length; ii++) {
sumMeanSquare += Math.pow(raw[ii]-average,2d);
}
double averageMeanSquare = sumMeanSquare/raw.length;
double rootMeanSquare = Math.sqrt(averageMeanSquare);
return rootMeanSquare;
}
有一个字节缓冲区来保存行中的输入值,我应该使用该缓冲区做什么?
如果使用该volumeRMS(double[])方法,则将byte值转换double为-1到1范围内的值的数组。
添加回答
举报