我想知道如何从音频文件中获得诸如振幅之类的音乐信息?
假设我们有一个原始音频文件,我想从这个文件中提取数据,它允许我生成一个曲线,比如http://www1.icsi.berkeley.edu/Speech/mr/nearfar.html。一旦我得到了这条曲线,我将执行FFT等。

我一直试图在Java中寻找解决方案,但到目前为止,我只知道我可以使用byte[]将数据注入AudioInputStream。但是如何将该byte[]转换为包含声音的实际信息的double[]呢?在这种情况下,double[]中的值表示振幅.
有谁能提供一个用Java解决这个问题的解决方案吗?
发布于 2012-10-23 06:37:44
典型的wav文件是16位的小端点,所以您可以将每两个连续的字节( b1和b2 )取下来,并得到如下的振幅:
(double) (b2 << 8 | b1 & 0xFF) / 32767.0;如果输入是立体声的,那么前两个字节将是左通道,然后是两个字节用于右通道。
https://stackoverflow.com/questions/13024683
复制相似问题