Java中使用FFT算法进行音频频谱分析

发布于 2024-11-19 03:46:46 字数 200 浏览 4 评论 0原文

我想用 Java (ME) 分析音频文件的频谱。我想像一些媒体播放器那样绘制频谱。但我不明白一些要点:

  1. FFT 算法的输入,我必须从音频文件中获取。我现在不知道它叫什么,它是什么,更重要的是,我不知道如何得到它。
  2. 输出:如果输入是一个数组(范围?)我获得其他数组,并且它的范围:0-1,对(或不是)?那么我与它有什么关系呢?

I want to analyze the spectrum of an audio file in Java (ME). I want to draw spectrum as some media players do. But I don't understand some points:

  1. Input for FFT algorithm, which I have to get from the audio file. I don't now what it is called, what it is and more important, I don't know how to get it.
  2. Output: if input is an array (range?) I obtain other array, and it have range: 0-1, right (or not)? So what I have to do with it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫﹏色ふ单纯 2024-11-26 03:46:46

除了 FFT 之外,您还需要一些额外的步骤。这在之前的类似问题中已经被多次提及,您可以通过搜索“dsp”、“fft”、“spectrum”、“spectrogram”等找到其他材料,但本质上您需要执行以下操作:

  • 对输入数据应用窗口函数(例如Hann(ing))
  • 将 FFT 应用于加窗输入数据(对于复数到复数 FFT,虚数输入应全部为零)
  • 计算第一个N / 2 FFT输出箱的平方幅度(re * re + im * im
  • 将平方幅度转换为dB刻度(10 * log10(squared_magnitude))

You need a few additional steps in addition to the FFT. This has been covered many times already in previous similar questions here on SO, and you can find additional material by searching for "dsp", "fft", "spectrum", "spectrogram", etc, but essentially you need to do the following:

  • apply a window function to the input data (e.g. Hann(ing))
  • apply FFT to windowed input data (for complex-to-complex FFT the imaginary inputs should all be zero)
  • calculate squared magnitude of first N / 2 FFT output bins (re * re + im * im)
  • convert squared magnitude to dB scale (10 * log10(squared_magnitude))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文