标签: fft

使用FFT进行实时音调检测

我正在尝试使用C++进行实时音高检测.我正在测试一些来自Performous(http://performous.org/)的代码,因为其他一切对我来说都不起作用.我确信这有效,但我不能让它发挥作用.我已经尝试了几个星期了,而且我还没有能够得到任何音调检测代码.

c++ audio signal-processing fft pitch-tracking

9
推荐指数
1
解决办法
2万
查看次数

反向谱图A在MATLAB中的La Aphex Twin

我试图通过将其视为一个频谱将图像转换成音频信号在MATLAB 中的Aphex Twin酒店的宋Windowlicker.不幸的是,我无法获得结果.

这就是我现在所拥有的:

function signal = imagetosignal(path, format)

    % Read in the image and make it symmetric.
    image = imread(path, format);
    image = [image; flipud(image)];
    [row, column] = size(image);
    signal = [];

    % Take the ifft of each column of pixels and piece together the real-valued results.
    for i = 1 : column

        spectrogramWindow = image(:, i);
        R = abs(ifft(spectrogramWindow));
        % Take only the results for the positive frequencies.
        signalWindow = R(1 : row / 2.0);
        signal …
Run Code Online (Sandbox Code Playgroud)

matlab image-manipulation signal-processing fft inverse

8
推荐指数
1
解决办法
5138
查看次数

如何使用FFT计算数据频率?

我想知道数据的频率.我有点想到它可以使用FFT完成,但我不知道该怎么做.一旦我将整个数据传递给FFT,它就会给我2个峰值,但我怎样才能获得频率?

非常感谢提前.

algorithm signal-processing fft c#-3.0

8
推荐指数
5
解决办法
3万
查看次数

高斯的傅立叶变换不是高斯变换,但这是错误的! - Python

我正在尝试利用Numpy的fft函数,但是当我给函数一个简单的gausian函数时,该gausian函数的fft不是gausian,它的接近但是它的一半使得每一半都在x轴的任一端.

我正在计算的高斯函数是y = exp(-x ^ 2)

这是我的代码:

from cmath import *
from numpy import multiply
from numpy.fft import fft
from pylab import plot, show

""" Basically the standard range() function but with float support """
def frange (min_value, max_value, step):
    value = float(min_value)
    array = []
    while value < float(max_value):
        array.append(value)
        value += float(step)
    return array


N = 256.0 # number of steps
y = []
x = frange(-5, 5, 10/N)

# fill array y with values of the Gaussian …
Run Code Online (Sandbox Code Playgroud)

python numpy fft

8
推荐指数
1
解决办法
9913
查看次数

如何重新取样/重新组合频谱?

在Matlab中,我经常使用Welch的方法(pwelch)来计算功率谱,然后我将其显示在对数 - 对数图上.估计的频率pwelch是等间隔的,但对数间隔的点更适合于对数 - 对数图.特别是,当将绘图保存为PDF文件时,由于高频率点过多,这会导致文件太大.

从线性间隔频率到对数间隔频率重新采样(重新绑定)频谱的有效方案是什么?或者,有什么方法可以在PDF文件中包含高分辨率光谱而不会产生过大的文件大小?

显而易见的事情就是简单地使用interp1:

  rate = 16384; %# sample rate (samples/sec)  
  nfft = 16384; %# number of points in the fft

  [Pxx, f] =  pwelch(detrend(data), hanning(nfft), nfft/2, nfft, rate);

  f2 = logspace(log10(f(2)), log10(f(end)), 300);
  Pxx2 = interp1(f, Pxx, f2);

  loglog(f2, sqrt(Pxx2)); 
Run Code Online (Sandbox Code Playgroud)

然而,这是不希望的,因为它不能节省光谱中的功率.例如,如果两个新频率仓之间存在较大的谱线,则将简单地从得到的对数采样谱中排除.

为了解决这个问题,我们可以插入功率谱的积分:

  df = f(2) - f(1);
  intPxx = cumsum(Pxx) * df;                     % integrate
  intPxx2 = interp1(f, intPxx, f2);              % interpolate
  Pxx2 = diff([0 intPxx2]) ./ diff([0 …
Run Code Online (Sandbox Code Playgroud)

pdf math matlab fft spectrum

8
推荐指数
1
解决办法
4510
查看次数

比较录音

我有5个录制的wav文件.我想将新传入的录音与这些文件进行比较,并确定它与哪个最相似.

在最终产品中,我需要在Linux上用C++实现它,但现在我在Matlab中进行实验.我很容易看到FFT图.但我不知道如何比较它们.

如何计算两个FFT图的相似度?

编辑:录音中只有语音.实际上,我正在努力确定一些电信公司的应答机的响应.这足以区分两个消息"此刻此人无法联系到"和"此号码不再使用"

linux audio matlab signal-processing fft

8
推荐指数
1
解决办法
2077
查看次数

如何将16位PCM音频字节数组转换为double或float数组?

我正在尝试在.3gpp音频文件上执行快速傅立叶变换.该文件包含来自手机麦克风的44100kHz的小型5秒录音.

我可以找到的每个Java FFT算法只需要double [],float []或Complex []输入,原因很明显,但是我在一个字节数组中读取音频文件,所以我很困惑我从哪里离开 我唯一能找到的是前一个问题的答案:

Android音频FFT使用audiorecord检索特定频率幅度

但我不确定是否这是正确的程序.任何有见识的人?

java android fft

8
推荐指数
1
解决办法
1万
查看次数

使用FFT和Complex类获取频率wav音频

它被问了很多,但我仍然坚持在Android上实现FFT类我需要使用FFT处理我的音频数据...

我已经在这里阅读了几乎相同的问题如何使用FFT获取PCM的频率数据 ,这里如何从fft结果获得频率? 还有更多的问题,但即使在我尝试了答案后仍然没有找到答案......

我正在使用的FFT类:http: //www.cs.princeton.edu/introcs/97data/FFT.java

与它一起使用的复杂类:http://introcs.cs.princeton.edu/java/97data/Complex.java.html

这是我的代码

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;

public class Latihan extends Activity{
        private static final int RECORDER_BPP = 16;
        private static final String AUDIO_RECORDER_FILE_EXT_WAV = ".wav";
        private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder";
        private static final String AUDIO_RECORDER_TEMP_FILE = "record_temp.raw";
        private static …
Run Code Online (Sandbox Code Playgroud)

audio android fft frequency

8
推荐指数
1
解决办法
2万
查看次数

使用fft的Matlab低通滤波器

我在matlab中使用前向和后向fft实现了一个简单的低通滤波器.它原则上有效,但最小值和最大值与原始值不同.

signal = data;
%% fourier spectrum
% number of elements in fft
NFFT = 1024;
% fft of data
Y = fft(signal,NFFT)/L;
% plot(freq_spectrum)

%% apply filter
fullw = zeros(1, numel(Y));
fullw( 1 : 20 ) = 1;
filteredData = Y.*fullw;

%% invers fft
iY = ifft(filteredData,NFFT);
% amplitude is in abs part
fY = abs(iY);
% use only the length of the original data
fY = fY(1:numel(signal));
filteredSignal = fY * NFFT; % correct maximum

clf; hold on; …
Run Code Online (Sandbox Code Playgroud)

matlab filtering fft lowpass-filter

8
推荐指数
1
解决办法
2万
查看次数

有关于如何使用英特尔MKL FFT的简单C++示例吗?

我需要执行FFT和逆FFT变换.输入将是double的向量和矩阵.理想情况下,输出应该是std :: complex的数组,但我可以使用double _Complex.

我没有找到任何简单的例子,所有英特尔示例都在没有足够评论的情况下同时做了很多事情.

我只想在C++中使用一个简单的例子,将double的向量(或矩阵)作为输入并输出FFT转换结果(理想情况下使用std :: complex).

c++ fft intel-mkl dft

8
推荐指数
1
解决办法
5152
查看次数