利用matlab对音频做FFT进行频谱分析

利用matlab对音频的左右声道做频谱分析。

syms y fs;

syms in_put;
in_put= 'C:\Users\getao\Desktop\立体声.wav'

%in_put 为音频文件所在的位置,.wav文件为文件的名称。


[y,fs] = audioread(in_put);

info=audioinfo(in_put)  ;
sound(y,fs);
T=1/fs; 
t=(0:length(y)-1)*T;
f=(0:length(y)-1)*fs/length(y);
figure(1);
yz=y(:,1);

     %提取音频信号的左声道数据
subplot(2,2,1);
plot(t,yz);
title('原始信号时域(左声道)');
xlabel('时间');
ylabel('振幅');

yz2=y(:,2);

   %提取音频信号的右声道数据
subplot(2,2,2);
plot(t,yz2);
title('原始信号时域(右声道)');
xlabel('时间');
ylabel('振幅');

subplot(2,2,3);
n=length(yz);
y1=fft(yz,n); 
F=fs/length(yz);

plot(f,abs(y1));
title('原始信号频谱(左声道)');
xlabel('F(Hz)');
ylabel('H(jw)');


subplot(2,2,4);
n2=length(yz2);
y1=fft(yz2,n2); 
F=fs/length(yz2);

plot(f,abs(y1));
title('原始信号频谱(右声道)');
xlabel('F(Hz)');
ylabel('H(jw)');

syms y fs;

syms in_put;
in_put= 'C:\Users\getao\Desktop\右声道.wav';


[y,fs] = audioread(in_put);

info=audioinfo(in_put)  ;
sound(y,fs);
T=1/fs; 
t=(0:length(y)-1)*T;
f=(0:length(y)-1)*fs/length(y);
figure(1);
yz=y(:,1);
subplot(2,2,1);
plot(t,yz);
title('原始信号时域(左声道)');
xlabel('时间');
ylabel('振幅');

yz2=y(:,2);
subplot(2,2,2);
plot(t,yz2);
title('原始信号时域(右声道)');
xlabel('时间');
ylabel('振幅');



subplot(2,2,3);
n=length(yz);
y1=fft(yz,n); 
F=fs/length(yz);

plot(f,abs(y1));
title('原始信号频谱(左声道)');
xlabel('F(Hz)');
ylabel('H(jw)');


subplot(2,2,4);
n2=length(yz2);
y1=fft(yz2,n2); 
F=fs/length(yz2);

plot(f,abs(y1));
title('原始信号频谱(右声道)');
xlabel('F(Hz)');
ylabel('H(jw)');

        下图分别为三段音频的分析,三段音频文件对同一首音乐的某一段进行录音得到。立体声左右声道都录制了声音,左右声道的文件则通过录音设备的两端进行分别录制。

利用matlab对音频做FFT进行频谱分析_第1张图片

立体声 音频分析 

利用matlab对音频做FFT进行频谱分析_第2张图片

左声道 音频分析 

利用matlab对音频做FFT进行频谱分析_第3张图片右声道 音频分析 

 

从上图可以看出,该段声音的频率在0-10KHz范围内,在未录制声音的音道有杂音的干扰使其频谱有尖峰的存在。

 

你可能感兴趣的:(matlab)