对采集的语音信号进行matlab设计与分析课程设计报告 30_第1页
对采集的语音信号进行matlab设计与分析课程设计报告 30_第2页
对采集的语音信号进行matlab设计与分析课程设计报告 30_第3页
对采集的语音信号进行matlab设计与分析课程设计报告 30_第4页
对采集的语音信号进行matlab设计与分析课程设计报告 30_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 41 语 音 信 号 采 集 与 处 理主 题: Matlab与信息系统仿真课程设计 组 长: XXX 组 员: XXXXXXX 班 级: 电子信息工程1201 目 录第一章 课程设计情况概述1.1 课程设计目的31.2 课程设计内容31.3 小组分工3第二章 具体实现方案及小结2.1 第(1)、(2)版块:录制语以及频谱分析4 2.1.1 板块要求4 2.1.2 版块分析及具体实现代码42.1.3 Matlab仿真结果图52.2 第(3)版块:采样72.2.1 版块要求72.2.2 板块分析及具体实现代码 72.3 第(4)版块:对语音实现几种常见变化132.3.1 版块要求132.3.2

2、 板块分析及具体实现代码132.4 第(5)版块:调制、解调252.4.1 板块要求25 2.4.2 版块分析及具体实现代码252.4.3 Matlab仿真结果图282.5 第(6)版块:加噪、滤波322.5.1 板块要求32 2.5.2 版块分析及具体实现代码322.6 小结41 第一章 课程设计情况概述1.1课程设计目的本课程设计要求掌握Matlab语言特性、数学运算和图形表示;掌握 Matlab程序设计方法在信息处理方面的一些应用;掌握在 Windows 环境下,利用Matlab进行语音信号 采集与处理的基本方法。综合设计实验方案设计5天分析题目,查找相关资料,利用已掌握知识、原理,提出

3、设计具体方案,拟订设计步骤,确定方案,编写程序代码并上机调试,修改完善设计,记录数据,分析结果。1.2 课程设计内容这次的课程设计大致分为两个阶段,一周为一个阶段。1.关于Matlab的基础训练Matlab在信号与系统、随机信号处理中的基本应用 2.综合设计:语音信号的采集与处理 (1)利用 windows 自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。 (2)对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉 or 尖锐?) (3)利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临

4、界采样)对信号的影响。 (4)实现语音信号的快放、慢放、倒放、回声、男女变声。 (5)对采集到的语音信号进行调制与解调,观测调制与解调前后信号的变化。 (6)对语音信号加噪,然后进行滤波,分析不同的滤波方式对信号的影响。1.3 小组分工第(1)、(2)版块XXX,第(3)版块XXX,第(4)版块XXX,第(5)版块XXX,第(6)版块XXX,报告最终由组长统一整理。第二章 具体实现方案2.1 第(1)、(2)版块:录制语音以及频谱分析2.1.1 版块要求:利用windows自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。 对录制的语音信号进行频谱分析,确定

5、该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉还是尖锐?)2.1.2 版块分析及具体实现代码:先录制几段音频,再利用Matlab编程对其进行频谱分析。x1,fs,nbits=wavread('D:matlab语音样本.wav'); %读取音频文件,识别的是音频存放地址 sound(x1,fs); %利用matlab中发声函数sound语句 N=length(x1); M=log(N)/log(2); Q=round(M); %round函数是对所得数取整S=2Q; %求得与N最接近的2的n次幂n=0:N-1; %从0取到N-1X=fft(x1); %进行傅里叶

6、变换 Fs=1*fs; f=n/N*Fs; %图2的横坐标figure(1); subplot(2,1,1);plot(n,x1); %绘制原音频信号图 title('原始音频信号'); Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp); axis(0,3000,0,0.01) %绘制频谱图 title('音频的幅度谱');在设计算法的过程中,本段程序的难点在于如何找到与length(x1)最接近的2的n次幂,以及傅立叶变换之后的频谱值(即图中的纵坐标值)。通过先对length(x1)

7、求2的对数,再利用round函数进行四舍五入求整,最终得到想要的最接近length(x1)的2的n次幂。2.1.3 Matlab仿真结果图:从图中可以读出这段音频信号的频率大概在100800赫兹,比较低沉,一般来说应该是男声。从图中可以读出这段音频信号的频率大概在7001400赫兹,比较尖锐,一般来说应该是女声。2.2 第(3)版块:采样2.2.1 版块要求利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。2.2.2 板块分析及具体实现代码这里涉及到采样下重采样的问题。所谓重采样就是对一系列离散的数字信号进行插值(升频)或去值(降频),以改变原有信

