Как интерпретировать звуковые байты?

Я хочу написать инструмент анализа голосового стресса. Открываю аудиопоток для чтения:

TargetDataLine line;
AudioFormat format = new AudioFormat((float) 44100, 16, 1, true, false);
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format);
// Begin audio capture.
line.start();

а затем цикл:

// Read the next chunk of data from the TargetDataLine.
numBytesRead = line.read(externalData, 0, externalData.length);

Я получаю массив с байтами, поскольку externalData определяется следующим образом:

public static byte[] externalData = new byte[1024];

Я хочу знать, как интерпретировать эти данные? Я попытался построить его по значению байта, но я думаю, что это неправильно. Нанесенные байты

Ось X — это время, а ось Y — значение байта.

PS: Где я могу найти больше информации об алгоритме McQuiston-Ford?


person Mihail Burduja    schedule 03.11.2012    source источник


Ответы (1)


Вам нужно преобразовать байты в амплитуду и построить их. Посмотрите этот вопрос о том, как расставить точки: Получить волновой узор аудиофайла в Java

что касается алгоритма, википедия говорит, что это лженаука, я сомневаюсь, что о нем будет много информации в открытом доступе.

person Denis Tulskiy    schedule 03.11.2012
comment
Измерение стресса возможно, но использование этой информации для обнаружения лжи научно не доказано. - person Liam; 09.09.2013