资源描述:
《采样定理及在语音变采样.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、课程名称数字信号处理实验课时4学时实验项目名称和编号采样定理及在语音变采样同组者姓名实验目的学会MATLAB的使用,掌握MATLAB的程序设计方法;掌握在Windows环境下语音信号采集的方法;掌握数字信号处理的基本概念、基本理论和基本方法;设计型实验,创新型实验实验环境MATLAB实验内容和原理1、采样定理:在进行模拟与数字信号的转换过程中,当采样大于最高频率的2倍时,则采样之后的数字信号完整的保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍。2、采样频率:采样频率是指计算机每秒钟采样多少个声音样本,是描述声音文件
2、的音质、音频、衡量声卡、声音文件的质量标准。采样频率越高,即采样的时间间隔越短,则在单位时间内计算机得到的声音样本数据越多,对声音波形的表示也越准确。3、采样位数与采样频率:采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。采样位数和采样率对于音频接口来说是最为重要的两个指标。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。采样位数越多则捕捉到的信号越精确。4、利用MAT
3、LAB对语音信号进行分析和处理:采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。5、语音信号的滤波示意图:+滤波器Matlab频谱显示语音信号噪声扬声器实验步骤方法关键代码一、语音信号的采集与分析二、利用余弦函数构造一个高频噪声三、设计合适的滤波器,滤除高频噪声四、程序设计及仿真图形4.1用Matlab对原始语音信号进行分析clear;[y,fs,bits]=wavread('C:22.wav');%x语音数据fs采样频率bits采样点
4、数sound(y,fs,bits);%话音回放n=length(y);%求出语音信号的长度Y=fft(y,n);%傅里叶变换subplot(2,1,1);plot(y);title('原始信号波形');subplot(2,1,2);plot(abs(Y));title('原始信号频谱')4.2、给原始的语音信号加上一个高频余弦噪声,频率为(22050hz)。%加噪声fs=22050;x=wavread('C:22.wav');f=fs*(0:511)/1024;Au=0.03;t=0:1/22050:(length(x)-1)/22050;d
5、=[Au*cos(2*pi*5000*t)];x2=x+[d'd'];y2=fft(x2,1024);figure(1);plot(t,x2)title('加噪后的信号');xlabel('timen');ylabel('fuzhin');figure(2)subplot(2,1,1);plot(f,abs(y2(1:512)));%plot(f,abs(y1(1:512)));title('原始语音信号频谱');xlabel('Hz');ylabel('fuzhi');subplot(2,1,2);plot(f,abs(y2(1:512)))
6、;title('加噪后的信号频谱');xlabel('Hz');ylabel('fuzhi');(接上页)实验步骤方法关键代码4.3、设计合适的滤波器,滤除高频噪声,绘出滤波后的信号频域和时域波形:程序:%用双线性变换法设计巴特沃思低通滤波器双线性变换法低通滤波器fp=1000;fc=1200;As=100;Ap=1;ffs=22050;wc=2*fc/ffs;wp=2*fp/ffs;[n,wn]=ellipord(wp,wc,Ap,As);%求阶数N和通带截止频率[num,den]=ellip(n,Ap,As,wn);%设计椭圆滤波器freq
7、z(num,den,256,ffs);%画出频率响应对噪音进行滤波:x=filter(num,den,y);%滤波X=fft(x,4096);%FFTsubplot(211),plot(x);title('滤波后信号波形');subplot(212),plot(abs(X));title('滤波后信号频谱');4.4、双线性变换法的带通滤波器和对噪音滤波fp=[3000,8000];fc=[1000,10000];Ap=1;As=100;ffs=22050wc=2*fc/ffs;wp=2*fp/ffs;[n,wn]=ellipord(wp,wc
8、,Ap,As);[num,den]=ellip(n,Ap,As,wn);freqz(num,den,256,ffs);进行滤波:x=filter(nu