我想知道如何从音频文件中获取振幅等音乐信息?
假设我们有一个原始音频文件,我想从文件中提取数据,这样我就可以生成http://www1.icsi.berkeley.edu/Speech/mr/nearfar.html之类的曲线。获得此曲线后,我将执行FFT等。
我一直在尝试在Java Sound中搜索解决方案,但到目前为止我只知道我可以使用byte[]
将数据倒入AudioInputStream
。
但是,如何将byte[]
翻译成包含声音实际信息的double[]
?在这种情况下,double[]
中的值表示幅度。
有人可以提供解决方案来解决Java中的这个问题吗?
答案 0 :(得分:5)
典型的wav文件是16位小端,所以你可以取两个连续的字节b1和b2,并得到如下幅度:
(double) (b2 << 8 | b1 & 0xFF) / 32767.0;
如果输入是立体声,前两个字节将是左声道,然后是右声道的两个字节。