用Java获取音频文件的波形图案

我想知道如何从音频文件中获取振幅等音乐信息?

假设我们有一个原始音频文件,我想从文件中提取数据,这允许我生成一个曲线,如http://www1.icsi.berkeley.edu/Speech/mr/nearfar.html 。 获得此曲线后,我将执行FFT等。

在此处输入图像描述

我一直在尝试在Java Sound中搜索解决方案,但到目前为止我只知道我可以使用AudioInputStream将数据倒入byte[] 。 但是如何将该byte[]转换为double[] ,其中包含有关声音的实际信息? 在这种情况下, double[]的值表示幅度。

有谁能提供解决方案来解决Java中的这个问题?

典型的wav文件是16位小端,因此你可以取两个连续的字节b1和b2,并得到如下的幅度:

 (double) (b2 << 8 | b1 & 0xFF) / 32767.0; 

如果输入是立体声,则前两个字节将是左声道,然后是右声道的两个字节。