Как рассчитать средняя среднеквадратичная энергия образцы wav файл, который записывается в массив в Java
Я делаю диссертацию, которая включает в себя создание приложения, которое слушает фоновый шум и обнаруживает высокоэнергетический собачий лай.
Я использовал следующий код для хранения образцов wav-файла в буфере массива.
public static void main(String[] args) вызывает исключение IOException {
File file = новый файл("dogtest2.wav");
ByteArrayOutputStream out = новый ByteArrayOutputStream();
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
инт читать;
байт бафф[];
buff = новый байт[1024];
while ((read = in.read(buff)) > 0)
{
из.write(buff, 0, read);
}
из.промывать();
byte[] audioBytes = out.toByteArray();
}
}
Теперь я хочу декодировать буферные сэмплы и найти среднеквадратичное (среднее) значение всех сэмплов, чтобы все, что выше этого, можно было пометить как необычное акустическое событие.
Что я уже пробовал:
Я постоянно исследовал это в интернете, и мой руководитель сказал мне, что мне нужно будет использовать СРЕДНЕКВАДРАТИЧНУЮ энергию для анализа звуковых кадров из волнового файла для получения средней энергии. До сих пор я не нашел ничего, что имело бы отношение к моей ситуации (насколько я могу судить ).
Любые указания о том, что я должен читать, или любые другие советы были бы очень признательны.