标签: fft

反向谱图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万
查看次数

清理嘈杂的倒谱结果

我一直在iphone上进行简单的频率检测设置.在存在谐波的情况下,使用FFT结果在频域中进行分析有些不可靠.我希望使用倒谱结果来帮助确定正在播放的基本频率.

我正在使用AudioToolbox框架中的AudioQueues,并使用Accelerate框架进行傅立叶变换.

我的过程正是维基百科的Cepstrum文章中列出的Real Power Cepstrum,具体为:信号→FT→abs()→square→log→FT→abs()→square→power倒谱.

我遇到的问题是倒谱结果非常嘈杂.我必须删除第一个和最后20个值,因为它们与其他值相比是天文数字.即使在"清理"数据之后,仍然存在大量的变化 - 远远超过我对第一张图的预期.有关频域和quefrency域的可视化,请参见下面的图片. FFT FFT 倒谱 倒谱

当我在频域中看到如此明显的赢家时,我希望在quefrency域中看到类似的清晰结果.我玩了A440,并希望bin 82左右的音量最高.图表上的第三个峰值代表bin 79,它足够接近.正如我所说,前20个左右垃圾桶在幅度如此天文数字的是unusuable,我不得不从数据集中删除他们为了看到什么.倒谱数据的另一个奇怪的质量是偶数箱似乎远远高于奇数箱.以下是77-86的频率分档:

77: 151150.0313
78:  22385.92773
79: 298753.1875
80:  56532.72656
81: 114177.4766
82:  31222.88281
83:   4620.785156
84:  13382.5332
85:     83.668259
86: 1205.023193
Run Code Online (Sandbox Code Playgroud)

我的问题是如何清理频域,以便我的Cepstrum域结果不那么疯狂.或者,帮助我更好地理解如何解释这些结果,如果它们正如人们在倒谱分析中所期望的那样.我可以发布我正在使用的代码的示例,但它主要使用vDSP调用,我不知道它会有多大帮助.

iphone signal-processing fft pitch frequency-analysis

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

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

在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
查看次数

Android Visualizer FFT /波形受设备容量的影响?

我正在使用Android 2.3.1上的Visualizer类进行一些音乐分析.我发现FFT和波形幅度受设备体积的影响.这意味着如果用户关闭了音量,我会收到很少或没有FFT数据.

我在摩托罗拉Xoom,三星Galaxy Tab和模拟器上进行了测试,它就是这样的.

我使用下面的代码:

mp = new MediaPlayer();
mp.setDataSource("/sdcard/sine1.wav");
mp.prepare();
mp.setLooping(true);
mp.start();
int audioSessionID = mp.getAudioSessionId();
v = new Visualizer(audioSessionID);
v.setEnabled(true);
Run Code Online (Sandbox Code Playgroud)

看一下Visualizer类的文档,似乎如果我们传入一个有效的音频会话id,那么可视化器应该在这个音频会话上运行.Visualizer似乎在输出组合上运行.

有没有其他人遇到这个或找到了解决方法?

谢谢

audio android fft visualizer media-player

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

如何实现均衡器

我知道有很多关于均衡器的问题,但是我没有得到我想要的东西.我想要做的是一个均衡器,用于修改音频样本,如:

equalizer.eqAudio(audiosamples, band, gain)
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是我想要的确切接口,因为我在实现它们方面对DSP知之甚少(我使用过滤器,限制器,压缩器但没有制造它们).

所以谷歌搜索我读到我必须对样本进行FFT,这样我得到每个频率范围的数据而不是幅度,按照我想要的方式处理它,然后进行FFT的反转,这样我再次得到音频样本的结果.我寻找了这个FFT的实现,并找到了JTransform for Java.该库具有称为离散余弦变换(DCT)的FFT相关算法的实现.

我的问题是:

  • 好吧,我是以正确的方式吗?
  • 由于FFT给出了有关频率的数据,我应该将一大块样本传递给FFT算法.这个块一定要多大?
  • 是否有一本关于DSP编程的好书可以解释均衡器?

谢谢!

java signal-processing fft equalizer

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

如何在电吉他上进行音高跟踪时检测弦乐?

嗨,我是音频相关编码的菜鸟,我正在使用音调跟踪DLL,我将尝试创建一种开源版本的视频游戏Rocksmith作为学习体验.

到目前为止,我已经设法使FFT工作,所以我可以通过使用算法检测音高频率(Hz),下表我可以设法确定八度音程(第2到第6)和音符(C到B)打了便条.

下一步是检测字符串,以便我可以确定音品.

在此输入图像描述

我一直在考虑它,理论上我可以使用它,我会知道用户何时正在播放正确的音符,但游戏可能是"黑客",因为只使用Hz,游戏无法检测到音符以正确的字符串播放.例如,第5弦+第1音品= C4 261.63Hz等于第6弦+第5音品= C4 261.63Hz.

让用户在错误的字符串中播放音符并将其设置为正确的可能性很低,但我认为知道该字符串真的很好,所以当他们播放错误的字符串时我可以向用户提供一些错误反馈(如你应该上弦或下线).

你知道我能做些什么来检测字符串吗?提前致谢 :)

[编辑]

我们使用的吉他和琴弦会影响音色,因此分析音色似乎不是检测琴弦的简单方法:

"吉他音色的变化是由拾音器的设计和位置,吉他的自然共振和阻尼产生的,因为使用的木材(这是一种不同的木材!)及其结构和形状,你的琴弦的规格和年龄,你的演奏技巧,你烦恼和拔弦的地方,等等."

c# audio fft pitch-tracking guitar

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

功率谱由numpy.fft.fft

无论我如何更改数据,通过以下代码绘制的图形只是ZERO周围的峰值.我的数据只是一列,记录了某种信号的每个时间点.是time_step一个值,我应该根据两个相邻点在我的数据的时间间隔定义?

data=np.loadtxt("timesequence",delimiter=",",usecols=(0,),unpack=True)

ps = np.abs(np.fft.fft(data))**2
time_step = 1

freqs = np.fft.fftfreq(data.size, time_step)
idx   = np.argsort(freqs)

pl.plot(freqs[idx], ps[idx])
pl.show()
Run Code Online (Sandbox Code Playgroud)

python signal-processing numpy fft

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

我该如何解释numpy.fft.rfft2的输出?

显然,rfft2函数只是计算输入矩阵的离散fft.但是,如何解释给定的输出索引?给定一个输出指数,我看哪个傅立叶系数?
我对输出的大小感到特别困惑.对于n×n矩阵,输出似乎是n乘(n/2)+1矩阵(对于偶数n).为什么方阵最终会得到非方形傅立叶变换?

python numpy fft

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