DSP实验七 综合实验与考查
目录
一、实验目的
二、需验证的理论
三、实验内容
四、实验指导
五、实验设计报告要求
六、思考题
【实验过程】
1、语音采样、时域波形、频域波形
2、延时
3、混响
4、单回声
5、多重回声
6、无限回声
7、全通结构混响器
8、IIR低通滤波器处理
9、IIR带通滤波器处理
10、IIR高通滤波器处理
11、FIR高通滤波器处理
12、FIR低通滤波器处理
13、FIR带通滤波器处理
14、加噪声、用FIR低通滤去噪声/用IIR低通滤去噪声
15、男性声音分析
16、心得
一、实验目的
综合运用所学数字信号处理理论知识进行语音信号的采集、频谱分析、延时、滤波处理等,通过理论推导得出相应结论并利用MATLAB作为编程工具进行计算机实现,从而对数字信号处理有一个系统的掌握和直观理解。
*注.本部分内容如果全部放在后面做会花费较长时间,要求前面的每一个实验都对实验一采样语音进行分析,包括变换、滤波等,并在每个实验报告里写出来并分析,最后一个实验综合分析。
二、需验证的理论
1、语音信号采集与处理
2、信号频谱分析
3、数字滤波器分析与设计
三、实验内容
录制一段个人的语音信号,然后对语音信号进行时域波形和频谱分析,然后进行滤波处理。
1、将原始信号加入延时和混响回声处理,将处理后信号进行频谱分析及语音信号回放,与原始频谱和原始声音进行比较;
2、对原始语音信号进行FIR和IIR滤波,然后画出滤波后信号的时域波形和频谱,对滤波前后的信号和频谱进行对比;同时回放滤波后信号,与原始声音对比,分析声音的变化。
四、实验指导
1、语音信号的采集
通过录音软件录制一段语音,说出自己的名字和学号,时长大约1到2秒,在MATLAB中,通过使用wavread函数,对语音进行采样:
[y,fs,nbits]=wavread('xxxxxxx'); %语音信号的采集
采样值放在向量y中,采样频率为fs,采样位数为nbits。
2、语音信号的频谱分析和回放
首先画出采样后语音信号的时域波形,然后对信号进行快速傅里叶变换,得到其频谱图。读取语音文件并绘出波形和频谱的程序:
[y,fs,nbits]=wavread('xxxxxxxx'); %语音信号的采集
sound(y,fs,nbits); %语音信号的播放
n=length(y) ; %计算语音信号的长度
Y=fft(y,n); %快速傅里叶变换
figure;
subplot(2,1,1); %绘出时域波形
3、原始信号延时、混响和回声的处理
(1) 对原始信号加入延时,并画出延时后信号的时域波形和频谱图,然后分别从时域和频域上分析延时后信号与原始信号的变化,最后再利用sound函数对声音进行回放,对感觉到的延时前后的声音变化作出说明。
(2) 设计如下几种特殊类型滤波器,对原始信号分别进行如下几种回声滤波或混响处理,并画出滤波后信号的时域波形和频谱图,然后分析其变化,最后对声音进行回放,对感觉到的滤波前后的声音变化作出说明。
回声或者混响滤波器类型:
Ps其中a是回声的衰减系数(其绝对值小于1),R是回声的延迟(以样本为单位)
4、原始信号的滤波处理
(1) 分别用FIR和IIR滤波器对采集的语音信号进行滤波。
(2) 对滤波后的信号进行傅里叶变换,分别得到FIR和IIR滤波后信号的频谱特性,同时画出其时域波形,与原始信号进行比较,分析信号的变化。
(3) 对FIR滤波和IIR滤波后的信号进行比较并作出说明。
(4) 对滤波后的声音进行回放并对比分析变化。
根据频谱特征设计FIR和IIR滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1设计IIR滤波器,利用Matlab中的函数freqz画出各步滤波器的频率响应。
①低通滤波器的性能指标:fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB
这里我设Fs=6000Hz,wp=fp/fs*2*pi=0.33*pi,ws=0.24*pi
②高通滤波器的性能指标:fp=3500Hz,fc=4000Hz,As=100dB,Ap=1dB;
③带通滤波器的性能指标:fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB
在MATLAB中,利用[N,wc]=butter(N,wc,Rp,As,'s')设计并计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc;[B,A]=cheby1(N,Rp,wpo,'ftypr')设计切比雪夫I型滤波器。
五、实验设计报告要求
报告每人单独撰写,内容包括:基本原理、设计方案及实现、仿真结果及分析、结论与建议。附参考文献、程序。
六、思考题
1、通过理论分析和回放等说明滤波前后的信号变化
2、换一个与你性别相异的人录制同样一段语音内容,进行上面的过程,分析变化;
3、通过使用randn函数产生随机噪声信号,并加到语音信号中得到被污染的语音信号叠加到原始的语音信号中,分析叠加前后信号频谱的变化,设计一个合适的滤波器,能够把噪声部分滤除。
【实验过程】
1、语音采样、时域波形、频域波形
%%
clear,clc;
[y,fs]=audioread('C:\Users\23321\Desktop\DSP\me.wav');
%语音信号的采集采样值放在向量y
subplot(3,1,1)
plot(y);
title('时域波形');
sound(y,fs);
n=length(y)%计算语音信号长度
Y=fft(y);%快速傅里叶
subplot(3,1,2)
plot(abs(Y));%频域波形
title('幅频特性');
subplot(3,1,3)
plot(angle(Y));
title('相频特性');
可以看出实信号的快速傅里叶变换关于n的一半(59829.5)成圆周偶对称
改变相频坐标轴为axis([0 200 -3 3]),可以更细致观察发现相频很杂。
2、延时
%%
%2.延时
clear,clc;
[y,fs]=audioread('C:\Users\23321\Desktop\DSP\me.wav');
n=length(y)
% 假设我们想要延时D个样本
D = 120000; % 注意:这个值可能非常大,取决于音频长度和fs
y1 = [zeros(D, 1); y]; % 只需在y前面插入D个零
subplot(3,1,1)
plot(y1);
title('延时后时域波形');
sound(y1,fs);%延时后语音信号的播放
n1=length(y1)%计算延时后语音信号的长度
Y1=fft(y1);%对延时后信号进行快速傅里叶变换
subplot(3,1,2)%绘出延时后频域波形
plot(abs(Y1));
title('延时后幅频特性');
subplot(3,1,3)
plot(angle(Y1));
title('延时后相频特性');