草庐IT

java - 在Java中获取音频文件的波形

我想知道如何从音频文件中获取诸如振幅之类的音乐信息?假设我们有一个原始音频文件,我想从文件中提取数据,从而生成一条曲线,例如http://www1.icsi.berkeley.edu/Speech/mr/nearfar.html.一旦我得到这条曲线,我将进行FFT等。我一直在尝试在JavaSound中寻找解决方案,但到目前为止我只知道我可以使用AudioInputStream将数据倒入byte[]。但是我如何将byte[]转换为包含有关声音的实际信息的double[]?在这种情况下,double[]中的值表示振幅。谁能提供一个解决方案来解决Java中的这个问题?

java - JTransforms FFT 图像

我有一张图像,我想使用FFT将其转换为频域,Java似乎缺少这方面的库,但我找到了两个。一个是JTransforms,另一个不太知名,没有名字。对于不太知名的2D只能具有二次幂的长度值,但具有简单易用的方法,如FastFourierTransform.fastFT(real,imaginary,true);二维double组充满了每个像素值,虚部是一个大小相同且充满零的二维数组。boolean值将取决于正向或反向变换。这对我来说很有意义并且它起作用除了两个要求的力量破坏了我所做的任何变换(我最初在图像周围添加了黑色空间以使其适合最接近的两个力量),我正在努力解决如何对JTransfor

java - 图像比较技术与 Java

我正在寻找几种方法来比较两张图片,看看它们有多相似。目前我计划将百分比作为“相似性指数”的最终结果。我的程序大纲是这样的:用户选择2张图片进行比较。通过一个按钮,可以使用几种不同的方法比较图像。最后,每种方法旁边都会有一个百分比,表示基于该方法的图像的相似程度。我最近读了很多书,我读过的一些东西似乎非常复杂和高级,不适合像我这样只有大约一年Java经验的人。到目前为止,我已经阅读了:傅里叶变换-我发现这在Java中实现起来相当困惑,但显然Java高级成像API有一个类。虽然我不确定如何将输出转换为实际结果SIFT算法-看起来异常复杂直方图-可能是迄今为止提到的所有图表中最简单的像素抓取

java - 从音频文件计算 FFT

之前,我问过关于GetfrequencywavaudiousingFFTandComplexclass的问题,在那里,我需要从AudioRecord输入计算FFT值-->来自麦克风,我以某种方式设法获得了FFT值...现在我需要从我之前保存的*.wav音频文件计算FFT值,我将音频保存在项目“res”文件夹内的“raw”文件夹中我仍然使用相同的FFT类:http://www.cs.princeton.edu/introcs/97data/FFT.java与之配套的复杂类:http://introcs.cs.princeton.edu/java/97data/Complex.java.h

java - 如何实现均衡器

我知道so中有很多关于均衡器的问题,但我没有得到我想要的东西。我想要做的是一个均衡器,用于以如下方式修改音频样本:equalizer.eqAudio(audiosamples,band,gain)我不确定这是否是我想要的确切接口(interface),因为我在实现它们方面对DSP知之甚少(我使用了滤波器、限制器、压缩器,但没有制造它们)。所以谷歌搜索我读到我必须对样本进行FFT,这样我得到每个频率范围的数据而不是振幅,按照我想要的方式处理它,然后对FFT进行逆运算,这样我得到的结果是再次音频样本。我寻找此FFT的实现并找到了JTransformforJava。这个库有一个FFT相关算法

java - 为 apache commons 快速傅里叶变换算法构建示例数据

我想使用FFT的Apachemathcommons实现(FastFourierTransformer类)来处理一些虚拟数据,其8个数据样本构成一个完整的正弦波。最大振幅为230。我尝试的代码片段如下:privatedouble[]transform(){double[]input=newdouble[8];input[0]=0.0;input[1]=162.6345596729059;input[2]=230.0;input[3]=162.63455967290594;input[4]=2.8166876380389125E-14;input[5]=-162.6345596729059

音频筑基:一文搞懂DFT/FFT/DCT/MDCT的区别

音频筑基:一文搞懂DFT/FFT/DCT/MDCT的区别前言DFT/FFT/STFT/DCT/MDCT一句话对比DFT/FFT/STFT/DCT/MDCT的因果扩展资料傅立叶变换是连接时域与频域的上帝之桥。——《漫画傅里叶解析》前言音频信号处理中时常用到时频域转换,这里简单总结下常用的DFT、FFT、STFT、MDCT的区别。开始前,先感谢傅里叶大哥,是他给了我们一碗饭吃。DFT/FFT/STFT/DCT/MDCT一句话对比DFT,DiscreteFourierTransform,离散傅里叶变换,完成离散点时频域转换用途:推广时频域原理,理论上保证了计算机可用性FFT,FastFourierT

java - 快速傅里叶变换(FFT)输入输出分析Java音频文件的频率?

我必须使用FFT来分析音频文件的频率。但我不知道输入和输出是什么。如果要绘制频谱的音频文件,是否必须使用1维、2维或3维数组?有人可以向我推荐J2ME上的FFT库吗? 最佳答案 @thongcaoloi,关于输入数据维度的简单答案是:您需要一维数据。现在我将解释这意味着什么。因为你想分析音频数据,你输入到离散傅里叶变换(DFT或FFT),是一个一维的实数序列,代表音频信号随时间变化的电压,而你的音频文件是随时间变化的电压的数字表示。您的音频文件是通过以固定采样率(也称为采样频率)对连续音频信号的电压进行采样而生成的,对于CD质量音频

java - 使用 JTransforms 库使用 FFT 计算自相关

我正在尝试使用以下代码计算时间序列中样本窗口的自相关。我正在对该窗口应用FFT,然后计算实部和虚部的大小并将虚部设置为零,最后对其进行逆变换以获得自相关:DoubleFFT_1Dfft=newDoubleFFT_1D(magCnt);fft.realForward(magFFT);magFFT[0]=(magFFT[0]*magFFT[0]);for(inti=1;i第一个问题是:可以看出这段代码将自相关结果映射到[0,1]范围内,虽然相关性应该在-1和1之间。当然很容易将结果映射到[-1,1]范围,但我不确定此映射是否正确。我们如何解释生成的autocorr数组中的值?其次,通过这段

java - 在 Java 中使用 FFT 从 .wav 创建频谱图

经过研究和大量的反复试验,我得出了一个观点,我可以构建一个我认为它具有对与错元素的频谱图。1.首先,我将.wav文件读入一个字节数组并仅提取数据部分。2.我将字节数组转换为一个double组,它取左右声道的平均值。我还注意到1个channel的1个样本由2个字节组成。所以,4个字节变成1个double。3.对于2的特定窗口大小,我从here应用FFT并获得频域中的振幅。这是频谱图图像的垂直strip。4.我用相同的窗口大小重复执行此操作并重叠整个数据并获得频谱图。下面是将.wav读入double数组的代码importjava.io.IOException;importjava.nio.