从音频文件计算FFT

从音频文件计算FFT,第1张

从音频文件计算FFT

我花了大部分时间在上午,使用发现的FFT
Java代码片段为该代码编写解决方案…但是后来我偶然发现了这个极为出色的Google代码项目,该项目具有一堆用于执行信号处理任务的util类在WAV和MP3文件上都一样。

https://github.com/Uriopass/audio-
analysis
以前SVN导出是在以下Google代码上进行的:https :
//storage.googleapis.com/google-pre-archive-source/v2/pre.google.com/audio-
analysis / source-archive.zip

现在,它变得异常简单:

WaveDeprer deprer = new WaveDeprer(new FileInputStream(wavFile));FFT fft = new FFT(1024, wavFileObj.getSampleRate());

现在,您可以使用fft对象进行各种计算。他们有很多很好的例子,例如生成包含光谱通量的列表:

    float[] samples = new float[1024];    float[] spectrum = new float[1024 / 2 + 1];    float[] lastSpectrum = new float[1024 / 2 + 1];    List<Float> spectralFlux = new ArrayList<Float>();    while (deprer.readSamples(samples) > 0) {        fft.forward(samples);        System.arraycopy(spectrum, 0, lastSpectrum, 0, spectrum.length);        System.arraycopy(fft.getSpectrum(), 0, spectrum, 0, spectrum.length);        float flux = 0;        for (int i = 0; i < spectrum.length; i++) flux += (spectrum[i] - lastSpectrum[i]);        spectralFlux.add(flux);    }

我的公司需要我一种分析音频的方法,以查看是否发生了预期的保持音乐。因此,首先,我为一个具有保留音乐的示例生成了一个WAV文件。然后,我捕获了其中一个没有保留音乐的示例的一些音频。现在剩下的就是对wav的频谱通量求平均,我就开始了。

注意:我不能简单地获取幅度…但是傅立叶变换具有可以正确用于进行比较的频率。

我爱数学。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5461876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存