fft 在 matlab 中的音频文件样本上
Posted
技术标签:
【中文标题】fft 在 matlab 中的音频文件样本上【英文标题】:fft on samples of an audio file in matlab 【发布时间】:2013-04-23 18:26:08 【问题描述】:我正在尝试从声音文件中提取信息,以便在我正在研究的视频分类算法中使用它。
我的问题是我不知道如何在 Matlab 中准确处理音频文件。
以下是我需要完成的:
打开音频文件并获取采样率/频率 我需要在一个 2 秒的窗口上工作,所以我必须循环文件并获取每 2 秒作为一个窗口,然后在每个窗口上执行 ftt(快速傅立叶变换)。之后轮到我使用这些价值观做我想做的事了
任何帮助将不胜感激
谢谢。
【问题讨论】:
您是否打算将您的两秒样本窗口化?否则你可能会得到工件。 【参考方案1】:以下代码可能只会给您一些想法。您可能需要确定另一个 fft 大小,一个窗口函数,如汉明等。
读取 wav 文件:
[data, Fs] = wavread('path.wav');
拆分到 2 秒窗口并获取 fft:
frameFFT = [];
timeStep = Fs*2;
for i=1:timeStep:length(data)-timeStep
frameFFT = [frameFFT; fft(data(i:i+timeStep-1),1024)];
end
【讨论】:
我正在使用 mp3 文件,所以我不能使用 wavread,我尝试了 data = dsp. AudioFileReader("...");但是长度(数据)是一,我不知道为什么会这样 我也使用了 data = audioread("..");但数据似乎不是向量,因为我检查了它的大小,它是 [4186368 2],你知道吗? @Maystro,音频文件可能是2声道,您只能将第一列作为输入。 @Maystro,这取决于原始记录的获取方式。它可能是真正的立体声或不同通道上的相同信号,为了安全起见,您可以按照链接中的建议取两者的平均值:dsp.stackexchange.com/questions/2484/… 我明白了,大多数音频文件应该有 2 个通道(左、右),并且两个通道中的数据很可能是相同的以上是关于fft 在 matlab 中的音频文件样本上的主要内容,如果未能解决你的问题,请参考以下文章