8、号的采样率,在Matlab中,可以用resample(x,p,q),decimate(x,r)函数实现。也可以将原有音频进行重构,对获得的波形进行二次采样,不过这样比较麻烦。本段程序采用的是resample(x,p,q)函数,所用的音频时间大概有3秒,更有利于观察对频谱的影响。 RESAMPLE函数的原理:p/Q是确定采样频率的必要条件,由于系统录音所确定的采样频率由x1,fs,nbits=wavread('D:matlabnv.wav')所决定;%读取音频文件返回值为44100hz。对于所用音频,其频谱分析出来的最高频率是fm=1750 hz。由采样定理得,采样频率fs=2f

9、m=3500 hz,大约是44100的1/13。当为临界采样时fs=2fm,确定p=1,Q=13,采样频率为3500 hz;当为过采样时fs>2fm, 确定P=1,Q=10,采样频率为4410 hz;当为欠采样时fs<2fm,确定P=1,Q=18,采样频率为2450 hz;程序代码:x1,fs,nbits=wavread('D:matlab nv.wav'); %读取音频文件,识别的是地址 sound(x1,fs); %利用matlab中发声函数sound语句 N=length(x1);M=log(N)/log(2);Q=round(M) ;S=2Q;n=0:N-1

10、; %n从0取到N-1X=fft(x1); %进行傅里叶变换 Fs=1*fs; f=n/N*Fs; figure(1); subplot(2,1,1);plot(n,x1); %绘制原音频信号 title('原始音频信号'); Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp); axis(0,4000,0,0.01) %绘制频谱图 title('音频的幅度谱'); 临界采样: x,fs,nbits=wavread('D:matlabnv.wav'); %读取音频文件,识

11、别的是地址 x2=resample(x,1,13); %采样频率化为3500Hzsound(x2,fs/13); %利用matlab中发声函数sound语句 N=length(x2);M=log(N)/log(2);Q=round(M) ;S=2Q;n=0:N-1; %从0取到N-1X=fft(x2);%进行傅里叶变换 Fs=fs/14; f=n/N*Fs; figure(2) subplot(2,1,1);plot(n,x2);%绘制原音频信号 title('临界采样后原始音频信号'); Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot

12、(2,1,2);plot(f,Amp); axis(0,4000,0,0.01)%绘制频谱图 title('临界采样音频的幅度谱'); 过采样: x,fs,nbits=wavread('D:matlabnv.wav');%读取音频文件,识别的是地址 x3=resample(x,1,10);%采样频率化为4410Hz sound(x3,fs/10); %利用matlab中发声函数sound语句 N=length(x3);M=log(N)/log(2);Q=round(M) ;S=2Q;n=0:N-1; %从0取到N-1X=fft(x3);%进行傅里叶变换 Fs=f

13、s/10; f=n/N*Fs;figure(3); subplot(2,1,1);plot(n,x3);%绘制原音频信号 title('过采样后原始音频信号'); Amp=abs(X)/(S/2); Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp); axis(0,4000,0,0.01)%绘制频谱图 title('过采样后音频的幅度谱'); 欠采样x,fs,nbits=wavread('D:matlabnv.wav');%读取音频文件,识别的是地址 x4=resample(x,1,18); %采样频率

