MATLAB课程设计报告专业:J电信工程1201姓名:学号:26211549指导教师:毛彦欣时间:2015.01.05—2015.01.16-1-一、要求(1)、本课程设计要求掌握MATLAB语言特性、数学运算和图形表示;掌握MATLAB课程设计方法在信息处理方面的一些应用;掌握在Windows环境下,利用MATLAB进行语音信号采集与处理的基本方法。(2)、本课程设计分为基础与综合设计题目,其中基础题目为MATLAB基本训练(比做);对于综合设计题,需按照任务书要求,对设计过程所进行的有关步骤进行理论分析,并对完成的设计作出评价,总结自己整个设计工作中的经验教训、收获;在课程设计最后一天提前交课程设计报告,报告必须按照统一格式打印,装订成册。二、内容(1)MATLAB基础训练:MATLAB在信号与系统、随机信号处理中的基本应用(2)综合设计:语音信号的采集与处理利用Windows自带的录音机或者其他录音软件,录制几段语音信号(要有几种不同的声音,要有男生、女生)。对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉or尖锐)利用采样定理,对该段语音信号进行采样,观察不用采样频率(过采样、欠采样、临界采样)对信号的影响。实现语音信号的快放、慢放、倒放、回声、男女变声。对采集到的语音信号进行调制解调,观察调制与解调前后信号的变化。对语音信号加噪,然后进行滤波,分析不同的滤波方式对信号的影响。如果精力和时间允许,鼓励利用MATLABGUI制作语音信号采集与分析演示系统三、基本题设部分1.语音信号的采集及频谱分析用WINDOWS下的录音机,用单声道录制一段音乐或声音,时间在10--20S。然后MATLAB软件平台下,利用WAVREAD函数对语音信号进行采样,记住采样频率和采样点数。对语音信号进行快速傅立叶变换,在一个窗口同时画出信号的时域波形图和频谱图,分析语音信号的频谱特点。程序如下所示:[y0,fs,nbits]=wavread('d:\shen\001.wav');%读声音文件M=length(y0);t=0:1/fs:(M-1)/fs;Fx=fft(y0,M);f=[0:M-1]*fs/M;Amp=abs(Fx)/(M/2);Amp(1,:)=Amp(1,:)/2;plot(t,y0);title('原始信号波形');figure(2);plot(f,Amp);title('原始信号频谱')男声的时域图及频谱-2-05101520253035-1-0.8-0.6-0.4-0.200.20.40.60.81音频信号的时域波形t/s00.511.522.533.544.5x10400.0010.0020.0030.0040.0050.0060.0070.0080.0090.01音频信号的频谱频率/Hz女声的时域图及频谱-3-051015202530-0.4-0.3-0.2-0.100.10.20.30.4音频信号的时域波形t/s00.511.522.533.544.5x1040123456789x10-3音频信号的频谱频率/Hz对上面的频谱进行分析可以很明显的看出来男声的频率范围比较低,也就是低沉。女声的频率范围较高,也就是尖锐。-4-2.利用采样定理对音频进行采样方法一、直接对先采样的离散信号进行抽取,设每隔三个点抽取一次,可得n=3;t2=0:n/fs:(N-1)/fs;f2=f1([1:n:N]);subplot(2,1,1);plot(t2,f2);title('重采样时域图');方法二、利用downsample重采样函数进行采样%利用采样定理,对该段语音信号进行采样,观察不同采样频率(欠采样、临界采样)对信号的影响。clear;[x,fs,bits]=wavread('D:\shen\001.wav');%sound(x,fs,bits);%对语音信号进行回放M=length(x);%语音信号的长度n=round(log2(M));N=2^n;t=0:1/fs:(M-1)/fs;%临界采样i=10;%i10,属于欠采样,从频谱上看出y=downsample(x,i);figure(1)subplot(211);plot(t,x,'linewidth',2);xlabel('时间/s');ylabel('幅值');title('原始语音信号x[n]');%语音信号的时域图形subplot(212);plot(y);xlabel('时间/n');ylabel('幅值');title('临界采样后的语音信号y[n]');%sound(y,fs/i,bits);figure(2)xf=fft(x,N);f=[0:N-1]/N*fs;Amp=abs(xf)/(N/2);Amp(1,:)=Amp(1,:)/2;subplot(211);plot(f,Amp,'linewidth',2);xlabel('频率/Hz');ylabel('|X(f)|');title('原始语音信号FFT频谱');%语音信号的FFT频谱图yf=fft(y);Amp1=abs(yf)/(N/(i*2));Amp1(1,:)=Amp1(1,:)/2;subplot(212);plot(Amp1,'linewidth',2);xlabel('频率/Hz');ylabel('|Y(f)|');title('采样后的语音信号FFT频谱');%语音信号的FFT频谱图-5-02468101214161820-1-0.500.51时间/s幅值原始语音信号x[n]0123456789x104-1-0.500.51时间/n幅值临界采样后的语音信号y[n]00.511.522.533.544.5x10400.0050.010.015频率/Hz|X(f)|原始语音信号频谱0123456789x10400.0050.010.015频率/Hz|Y(f)|采样后的语音信号频谱-6-3.实现快放,慢放,倒放,回声对信号进行时域的尺度变换,抽取与插值,观察期品与众频谱的变化,回放语音信号,体会时域语音信号变化(实现慢录快放和快录慢放功能)。在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音变化。程序:3.1快慢放:[y,fs,nbits]=wavread('D:\shen\001.wav');%读取音频文件,识别的是地址x=y(:,1);W=n*fs;%当n1时,进行快放;当n1时,进行慢放sound(x,W,nbit);3.2回声z=[zeros(9000,1);x];%延时9000个点x1=[x;zeros(9000,1)];y1=x1+1*z;%将两个信号合成在一起sound(2*y1,fs,bits);%有回声,导致声音响度增大3.3倒放Matlab中自带有flipud(x)函数,可将矩阵完全翻转过来,因此可以:y0=flipud(x);%sound(y0);3.4男女声变换clear;[x,fs,bits]=wavread('D:\shen\001.wav');%sound(x,fs,bits);%对语音信号进行回放x0=x(:,1);%读入的x矩阵有两列,取第1列Fs=2*fs;%采样频率N=length(x0);%语音信号的长度t=0:1/fs:(N-1)/fs;%男声转换为女声%y1=voice(x0,0.8);%调整voice()第2个参数转换音调,1降调,1升调,y1为x转换后的声音N=length(x0);M=length(y1);n=[0:N-1];m=[0:M-1];Y=fft(x0);Y1=fft(y1);%傅里叶变换Amp=abs(Y)/(N/2);Amp1=abs(Y1)/(M/2);Amp(1,:)=Amp(1,:)/2;Amp1(1,:)=Amp1(1,:)/2;Fs=2*fs;%2倍频T=1/Fs;T1=1/Fs*0.61;-7-f=n/N*Fs;f1=m/M*Fs/0.61;t=n*T;t1=m*T1;figure(2)subplot(2,1,1);plot(t,x0);xlabel('时间/s');ylabel('幅值');title('转换前的波形');subplot(2,1,2);plot(t1,y1);xlabel('时间/s');ylabel('幅值');title('转换后的波形');figure(3)subplot(2,1,1);plot(f,Amp);xlabel('频率/Hz');ylabel('幅值');title('转换前的频谱');subplot(2,1,2);plot(f1,Amp1);xlabel('频率/Hz');ylabel('幅值');title('转换后的频谱');sound(y1,fs,bits);function函数为:functionY=voice(x0,f)%更改采样率使基频改变f1降低;f1升高f=round(f*1000);d=resample(x0,f,1000);%时长整合使语音文件恢复原来时长W=400;Wov=W/2;Kmax=W*2;Wsim=Wov;xdecim=8;kdecim=2;X=d';F=f/1000;Ss=W-Wov;xpts=size(X,2);ypts=round(xpts/F);Y=zeros(1,ypts);xfwin=(1:Wov)/(Wov+1);ovix=(1-Wov):0;newix=1:(W-Wov);simix=(1:xdecim:Wsim)-Wsim;padX=[zeros(1,Wsim),X,zeros(1,Kmax+W-Wov)];Y(1:Wsim)=X(1:Wsim);lastxpos=0;km=0;forypos=Wsim:Ss:(ypts-W)xpos=round(F*ypos);kmpred=km+(xpos-lastxpos);lastxpos=xpos;if(kmpred=Kmax)km=kmpred;elseysim=Y(ypos+simix);rxy=zeros(1,Kmax+1);rxx=zeros(1,Kmax+1);-8-Kmin=0;fork=Kmin:kdecim:Kmaxxsim=padX(Wsim+xpos+k+simix);rxx(k+1)=norm(xsim);rxy(k+1)=(ysim*xsim');endRxy=(rxx~=0).*rxy./(rxx+(rxx==0));km=min(find(Rxy==max(Rxy))-1);endxabs=xpos+km;Y(ypos+ovix)=((1-xfwin).*Y(ypos+ovix))+(xfwin.*padX(Wsim+xabs+ovix));Y(ypos+newix)=padX(Wsim+xabs+newix);endend012345678910-1-0.500.51时间/s幅值转换前的波形0123456-1012时间/s幅值转换后的波形-9-0123456789x10400.0050.010.0150.02频率/Hz幅值转换前的频谱051015x10401234x10-3频率/Hz幅值转换后的频谱4.对采集到的语言信号进行调制解调语音信号与高频正弦载波相调制,比较其频谱变化,回放信号,比较时域中语音信号变化。将调制后的信号进行解调,回放信号,比较时域中语音信号变化。DSB-AM调制原理与分析:在DSB-AM系统中,已调信号的幅度正比与消息信号。这种调制通过使用乘法器完成,将消息信号吗m(t)与载波Accos(2πfct),如图1所示,表示为:调制过程的逆过程叫做解调。AM信号的解调是把接收到的已调制信号还原为调包络检波器输出的信号中,通常含有频率为的波纹,可由LPF滤除。采用常规双边带幅度调制传输信息的好处是解调电路简单,可采用包络检波法。缺点是调制效率低,载波分量不携带信息,但却占据了大部