[y,fs,bits]=wavread(' C:\\Users\\acer\\Desktop\\数字信号\\sound.wav ');% 对语音信号进行采样
wavplay(y,fs); %播放原始信号 N=length(y);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;
f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 subplot(2,2,3);
plot(y);%录制信号的时域波形
title('原始男生信号的时域波形');%加标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%加网格
y0=fft(y);%快速傅立叶变换
subplot(2,2,4);%在四行两列的第三个窗口显示图形 plot(f,abs(y0(n1)));%原始信号的频谱图 title('原始男生信号的频谱图');%加标题 xlabel('频率w/pi');%显示横坐标表示的意义 ylabel('幅值 ');%显示纵坐标表示的意义 grid;%加网格
5.3男女声音的频谱图
21
原始女生信号的时域波形0.50-0.5-1150100原始女生信号的频谱图幅值/A幅值 012345000x 10原始男生信号的时域波形0.50.5频率w/pi原始男生信号的频谱图1300200幅值/A0幅值 012x 1034100-0.5000.5频率w/pi1
图5.3男女声音信号波形与频谱对比
分析:就时域图看,男生的时域图中振幅比女生的高,对于频谱图女生的高频成分比较多
6.噪声的叠加和滤除
6.1录制一段背景噪声
Fs=8000; %抽样频率 time=3; %录音时间 fprintf('按Enter键录音%ds',time); %文字提示 pause; %暂停命令 fprintf('录音中......');
x=wavrecord(time*Fs,Fs,'double'); %录制语音信号
22
fprintf('录音结束'); %文字提示 fprintf('按Enter键回放录音'); pause; %暂停命令 wavplay(x,Fs); %按任意键播放语音信号 wavwrite(x,Fs,'C:\\Users\\acer\\Desktop\\数字信号\\噪音.wav'); %存储语音信号
6.2 对噪声进行频谱的分析
[x1,fs,bits]=wavread(' C:\\Users\\acer\\Desktop\\数字信号\\噪音.wav ');%对语音信号进行采样
wavplay(x1,fs); %播放噪声信号 N=length(x1);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;
f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(5); subplot(3,2,1);
plot(x1);%信号的时域波形 title('噪声信号的时域波形'); grid;
ylabel('幅值/A');
y0=fft(x1);%快速傅立叶变换
23
subplot(3,2,2);
plot(f,abs(y0(n1)));%噪声信号的频谱图 ylabel('幅值');
title('噪声信号的频谱图');
6.3原始信号与噪音的叠加
fs=8000;
[x,fs,bits]=wavread(' C:\\Users\\acer\\Desktop\\数字信号\\sound.wav '); %对录入信号进行采样
[x1,fs,bits]=wavread(' C:\\Users\\acer\\Desktop\\数字信号\\噪音.wav '); %对噪声信号进行采样
yy=x+x1;%将两个声音叠加
6.4叠加信号的频谱分析:
wavplay(yy,fs); %播放叠加后信号 N=length(yy);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;
f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(5); subplot(3,2,3);
plot(yy,'LineWidth',2);%信号的时域波形
24
title('叠加信号的时域波形'); xlabel('时间/t'); ylabel('幅值/A'); grid;
y0=fft(yy);%快速傅立叶变换 subplot(3,2,4);
plot(f,abs(y0(n1)));%叠加信号的频谱图 title('叠加信号的频谱图'); xlabel('频率w/pi'); ylabel('幅值/db'); grid;
6.5 设计一个合适的滤波器将噪声滤除 fs=18000;%采样频率 Wp=2*1000/fs;%通带截至频率 Ws=2*2000/fs;%阻带截至频率 Rp=1;%最大衰减 Rs=100;%最小衰减
[N,Wn]=buttord(Wp,Ws,Rp,Rs); %buttord函数(n为阶数,Wn为截至频率)
[num,den]=butter(N,Wn); %butter函数(num为分子系数den为分母系数)
25