14、化为2450Hzsound(x4,fs/18); %利用matlab中发声函数sound语句 N=length(x4);M=log(N)/log(2);Q=round(M) ;S=2Q;n=0:N-1; %从0取到N-1X=fft(x4);%进行傅里叶变换 Fs=fs/18; f=n/N*Fs;figure(4);subplot(2,1,1);plot(n,x4);%绘制原音频信号 title('欠采样后原始音频信号'); Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp); axis(0,4000,0

15、,0.01)%绘制频谱图 title('欠采样后音频的幅度谱'); 频谱分析:由第一段程序对所用的音频进行频谱分析所得频谱图可知,这段音频的最大频率为1750Hz,也就可以确定三种采样所用的采样频率。由采样定理知,临界采样和过采样对声音不会有太大影响,临界采样让相邻频谱紧靠,过采样让相邻频谱分开一段距离。而欠采样则让频谱不全,声音听起来低沉暗哑。2.3 第(4)版块:对语音实现几种常见变化2.3.1 板块要求实现语音信号的快放、慢放、倒放、回声、男女变声。2.3.2 版块分析及具体实现代码实现对录音内容倒放x,fs,Nbits=wavread('D:matlab语音样本

16、.wav');x=flipud(x)wavplay(x,fs);%对加载的语音信号进行回放 实现录音内容回声x,fs,bits=wavread('D:matlab语音样本.wav');%读取语音信号n1=0:2000;b=x(:,1); %产生单声道信号N=3;M=length(x);yy2=filter(1,1,zeros(1,80000/(N+1),0.7,b',zeros(1,40000);%IIR 滤波器进行滤波figure(3)subplot(2,1,1);plot(yy2);%三次回声滤波器时域波形title('三次回声滤波器时域波形'

17、;);YY2=fft(yy2);%对三次回声信号做FFT 变换subplot(2,1,2);plot(n1(1:1000),YY2(1:1000)/M);%三次回声滤波器频谱图title('三次回声滤波器频谱图');figure(4)subplot(2,1,1);plot(abs(YY2)/M);%经傅里叶变换之后的信号的幅值title('幅值');subplot(2,1,2);plot(angle(YY2);%经傅里叶变换之后的信号的相位title('相位');sound(5*yy2,fs,bits); %经三次回声滤波器后的语音信号,乘以5

18、是为了加强信号实现对录音内容快放x1,fs=wavread('D:matlab语音样本.wav');%读取音频文件,识别的是地址N=length(x1);n=0:N-1;X=fft(x1);%进行傅里叶变换Fs=1*fs;f=n/N*Fs;t=0:1/fs:(N-1)/fs;figure(1);subplot(2,1,1);plot(t,x1/N);%绘制原音频信号title('原音频信号');subplot(2,1,2);plot(f,abs(X)/N);%绘制频谱图title('音频的幅度谱');sound(x1,1.5*fs);%以1.5倍

19、速度播放Fs2=1.5*fs;t2=0:1/Fs2:(N-1)/Fs2;f2=n/N*Fs2;figure(2);subplot(2,1,1);plot(t2,x1/N);title('快放后的音频信号');subplot(2,1,2);plot(f2,abs(X)/N);title('快放后的幅度谱');实现对录音内容慢放x1,fs=wavread('D:matlab语音样本.wav');%读取音频文件,识别的是地址N=length(x1);n=0:N-1;X=fft(x1);%进行傅里叶变换Fs=1*fs;f=n/N*Fs;t=0:1/fs:

20、(N-1)/fs;figure(1);subplot(2,1,1);plot(t,x1/N);%绘制原音频信号title('原音频信号');subplot(2,1,2);plot(f,abs(X)/N);%绘制频谱图title('音频的幅度谱');sound(x1,0.5*fs);%以0.5倍速度播放Fs2=0.5*fs;t2=0:1/Fs2:(N-1)/Fs2;f2=n/N*Fs2;figure(2);subplot(2,1,1);plot(t2,x1/N);title('慢放后的音频信号');subplot(2,1,2);plot(f2,ab

21、s(X)/N);title('慢放后的幅度谱');实现男女变声(实现男女变声都需调用一个voice函数)function Y=voice(x,f) %更改采样率使基频改变 f>1降低;f<1升高f=round(f*1000);d=resample(x,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)

22、; 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; for ypos=Wsim:Ss:(ypts-W) xpos=round(F * ypos); kmpred=km+(xpos-lastxpos); lastxpos=xpos; if(kmpred<=Kmax) km=kmpred; else ys

23、im=Y(ypos+simix); rxy=zeros(1,Kmax+1); rxx=zeros(1, Kmax+1); Kmin=0; for k=Kmin:kdecim:Kmax xsim=padX(Wsim+xpos+k+simix); rxx(k+1)=norm(xsim); rxy(k+1)=(ysim*xsim'); end Rxy=(rxx=0).*rxy./(rxx+(rxx=0); km=min(find(Rxy=max(Rxy)-1); end xabs=xpos+km; Y(ypos+ovix)=(1-xfwin).*Y(ypos+ovix) + (xfwin.*

24、padX(Wsim+xabs+ovix); Y(ypos+newix)=padX(Wsim+xabs+newix); endend.男声变女声y,fs,nbits=wavread('D:matlab语音样本.wav'); %读取声音文件x=y(:,1); %读入的y矩阵有两列,取第1列y1=voice(x,0.40); %调整voice()第2个参数转换音调,>1降调,<1升调,y1为x转换后的声音N=length(x); M=length(y1);n=0:N-1; m=0:M-1;X= fft(x); Y=fft(y1); %傅里叶变换Fs=2*fs; %2倍频T

25、=1/Fs; T1=1/Fs/0.40;f=n/N*Fs; f1=m/M*Fs*0.40;t=n*T; t1=m*T1;figure;subplot(2,1,1);plot(t,x); xlabel('t/s');ylabel('magnitude');title('转换前的波形');subplot(2,1,2);plot(t1,y1); xlabel('t/s');ylabel('magnitude');title('转换后的波形');figure;subplot(2,1,1);plot(f,ab

26、s(X)/N); xlabel('frequency/Hz');ylabel('magnitude');title('转换前的频谱');subplot(2,1,2);plot(f1,abs(Y)/M); xlabel('frequency/Hz');ylabel('magnitude');title('转换后的频谱');sound(y1,fs,nbits);.女声变男声y,fs,nbits=wavread('D:matlab语音样本2.wav'); %读取声音文件x=y(:,1);

27、%读入的y矩阵有两列,取第1列y1=voice(x,1.6); %调整voice()第2个参数转换音调,>1降调,<1升调,y1为x转换后的声音N=length(x); M=length(y1);n=0:N-1; m=0:M-1;X= fft(x); Y=fft(y1); %傅里叶变换Fs=2*fs; %2倍频T=1/Fs; T1=1/Fs/1.61;f=n/N*Fs; f1=m/M*Fs*1.61;t=n*T; t1=m*T1;figure;subplot(2,1,1);plot(t,x); xlabel('t/s');ylabel('magnitude&

28、#39;);title('转换前的波形');subplot(2,1,2);plot(t1,y1); xlabel('t/s');ylabel('magnitude');title('转换后的波形');figure;subplot(2,1,1);plot(f,abs(X)/N); xlabel('frequency/Hz');ylabel('magnitude');title('转换前的频谱');subplot(2,1,2);plot(f1,abs(Y)/M); xlabel('

29、;frequency/Hz');ylabel('magnitude');title('转换后的频谱');sound(y1,fs,nbits);wavwrite(y1,1*fs,'D:matlab语音样本2.wav')经过统计整理可知:女声基频=男声基频*1.5,本程序是通过抽样与插值的方式来达到基频的改变。2.4 第(5)版块:调制、解调2.4.1 版块要求:对采集到的语音信号进行调制与解调,观测调制与解调前后信号的变化。2.4.2 版块分析及具体实现代码:语音信号与高频正弦载波相调制,比较其频谱变化,回放信号,比较是与众语音信号变化。将

30、调制后的信号进行解调,回放信号,比较时域中语音信号变化。1.调制所谓调制就是在传送信号的一方将所要传送的信号附加在高频振荡上,再由天线发射出去。这里高频振荡波就是携带信号的运载工具,也叫载波。振幅调制,就是由调制信号去控制高频载波的振幅,直至随调制信号做线性变化。在线性调制系列中,最先应用的一种幅度调制是全调幅或常规调幅,简称为调幅(AM)。在频域中已调波频谱是基带调制信号频谱的线性位移;在时域中,已调波包络与调制信号波形呈线性关系。设正弦载波c(t)=Acos(0t+)式中,A为载波幅度;0为载波角频率; 为载波初始相位(假设 =0).调制信号(基带信号)为m(t)。根据调制的定义,振幅调制

31、信号(已调信号)一般可以表示 .标准调幅波(AM)产生原理: 调制信号是只来来自信源的调制信号(基带信号),这些信号可以是模拟的,亦可以是数字的。为首调制的高频振荡信号可称为载波,它可以是正弦波,亦可以是非正弦波(如周期性脉冲序列)。载波由高频信号源直接产生即可,然后经过高频功率放大器进行放大,作为调幅波的载波,调制信号由低频信号源直接产生,二者经过乘法器后即可产生双边带的调幅波。设载波信号的表达式为,调制信号的表达式为,则调幅信号的表达式为 2.解调从高频已调信号中恢复出调制信号的过程称为解调(demodulation ),又称为检波(detection )。对于振幅调制信号,解调(demo

32、dulation )就是从它的幅度变化上提取调制信号的过程。解调(demodulation )是调制的逆过程。可利用乘积型同步检波器实现振幅的解调,让已调信号与本地恢复载波信号相乘并通过低通滤波可获得解调信号。 程序如下:clear; %数据清零f1,fs,nbits=wavread('D:matlab语音样本.wav'); %声音文件的载入f1=f1(:,1); %对信号f1取单声道figure(1); %图像绘制,创建图形窗1subplot(2,1,1); %在一幅图内分成一个两行一列的两个区域,取第一个区域N=length(f1); %计算信号长度Nt=0:1/fs:(N

33、-1)/fs; %时间长度t从0到(N-1)/fs。每隔1/fs取个间隔点plot(t,f1);title('信息信号的时域波形');%画出语音信号的时域波形fy1=fft(f1); %对信号进行FFT变换w1=0:fs/(N-1):fs; %频率1从0到fs,每隔fs/(N-1)间隔取点subplot(2,1,2); %对上述两个区域取第二个区域plot(w1,abs(fy1)/N);title('信息信号的频谱'); %画出语音信号的FFT频谱图sound(f1,fs,nbits);%播放原始信号pause(3); %延迟3秒(语音文件3秒左右)f2=cos

34、(22000*pi*t); %载波信号figure(2); %创建图形窗2subplot(2,1,1); %在一幅图内分成一个两行一列的两个区域,取第一个区域fy2 = fft(f2); %对信号f2进行FFT变换N2=length(f2); %计算信号f2长度N2w2=0:fs/(N2-1):fs; %求频率2plot(w2, abs(fy2)/N);title('载波信号的频谱');%画出载波信号的FFT频谱图调制部分:f3=f1'.*f2; %对信号f1代表的矩阵转置和信号f2对应的矩阵求点积subplot(2,1,2); %对上述两个区域取第二个区域fy3 =

35、fft(f3); %f3进行FFT变换plot(w1, abs(fy3)/N);title('已调信号的频谱');%画出已调信号f3的频谱图sound(f3,fs,nbits); %播放已调语音信号f3pause(3); %延迟3秒解调部分:f4=f3.*f2; %信号f3和f2点乘求积figure(3); %创建图形窗3fy4=fft(f4); %对信号f4求FFT变换plot(w1, abs(fy4)/N);title('解调信号频谱');%画出解调信号f4的频谱图sound(f4,fs,nbits); %播放解调后语音f4信号pause(3); %延迟3秒

36、低通滤波器部分:fp1=0; fs1=5000; As1=100; %设置低通滤波器的参数wp1=2*pi*fp1/fs; ws1=2*pi*fs1/fs; %将模拟频率转变成数字频率BF1=ws1-wp1; %计算滤波器过渡带宽度wc1=(wp1+ws1)/2; %计算通带截止频率M1=ceil(As1-7.95)/(2.286*BF1)+1;%计算凯塞滤波器阶数NN1=M1+1; %窗的点数beta1=0.1102*(As1-8.7); Window=(kaiser(N1,beta1); %求凯塞窗窗函数b1=fir1(M1,wc1/pi,Window); %wc1/pi为归一化,窗函数法

37、设计函数figure(4); %创建图形窗4freqz(b1,1,512);title('FIR低通滤波器的频率响应'); %由离散系统频率特征函数freqz函数画出滤波器的频率响应图f4_low = filter(b1,1, f4);%对信号进行低通滤波plot(t,f4_low);title('滤波后的解调信号时域波形');%画出滤波后解调信号时域波形sound(f4_low,fs,nbits); %播放滤波后语音信号f5=fft(f4_low); %对滤波后信号实现FFT变换figure(5); %创建图形窗5plot(w1,abs(f5)/N);titl

38、e('滤波后的解调信号频谱')%画出滤波后解调信号频谱图2.4.3 Matlab仿真结果图:图一:原始信号频谱图二:已调信号的频谱图三:解调信号频谱图四:滤波后信号的时域波形图五:滤波后信号的频域波形频谱分析:由于调制解调采用的是男声,故图一中声音的频谱基本集中在低频段;由图二可知,对原始语音信号进行加噪声处理,在低频段信号的频谱由有明显的下降,所加噪声对应的频率段有明显信号的振幅增加,且在所加噪声频率段有明显的频率集中;由图三可知,解调后的频谱,恢复了信号的低频顿的频谱振幅,消除了噪声频率段的影响,加强了中频段的频谱;由图四,图五知,经过低通滤波器处理之后,与原始信号相比,很

39、明显,滤波后的声音信号保留了原始信号的有效成分,突出了低频段的频谱,更除去了一定的干扰信号(即噪声)。2.5 第(6)版块:加噪、滤波2.5.1 板块要求对语音信号加噪,然后进行滤波,分析不同的滤波方式对信号的影响。2.5.2 版块分析及具体实现代码:(1)语音信号的采集与分析:录制了一段5秒左右的音频,然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形。人为的设定了一个随机的噪声,运用函数randn产生随机噪声,加在原音频信号上。使用凯瑟窗分别产生低通滤

40、波器,带通滤波器,高通滤波器。低通滤波器图像:带通滤波器图像:高通滤波器图像:添加一个随机的高斯白噪声程序:x1,fs=wavread('D:matlab语音样本.wav');%读取语音信号数据sound(x1,fs); %播放语音信号N=length(x1);M=log(N)/log(2);Q=round(M) ;S=2Q;n=0:N-1; %从0取到N-1X1=fft(x1);%进行傅里叶变换 Fs=1*fs; f=n/N*Fs; figure(1); subplot(2,1,1);plot(n,x1);%绘制原音频信号 title('原始音频信号'); A

41、mp1=abs(X1)/(S/2);Amp1(1,:)=Amp1(1,:)/2;subplot(2,1,2);plot(f,Amp1); axis(0,4000,0,0.01)%绘制频谱图 title('音频的幅度谱'); noise=0.1*randn(N,2);x2=x1+noise;%取原始语音信号的单声部信号然后和噪声信号相加sound(x2,fs); %播放语音信号X2=fft(x2);figure(2); %创建图形窗subplot(2,1,1);% 创建两行一列绘图区间的第1个绘图区间plot(n,x2); title('加噪后的信号'); Amp

42、2=abs(X2)/(S/2);Amp2(1,:)=Amp2(1,:)/2;subplot(2,1,2);plot(f,Amp2); axis(0,4000,0,0.01)%绘制频谱 title('加噪后的信号频谱'); 低通滤波:%滤波器参数 fp=1000;%通带边缘频率fc=1200;%阻带边缘频率As=100;%阻带最小衰减Ap=1;%通带峰值起伏%转换为数字域参数wc=2*fc/fs;wp=2*fp/fs;N=ceil(As-7.95)/(14.36*(wc-wp)/2)+1;%滤波器阶数beta=0.1102*(As-8.7);%凯泽窗参数beta Win=Kais

43、er(N+1,beta);%生成窗函数b=fir1(N,wc,Win);%设计滤波器 figure(3)freqz(b,1,512,fs);%画出频谱图x=fftfilt(b,x2);%滤波X=fft(x,4096);%FFT sound(x,fs);%回放语音信号 figure(4)subplot(2,1,1),plot(x); title('滤波后信号波形'); subplot(2,1,2),plot(abs(X);title('滤波后信号频谱'); 经过低通滤波后,音频信号中的噪声被消除了很多,因为音频信号本身就是集中在低频段,所以经过低通滤波器后,信号被

44、恢复。带通滤波:%滤波器参数 fp1=1200;fp2=3000;fc1=1000;fc2=3200;As=100;Ap=1;%滤波器参数 wc1=2*fc1/fs;wp1=2*fp1/fs; wc2=2*fc2/fs;wp2=2*fp2/fs;width=min(wp1-wc1),(wc2-wp2);%转换为数字域参数N=ceil(As-7.95)/(14.36*width/2)+1;%计算滤波器的阶数,ceil(x)取大于等于x的最小整数beta=0.1102*(As-8.7);%计算凯瑟窗控制参数Win=Kaiser(N+1,beta);%生成窗函数 wc=wc1,wc2;%计算理想带通滤波器通带截止频率b=fir1(N,wc,Win); %调用firl函数freqz(b,1,512,fs);%画出滤波器频谱图,设置最大幅度为1x=fftfilt(b,x2);%进行滤波 X=fft(x,4096);%FFT sound(x,fs);%回放语音信号 subplot(2,1,1),plot(x); title('滤波后信号波形'); subplot(2,1,2),plo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论