语音信号分析与处理部分代码为:
[x,fs]=audioread('music.wav'); %打开语音信号
sound(x,fs); %播放语音信号
N=length(x); %长度
n=0:N-1;
w=2*n*pi/N;
y1=fft(x); %对原始信号做FFT变换
figure(1);
subplot(2,1,1);
plot(n,x) %做原始语音信号的时域波形图
title('原始语音信号时域图');
xlabel('时间t');
ylabel('幅值');
subplot(2,1,2); %做原始语音信号的频谱图
plot(w/pi,abs(y1));
title('原始语音信号频谱')
xlabel('频率Hz');
ylabel('幅度');
%加入噪声
[x,fs]=audioread('music.wav');
n=length(x);
x_p=fft(x,n);
f=fs*(0:n/2-1)/n;
figure(1)
subplot(2,1,1);
plot(x);
title('原始语音信号采样后的时域波形');
xlabel('时间轴')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(x_p(1:n/2)));
title('原始语音信号采样后的频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
noise=0.005*randn(1,n);
x_z=x+noise';
sound(x_z,fs)
n=length(x);
x_zp=fft(x_z,n);
f=fs*(0:n/2-1)/n;
figure(2)
subplot(2,1,1);
plot(x_z);
title('加噪语音信号时域波形');
xlabel('时间轴')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(x_zp(1:n/2)));
title('加噪语音信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
提取声音
[pyr,fs]=audioread('music.wav');%声音读取
%原始信号时域和频域波形
n=length(pyr);
pyr1=fft(pyr,n); %快速傅里叶变换
figure(1)
subplot(2,2,1);
plot(pyr);
xlabel('时间');
ylabel('幅度');
title('初始信号波形'); %绘出时域波
grid on
subplot(2,2,2); %绘出频域频谱
plot(abs(fftshift(pyr1)));
title('初始信号频谱');
xlabel('频率');
ylabel('幅度');
grid on
% pause(10);
%加入噪声
noise=0.01*randn(n,1);%加噪声
s=pyr+noise;
%pause;
sound(s,fs); %播放加噪的语音
n=length(s); %画出加噪之后,其时域频域
S=fft(s,n);
figure(2)
subplot(2,1,1)
plot(s);
title('加噪声后信号波形')
xlabel('时间');
ylabel('幅度');