我有一个项目,我必须从音频文件中识别频率。为此,我使用 10 kHz 的单音来查看是否可以正常工作。由于我对 Octave 还很陌生,所以我用自己的音频文件尝试了这个示例。我试图通过对所有功能进行一些研究来了解会发生什么。
我的问题是;如果我在未指定输出时让 specgram 绘制图形:
specgram(y,fftn,Fs,hanning(window),step);
它给出了一条 10kHz 的线路,这正是我想要的。
但是如果我为 specgram 函数指定输出
[S,f,t]= specgram(y,fftn,Fs,hanning(window),step);
让它绘制,它以 18 kHz 绘制线。
我认为它必须在图形的输入中,我尝试对这些进行一些修改,但每次我这样做时,Octave 都会出错。我需要频率作为给定的输出,因为我必须用它做一些计算,我想我需要指定频率输出。
这是指定频谱图的代码部分:
step= fix(5*Fs/1000); % stepsize of the window
window= fix(90*Fs/1000); % window size
fftn =2^nextpow2(window); % Size of the FFT block
[S,f,t]= specgram(y,fftn,Fs,hanning(window),step);
S= abs(S(2:fftn*12000/Fs,:)); % Normalize the phase
S= S/max(S(:)); % Normalize the Energy
S= max(S, 10^(-40/10)); % Throw out values below -40 dB and above -3dB
S= min(S, 10^(-3/10));
figure
imagesc(t,f,(log(S)));
谁能在这里帮助我如何从音频文件中获取频率数据,以便我可以在一些计算中使用它?
我已经在 Octave 手册中搜索了答案以寻求帮助,并在各种 matlab 站点上进行了尝试。还检查了这里已经有很多帖子,例如:
PS对不起我的英语不好,这不是我的母语