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

时间:2012-10-23 06:30:53

标签: java audio fft javasound

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

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

enter image description here

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

有人可以提供解决方案来解决Java中的这个问题吗?

1 个答案:

答案 0 :(得分:5)

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

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

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