gpt4 book ai didi

java - 在 WAV 文件上使用 jTransforms 库?

转载 作者:行者123 更新时间:2023-12-02 08:01:48 25 4
gpt4 key购买 nike

我正在尝试使用 jTransforms 库对 WAV 文件进行频谱分析:Official Site

但是我在如何使用 jTransforms 将 WAV 文件转换为 FFT 可接受的输入以及如何在 FFT 后显示频谱方面遇到问题?我在 Google 上进行了搜索,发现我需要以某种方式将 WAV 文件转换为 double[]Complex[],然后我应该如何解释输出? p>

抱歉,我对 FFT 很陌生,所以这个问题可能听起来非常愚蠢。非常感谢!

最佳答案

我不了解您的图书馆,但我猜他们有关于如何应用转换的大量文档。

关于解释,如果您使用复数变换,您可以将实部解释为相应频率仓的能量,将虚部解释为正弦曲线的相位。功率谱密度 (PSD) 可以通过以下方式计算

real(fftData)*conj(fftData) 

等于

abs(fftData^2)

(因此将实部与其复共轭相乘)。

您可能需要考虑的一件事是重新缩放您的 fft 输出。一些算法按与 fftSize 成比例的方式缩放输出。因此,您必须将输出乘以 1/fftSize。

最后一件事,如果您不知道,您只需采用 fft 输出的一半,因为频谱是对称的。中间 bin (fftSize/2) 通常是镜像基频,等于 fftData[0]。这标志着奈奎斯特频率,这是您可以使用给定 fftSize 分析的最高频率。因此,如果您想显示高达 22kHz 的频率,请确保您的 fftSize 至少为 44k。

FFT 有很多陷阱,因此请务必阅读某些部分并了解您在其中做什么。如果您只想使用数学,那么数学本身并不那么重要,因此您可以跳过它们。

编辑:还有更多。考虑使用锥形窗口(高斯、汉明、汉宁...)对输入数据进行加权,以避免在不将整个 wav 文件作为输入时出现令人讨厌的边缘效应。否则,您的 fft 输出中将会出现人为的高频,而这些高频在原始信号中根本不存在。

关于java - 在 WAV 文件上使用 jTransforms 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com