实时读取音频字节数据

时间:2011-02-19 22:34:40

标签: java audio fft

目标是获得一个简单的2d音频可视化器,它对音乐有些敏感。

我已经设置了基础知识,我的图形将响应一些数据被输入。给定一个文件,我加载一个audioInputStream进行播放(这很好),并在线程中运行。在另一个线程中,我想以接近回放的速率提取字节数据(或者更快,以允许延迟处理该数据)。然后,我想将其提供给FFT过程,并将结果数据提供给我的图形对象,该图形对象将其用作任何可视化的参数。

我对这个过程有两个问题:

1)如何获取字节数据并以与文件正常播放相匹配的速率处理它?是否使用audioInputStream的方式去了?

2)一旦我做了FFT,什么是获得可用数据的好方法(即:功率谱?以某种方式滤除某些频率?等等。)

1 个答案:

答案 0 :(得分:0)

关于(2)使用FFT提取“特征”的一些注意事项。

只要有足够的CPU周期,就应该计算短期FFT,例如512点。对于可视化,没有必要保留所有信息(即使用重叠窗口工作),而是可以每秒5次计算100ms FFT。

然后你应该以dB(分贝)计算对数功率谱。 这可以让您对声音的详细频率内容有一个很好的印象。

根据您想要的可视化效果,您可以组合使用一些低频FFT线(计算RMS)以获得声音的“低音”内容等等。

有关详细信息,请参阅this post