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

use*_*408 6 java audio fft javasound

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

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

在此输入图像描述

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

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

Den*_*kiy 5

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

(double) (b2 << 8 | b1 & 0xFF) / 32767.0;
Run Code Online (Sandbox Code Playgroud)

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

  • @BjornRoche:OP说过使用`AudioInputStream`,它会跳过标题并只提供有效的PCM字节. (2认同)