精品设计
电子科技大学
课程设计报告
课程名称: 信号与系统
设计名称: 语音信号的采集和处理
姓名:
学号:
班级: 通信九班
指导教师:
起止日期: -
基于MATLAB的语音信号的采集和处理
摘要:本文介绍了一种基于matlab的语音信号的采集和处理设计实现方案。声音是由物体的振动产生,以声波的形式在介质中传播,介质主要可分为固体, 液体以及气体。声波振动内耳的听小骨, 这些振动被转化为微小的电子脑波, 它就是我们觉察到的声音。内耳采用的原理与麦克风捕获声波或扬声器的发音一样,它是移动的机械部分与气压波之间的关系。在国际标准中,人声的频率范围是 300Hz~3400Hz,不同的人或乐器产生的声音频率不一致,通过对声音信号的研究能够更好的处理声音信号的处理以及传输。Matlab 作为一款主要面对科学计算、可视化以及交互式程序设计的高科技计算软件,能够很好的完成对声音信号的分析和处理,快速的得出声音信号的时域图以及频域图。
关键字:声音|、频率、时域图、频域图
1绪论
掌握语音信号采集的方法
掌握一种语音信号基音周期提取方法
了解Matlab的编程方法
一:使用wavrecord录入自己的语音信号,使用save函数进行保存后使用wavplay
函数进行播放。
二:使用plot再画出该语音信号的时域波形,对原始波形进行用fft函数傅里叶
变换后,使用plot画出其频谱。
三:设计切比雪夫的低通,高通,带通滤波器对原始信号进行滤波。
四: 画出滤波后的信号时域、频域图
五:考虑到国际标准人声的频率范围在300Hz~3400Hz,于是给原始语音信号加入
3800hz的正弦高频噪声,再分析语音信号的特点。
六:设计低通计滤波器将高频噪声滤除。
2设计过程
1,使用wavrecord录入自己的语音信号,保存到一个数组后,再使用save函数进行保存文件,后使用wavplay函数进行播放。程序实现如下:
fs=8000; %采样频率为8000hz
y=wavrecord(3*fs,fs); %录入3s的声音
wavplay(y,fs); %播放已录入的声音信号
file=''; %创建一个数据文件,且赋给变量file
save('','y'); %
load ; %
2,使用plot再画出该语音信号的时域波形
程序代码为:
subplot(211); %对图形窗口进行分割
plot(y);
xlabel('time n');
ylabel('amplitude');
title('原始语音信号'); %标出横纵坐标和图像名称
再对原始波形进行用fft函数傅里叶变换后得到向量,使用plot画出其频谱。因为直接用fft得出的数据与频率不是对应的,由于fftshift可以将fft的直流分量移到频谱中心,即让正半轴部分和负半轴部分的图像分别关于各自的中心对称。故再使用fftshift对fft进行变换。
程序代码为:
a=fftshift(fft(y,l)/l); %对语音信号进行离散时间傅里叶变换,且将fft的直流分量移到频谱中心
fd=fs/l;
fx=fd*(-l/2:l/2-1); %将横轴变为频率轴
fy=abs(a); %将纵轴变为频率幅度轴
subplot(212);
plot(fx,fy);
xlabel('频率Hz');
ylabel('幅度');
title('原始信号频谱');
如图所示:
3,设计切比雪夫滤波器对原始信号进行滤波时,利用cheb1ord计算滤波器阶数:[N, Wn] =cheb1ord(Wp, Ws, Rp, Rs);利用cheby1计算滤波器系数:[b,a] = cheby1(N,Wn)。其中设计了通带截止频率为1000hz,阻带截止频率为1200hz的低通滤波器,如图所示
程序为:
fph=1000;
fsh=1200;
rp=2;
rs=15;
omegaph=fph/(fs/2); %归一化
omegash=fsh/(fs/2);
[N,wn]=cheb1ord(omegaph,omegash,rp,rs);
[BZ,AZ]=cheby1(N,rp,wn,'low');
yl=filter(BZ,AZ,y);
subplot(211);
plot(yl);
xlabel('t
信号与系统 课程设计-基于matlab的语音信号的采集和处理 来自淘豆网m.daumloan.com转载请标明出处.