我想写一个语音压力分析工具。我打开音频流进行阅读:
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算法的更多信息?
答案 0 :(得分:2)
您需要将字节转换为幅度并绘制它们。请参阅此问题,了解如何点缀它:Obtain wave pattern of a audio file in Java
至于算法,维基百科说它的pseudescience,我怀疑它在公共领域会有很多。