Tag: fft

如何使用FFT从PCM获取频率数据

我有一个传递给读者的音频数据: recorder.read(audioData,0,bufferSize); 实例化如下: AudioRecord recorder; short[] audioData; int bufferSize; int samplerate = 8000; //get the buffer size to use with this audio record bufferSize = AudioRecord.getMinBufferSize(samplerate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT)*3; //instantiate the AudioRecorder recorder = new AudioRecord(AudioSource.MIC,samplerate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,bufferSize); recording = true; //variable to use start or stop recording audioData = new short [bufferSize]; //short array that […]

Java中最近的FFTW包装器

我正在为最新版本的FFTW寻找一个最小的Java包装器。 FFTW网站上列出的包装器要么过时( jfftw-1.2.zip ),要么包含太多额外的东西( Shared Scientific Toolbox )。 谷歌搜索建议JFFTW3看起来很有前景,但下载链接已经破了(有人有镜子吗?) 对于那些想要纯Java FFT库的人来说, JTransforms看起来非常好。 我更喜欢使用FFTW,因为它大约快两倍,它处理任意尺寸d> 3。

音乐转录

我正在制作一个复音音乐转录项目。 我已经阅读了一些论文,并阅读了解释类似任务的文章。 我对问题领域的许多方面感到非常困惑。 希望有人能够帮助我。 到目前为止,我已经从给定的mp3获得了解码音频数据流。 我已经了解起病检测是转录的第一步。 。 是否有可用的Java库可用于检测开始。 接下来,如我所读,使用FFT也可以检测基频。 我想知道在这些任务中使用FFT。 (我对FFT不熟悉)。 是否必须执行FFT以进行起始检测和F0检测。 如果不是其他方式。 我可以在我的音频流上执行FFT,或者是否需要执行其他操作才能操作这些音频数据。 非常感谢。

Clojure / Java:用于声音频谱分析的Java库?

我正在寻找一个可以接受一大块音频数据并在给定频段内返回平均幅度的库。 我已经在comp.dsp上问了这个问题,但我很清楚,使用基本的FFT库获取自己构建这个问题的技术诀窍将需要比现在更多的时间和精力。 以下是我原来提出的更多细节问题: http : //groups.google.com/group/comp.dsp/browse_thread/thread/e04f78d439e9e2bd 我发现了许多用于播放声音的漂亮库(过去我使用过JSyn),但似乎没有设置它们来返回有关声音样本的快速和脏的光谱信息。 任何指针都将非常感激。

用Java获取音频文件的波形图案

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

显示使用Android录制时不断更新的双倍(频率)

我正在构建一个Android应用程序,它使用FFT算法显示持续音符的频率。 我正在使用Jtransform方法。 我目前的问题是我无法在屏幕上显示频率。 以下代码是fft频率计算和AsynchTask,它应该在文本框中显示频率 import edu.emory.mathcs.jtransforms.fft.DoubleFFT_1D; public class Tuning extends Activity implements OnClickListener{ int audioSource = MediaRecorder.AudioSource.MIC; // Audio source is the device mic int channelConfig = AudioFormat.CHANNEL_IN_MONO; // Recording in mono int audioEncoding = AudioFormat.ENCODING_PCM_16BIT; // Records in 16bit private DoubleFFT_1D fft; // The fft double array int blockSize = 1024; // deal with […]

使用Java中的傅立叶变换处理音频数据

我正在尝试处理音频数据。 我正在使用Java。 我已将音频数据提取到数组中。 现在我应该将N个数据样本传递给计算离散傅立叶变换(或快速傅里叶变换,这样更有效)的函数。 我读过文档,但是我越来越困惑了。 我想要计算的是幅度谱(| X(k)|)。 谁能帮我? 谢谢

如何过滤FFT数据(用于音频可视化)?

我正在看这个Web Audio API演示 , 这本好书的一部分 如果你看一下演示,fft峰值会顺利下降。 我正在尝试使用minim库在Java模式下处理相同的操作。 我已经看过如何使用doFFTAnalysis()方法中的web音频api完成此操作,并尝试使用minim复制它。 我还尝试移植abs()如何使用复杂类型: / 26.2.7/3 abs(__z): Returns the magnitude of __z. 00565 template 00566 inline _Tp 00567 __complex_abs(const complex& __z) 00568 { 00569 _Tp __x = __z.real(); 00570 _Tp __y = __z.imag(); 00571 const _Tp __s = std::max(abs(__x), abs(__y)); 00572 if (__s == _Tp()) // well … 00573 return […]

如何实现均衡器

我知道有很多关于均衡器的问题,但是我没有得到我正在寻找的东西。 我想要做的是一个均衡器,用于修改音频样本,如: equalizer.eqAudio(audiosamples, band, gain) 我不确定这是否是我想要的确切接口,因为我在实现它们方面对DSP知之甚少(我使用filter,限制器,压缩器但没有制造它们)。 所以谷歌搜索我读到我必须对样本进行FFT,这样我得到每个频率范围的数据而不是幅度,按照我想要的方式处理它,然后进行FFT的反转,这样我再次得到音频样本的结果。 我寻找了这个FFT的实现,并找到了JTransform for Java。 该库具有称为离散余弦变换(DCT)的FFT相关算法的实现。 我的问题是: 好吧,我是以正确的方式吗? 由于FFT给出了有关频率的数据,我应该将一大块样本传递给FFT算法。 这个块一定要多大? 是否有一本关于DSP编程的好书可以解释均衡器? 谢谢!

validationFFT算法的正确性

今天我写了一个算法来计算表示离散函数的给定点arrays的快速傅里叶变换。 现在我正在尝试测试它是否有效。 我已经尝试了十几个不同的输入集,它们似乎与我在网上找到的例子相匹配。 然而,对于我的最终测试,我给它输入cos(i / 2),i从0到31,并且根据我使用的求解器得到了3个不同的结果。 我的解决方案似乎是最不准确的: 这是否表明我的算法有问题,还是仅仅是相对较小的数据集的结果? 我的代码如下,如果它有帮助: /** * Slices the original array, starting with start, grabbing every stride elements. * For example, slice(A, 3, 4, 5) would return elements 3, 8, 13, and 18 from array A. * @param array The array to be sliced * @param start The starting index * […]