数字信号处理课程设计语音信号处理MATLAB
数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理
数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理xxxx数字信号处理课程设计报告题目:基于MATLAB 的语音信号的特技处理系 (院): 计算机工程学院专业: 通信工程班级: 通信xx班学号: xxxxxxxx姓名: xxx指导教师: xxx学年学期: 2009 ~ 2010 学年第 1 学期2009年12月 18 日设计任务书课题基于MATLAB 的语音信号的特技处理名称1. 巩固所学的数字信号处理理论知识,理解信号的采集、处理、传输、显示和存储过程;设计2. 综合运用专业及基础知识,解决实际工程技术问题的能力; 目的3. 学习资料的收集与整理,学会撰写课程设计报告。
1. 微型电子计算机(PC); 实验环境 2. 安装Windows 2000以上操作系统,MATLAB等开发工具。
1. 选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,并对其进行频谱分析; 然后在时域用数字信号处理方法将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;最后设计一个信号处理系统界面。
2. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,任务注意材料收集与整理; 要求3. 在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;4. 结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。
工作进度计划序号起止日期工作内容2009.12.14~2009.12.14 在预设计的基础上,进一步查阅资料,完善设计方案。
12009.12.14~2009.12.17 设计总体方案,构建、绘制流程框图,编写代码,上机调试。
22009.12.17~2009.12.18 测试程序,完善功能,撰写设计报告。
32009.12.18 参加答辩,根据教师反馈意见,修改、完善设计报告。
4指导教师(签字):年月日摘要语音是人们交流思想和进行社会活动的最基本手段,我们要对语音信号进行测定并将其转变为另一种形式,以提高我们的通信能力。
MATLAB处理语音信号
MATLAB处理语⾳信号⼀、实验项⽬名称语⾳信号的处理⼆、实验⽬的综合运⽤数字信号处理课程的理论知识进⾏频谱分析以及滤波器设计,通过理论推导得出相应结论,并进⾏计算机仿真,从⽽复习巩固了课堂所学的理论知识,提⾼了对所学知识的综合应⽤能⼒。
三、实验内容1. 语⾳信号的采集2. 语⾳信号的频谱分析3. 设计数字滤波器和画出频率响应4. ⽤滤波器对信号进⾏滤波5. ⽐较滤波前后语⾳信号的波形及频谱6. 回放语⾳信号四、实验具体⽅案1.语⾳信号采集录制⼀段语⾳信号并保存为⽂件,长度控制在1秒,并对录制的信号进⾏采样;录制时使⽤Windows⾃带的录⾳机。
采样是将⼀个信号(即时间或空间上的连续函数)转换成⼀个数值序列(即时间或空间上的离散函数)。
采样定理指出,如果信号是带限的,并且采样频率⾼于信号带宽的两倍,那么,原来的连续信号可以从采样样本中完全重建出来。
如果信号带宽不到采样频率的⼀半(即奈奎斯特频率),那么此时这些离散的采样点能够完全表⽰原信号。
⾼于或处于奈奎斯特频率的频率分量会导致混叠现象。
⼤多数应⽤都要求避免混叠,混叠问题的严重程度与这些混叠频率分量的相对强度有关。
⽤Windows⾃带录⾳机录⼊⼀段⾳乐,2秒钟,⽤audioread读取⾳频内容,这⾥不使⽤waveread是因为他要求⾳频⽂件格式为.wav ,并且我进⾏了尝试但没有成功,画出⾳频信号的时域波形图[y1,fs]=audioread('F:\MATLAB\ren.m4a');figure(1);plot( y1 );title('Ô原语⾳信号时域波形图');xlabel('单位');ylabel('幅度');2.语⾳信号频谱分析⾸先画出语⾳信号的时域波形,然后对语⾳信号进⾏频谱分析。
在matlab中利⽤fft对信号进⾏快速傅⾥叶变换,得到信号的频谱特性。
Matlab的信号处理⼯具箱中的函数FFT可⽤于对序列的快速傅⾥叶变换分析,其调⽤格式是y=fft(x,N),其中,x是序列,y是序列的FFT变换结果,N为整数,代表做N点的FFT,若x为向量且长度⼩于N,则函数将x补零⾄长度N;若向量x长度⼤于N,则截断x使之长度为N。
基于MATLAB的语音信号处理系统设计(程序+仿真图)--毕业设计
语音信号处理系统设计摘要:语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。
语音信号处理的目的是得到某些参数以便高效传输或存储,或者是用于某种应用,如人工合成出语音、辨识出讲话者、识别出讲话内容、进行语音增强等。
本文简要介绍了语音信号采集与分析以及语音信号的特征、采集与分析方法,并在采集语音信号后,在MATLAB 软件平台上进行频谱分析,并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
利用MATLAB来读入(采集)语音信号,将它赋值给某一向量,再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波,然后我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。
关键词:Matlab,语音信号,傅里叶变换,滤波器1课程设计的目的和意义本设计课题主要研究语音信号初步分析的软件实现方法、滤波器的设计及应用。
通过完成本课题的设计,拟主要达到以下几个目的:1.1.了解Matlab软件的特点和使用方法。
1.2.掌握利用Matlab分析信号和系统的时域、频域特性的方法;1.3.掌握数字滤波器的设计方法及应用。
1.4.了解语音信号的特性及分析方法。
1.5.通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。
2 设计任务及技术指标设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。
采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。
具体任务是:2.1.采集语音信号。
2.2.对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。
2.3.针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。
2.4.对噪声滤除前后的语音进行时频域分析。
2.5.对语音信号进行重采样,回放并与原始信号进行比较。
matlab信号处理课程设计
matlab信号处理课程设计一、课程目标知识目标:1. 学生能理解并掌握MATLAB软件在信号处理领域的基本应用;2. 学生能运用MATLAB进行常见信号的时域和频域分析;3. 学生掌握信号处理中滤波器的设计原理,并利用MATLAB实现滤波器的搭建与仿真。
技能目标:1. 学生能熟练运用MATLAB软件进行信号的读取、显示和存储;2. 学生能运用MATLAB函数对信号进行处理,如傅里叶变换、滤波等;3. 学生具备利用MATLAB解决实际信号处理问题的能力。
情感态度价值观目标:1. 学生通过课程学习,培养对信号处理技术的兴趣,激发学习热情;2. 学生在团队协作中,学会沟通、分享与互助,培养良好的团队精神;3. 学生认识到信号处理技术在工程领域的广泛应用,增强对科技创新的认识。
本课程针对高年级本科生,结合学科特点,注重理论与实践相结合。
课程性质为专业选修课,旨在帮助学生掌握MATLAB在信号处理领域的应用,提高解决实际问题的能力。
根据学生特点和教学要求,课程目标分解为具体的学习成果,以便后续教学设计和评估。
通过本课程的学习,学生将能够独立完成信号处理相关任务,并为后续研究和工作打下坚实基础。
二、教学内容1. MATLAB基础操作:介绍MATLAB软件的界面与基本操作,包括数据类型、矩阵运算、脚本编写等(对应教材第一章)。
2. 信号的表示与处理:学习信号的分类、表示方法,以及MATLAB中信号处理相关函数的使用(对应教材第二章)。
- 时域分析:信号的时域特征,如均值、方差、相关函数等。
- 频域分析:傅里叶变换及其应用,频率域滤波器设计原理。
3. 滤波器设计与实现:介绍数字滤波器的设计方法,包括IIR和FIR滤波器,利用MATLAB函数实现滤波器的设计与性能分析(对应教材第三章)。
4. 信号处理应用案例:分析实际信号处理问题,如语音信号处理、图像处理等,运用MATLAB解决相关问题(对应教材第四章)。
5. 课程项目:分组进行课程项目设计,要求学生结合所学内容,自主选题,完成信号处理相关任务。
MATLAB课设之MATLAB用于语音信号的处理
MATLAB用于语音信号的处理一.设计目的通过该设计,要求对语音信号的采集、处理、传输、显示、和存储等有一个系统的掌握和理解。
理解信号采样频率的概念,掌握对语音信号进行时域和频域分析方法,了解滤波器的概念及原理。
二.设计内容1.语音信号的采集2.语音信号的频谱分析3.设计数字滤波器4.用滤波器对信号进行滤波5.分析滤波后得到的语音信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化6.回放语音信号三.总体方案设计1.利用Windows下的录音机,录制一段语音,时间在1s以内,然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
理解采样频率、采样位数的概念。
MATLAB函数:Wavread功能对语音信号进行采样,wavread函数的格式为:y=wavread('施玉彬1.wav',[n1,n2]),返回文件中语音信号从n1到n2之间的样本。
2.先画出语音信号的时域波形,然后对语音信号进行快速傅里叶变换,得到信号的频谱特性。
从而加深对频谱特性的理解。
MATLAB函数:fft功能是实现快速傅里叶变换,fft函数的格式为:y=fft(x),返回向量x的不连续fourier变换。
3.设计数字滤波器低通滤波器的性能指标:fb=1000Hz,fc=1200Hz,Rs=100dB,Rp=1Db.MATLAB函数:ellipord功能是要求低通滤波器的参数,ellipord函数的格式为:[N,Wn]=ellipord(Wp,Ws,Rp,Rs),返回设计滤波器的阶数和截止频率。
ellip功能是设计IIR滤波器,ellip函数的格式为:[b,a]=ellip(N,Rp,Rs,Wn),返回设计滤波器的低通滤波器的参数。
4.用设计的滤波器对采集的语音信号进行滤波。
MATLAB函数:filter功能对信号进行滤波,filter函数的格式为:y=filter(b,a,x),由给定的滤波器对x进行滤波。
信号处理算法课程设计报告 Matlab对语音信号进行频谱分析及滤波
实验报告题目:Matlab对语音信号进行频谱分析及滤波专业班级电子09学生学号指导教师刘利民完成时间 2012 年 6月 11 日一、设计目的为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,再者,加强学生对Matlab软件在信号分析和处理的运用。
二、设计内容1、语音信号的采集录制了一段声音,在C盘保存为WAV格式(也可以利用已有的音乐)。
然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。
2、语音信号的频谱分析首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab 中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。
3、设计数字滤波器和画出其频谱响应设计一个数字滤波器:F c =4800 Hz,Fb=5000 Hz,Ap= 1dB,As=100dB,利用Matlab中的函数freqz画出了该滤波器的频率响应。
4、对滤波前后的信号进行对比,分析信号的变化,并回放语音信号。
三、课程设计应完成的工作步骤1、语音信号的采集,并播放原始语音信号;2、画出语音信号的时域波形,语音信号的频谱分析;3、数字滤波器的设计;4、对语音信号进行滤波处理;5、对滤波前后的语音信号频谱进行对比分析;并回放语音信号四、设计结果分析二、设计内容1 语音信号的采集利用windows自带的关机语音C:\WINDOWS\Media\Windows XP 关机.wav,时间刚好在1s以内(如图)。
在matlab 平台下,利用函数wavread对语音信号进行采样。
通过wavread函数的使用,进一步理解采样频率,采样位数。
采样和播放语音信号:[z1,fs,bits]=wavread('C:\WINDOWS\Media\Windows XP 关机.wav')运行结果:fs = 20250 bits =16(fs表示采样频率(Hz),nbits表示采样位数)sound(x1,fs,bits); %播放语音信号2 语音信号的频谱分析首先画出由wavread函数采样后的信号的时域波形和它的频域响应波形;其次对语音信号进行FFT变换,得到FFT频谱特性曲线,与原语音信号的频谱特性曲线进行比较。
数字信号处理课程设计报告--基于MATLAB的语音去噪处理
数字信号处理课程设计报告--基于MATLAB的语音去噪处理《数字信号处理》课程设计报告基于MATLAB的语音去噪处理专业: 通信工程班级: 通信1101班组次: 第7组姓名及学号: 胡政权(2011013825) 姓名及学号: 潘爽(2011013836)第1页组员承担任务负责程序的编写,并检验程序是否错误,利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集胡政权与整理,对课程设计要求进行最后审核。
负责课程设计实验MATLAB仿真对实验结果进行分析,上网查阅材料对实验发表自己看法同时对实验要求进行扩展。
对论文进行抒写,排版潘爽使实验课程设计更加完善。
指导教师评价意见第2页基于MATLAB的语音去噪处理1、设计目的(1)巩固所学的数字信号处理理论知识,理解信号的采集、处理、加噪、去噪过程; (2)综合运用专业及基础知识,解决实际工程技术问题的能力; (3)学习资料的收集与整理,学会撰写课程设计报告。
2、设计任务(1)语音信号的录制。
(2)在MATLAB平台上读入语音信号。
(3)绘制频谱图并回放原始语音信号。
(4)利用MATLAB编程加入一段正弦波噪音,设计滤波器去噪。
(5)利用MATLAB 编程加入一段随机噪音信号,设计FIR和IIR滤波器去噪,并分别绘制频谱图、回放语音信号。
(6)通过仿真后的图像以及对语音信号的回放,对比两种去噪方式的优缺点。
其大概流程框图可如下表示:(图2-1)图2-1 课程设计的流程第3页3、设计原理3.1 去噪原理3.1.1 采样定理在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5,10倍;采样定理又称奈奎斯特定理。
1924年奈奎斯特(Nyquist)就推导出在理想低通信道的最高大码元传输速率的公式: 理想低通信道的最高大码元传输速率=2W*log2 N (其中W是理想低通信道的带宽,N是电平强度)为什么把采样频率设为8kHz?在数字通信中,根据采样定理, 最小采样频率为语音信号最高频率的2倍频带为F的连续信号 f(t)可用一系列离散的采样值f(t1),f(t1?Δt),f(t1?2Δt),...来表示,只要这些采样点的时间间隔Δt?1/2F,便可根据各采样值完全恢复原来的信号f(t)。
数字信号处理课程设计报告--基于MATLAB的语音去噪处理
数字信号处理课程设计报告--基于MATLAB的语音去噪处理《数字信号处理》课程设计报告基于MATLAB的语音去噪处理专业: 通信工程班级: 通信1101班组次: 第7组姓名及学号: 胡政权(2011013825) 姓名及学号: 潘爽(2011013836)第1页组员承担任务负责程序的编写,并检验程序是否错误,利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集胡政权与整理,对课程设计要求进行最后审核。
负责课程设计实验MATLAB仿真对实验结果进行分析,上网查阅材料对实验发表自己看法同时对实验要求进行扩展。
对论文进行抒写,排版潘爽使实验课程设计更加完善。
指导教师评价意见第2页基于MATLAB的语音去噪处理1、设计目的(1)巩固所学的数字信号处理理论知识,理解信号的采集、处理、加噪、去噪过程; (2)综合运用专业及基础知识,解决实际工程技术问题的能力; (3)学习资料的收集与整理,学会撰写课程设计报告。
2、设计任务(1)语音信号的录制。
(2)在MATLAB平台上读入语音信号。
(3)绘制频谱图并回放原始语音信号。
(4)利用MATLAB编程加入一段正弦波噪音,设计滤波器去噪。
(5)利用MATLAB 编程加入一段随机噪音信号,设计FIR和IIR滤波器去噪,并分别绘制频谱图、回放语音信号。
(6)通过仿真后的图像以及对语音信号的回放,对比两种去噪方式的优缺点。
其大概流程框图可如下表示:(图2-1)图2-1 课程设计的流程第3页3、设计原理3.1 去噪原理3.1.1 采样定理在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5,10倍;采样定理又称奈奎斯特定理。
1924年奈奎斯特(Nyquist)就推导出在理想低通信道的最高大码元传输速率的公式: 理想低通信道的最高大码元传输速率=2W*log2 N (其中W是理想低通信道的带宽,N是电平强度)为什么把采样频率设为8kHz?在数字通信中,根据采样定理, 最小采样频率为语音信号最高频率的2倍频带为F的连续信号 f(t)可用一系列离散的采样值f(t1),f(t1?Δt),f(t1?2Δt),...来表示,只要这些采样点的时间间隔Δt?1/2F,便可根据各采样值完全恢复原来的信号f(t)。
数字信号处理课程设计语音信号处理MATLAB
中原工学院数字信号处理教程课程设计电信152杨耀华绪论数字信号处理课程是电子信息类与电气类专业本科生继“信号与系统”课之后的一门必修的专业基础课程。
设置本课程的目的在于,使学生通过本课程的学习,了解“数字信号处理”这一技术领域的概貌,初步建立起有关“数字信号处理”的基本概念,掌握基本分析方法,为后续课程及从事信息处理等方面有关的研究工作打下基础。
本课程是一门结合实际工程应用的基础理论课程。
本次课程设计是在MATLAB平台上,对声音信号进行采集,处理,滤波等最终还原出原无噪声的声音信号。
运用本课程所学的理论知识对信号进行谱分析,设计滤波器,得出结论。
进一步巩固所学的知识。
目录一.设计目的 (1)二.设计要求及任务 (1)三.课程设计平台 (2)四.设计原理及计算方法 (2)五.实验论证方案及结果分析 (3)六. 结论及心得 (15)七. 附录:程序代码及注释 (15)八. 参考文献 (28)一.设计目的1.学会MATLAB的使用,掌握MATLAB程序设计方法。
2.掌握在windows环境下语音信号采集的方法。
3.掌握数字信号处理的基本概念,基本理论和基本方法。
4.掌握MATLAB设计IIR数字滤波器的方法。
学会用MATLAB对信号进行分析和处理。
二.设计要求及任务2.1.语音信号的采集;本设计利用计算机Windows下的录音机录入一句语音信号,然后在Matlab软件平台下,利用函数waveread对语音信号进行采样,记住采样频率和采样点数。
2.2.语音信号的频谱分析;在Matlab中,可以利用函数FFT对信号进行快速傅里叶变换,得到信号的频谱特性,然后加入一干扰信号,要求画出语音信号干扰前后的时域波形,并对其频谱进行分析。
2.3.设计数字滤波器,给出性能指标(参考指标);(1)低通滤波器的性能指标:fp=1000Hz,fs=1200Hz,As=100dB,Ap=1dB(2)高通滤波器的性能指标:fs=4800Hz,fp=5000Hz,As=100dB,Ap=1dB(3)带通滤波器的性能指标:fp1=1200Hz,fp2=3000Hz,fs1=1000Hz,fps2=3200Hz,As=100dB,Ap=1dB;采用双线性变换法设计上面一种类型的数字滤波器,要求使用切比雪夫II型滤波器。
MATLAB语音信号处理
MATLAB语⾳信号处理数字信号处理课设,我们使⽤MATLAB对语⾳信号进⾏了⼀系列处理,并将其所有功能集中于下图界⾯中:这个界⾯涉及功能众多,其中包括语⾳信号的观察分析、⾳⾊变换、AM调制解调、减抽样、加噪去噪、相频分析和幅频滤波等,最重要的是对MATLAB中函数的掌握,通过不同函数的组合实现你想要实现的功能。
本篇不会给出整个界⾯的程序,下⾯会分块给出每个功能的程序,整个界⾯只需GUI设计界⾯⽂件、定义结构体并把对应键程序打进去即可。
1、语⾳信号的采集1.1题⽬要求使⽤windows下的录⾳机录制⼀段语⾳信号、⾳乐信号或者采⽤其他软件截取⼀段⾳乐信号(要求:时间不超过5s,⽂件格式为WAV。
)①请每位同学都参与录⾳,内容⾃定。
②使⽤wavread语句读取语⾳/⾳乐信号获取抽样率;(注意:读取的信号是双声道信号,即为双列向量,需要分列处理);③输出时域语⾳/⾳乐信号的波形。
④实现对录⾳信号的声⾳⼤⼩的调节。
⑤实现对两种语⾳/⾳乐信号的混⾳⾳效。
⑥实现⾳乐信号的回⾳⾳效。
1.2设计内容及⽅案①读取⾳频信号:我是通过wavread函数读取.wav⽂件的⽅式来获得,当然⾸先要⾃⼰创建⼀个.wav⾳频,我是通过电脑录⾳⽣成.mp3然后格式⼯⼚转成.wav的,需保存到同⼀⽂件夹下。
②分声道处理:⼀般⾳乐和语⾳信号都是双声道信号,时域和频谱图会有两个颜⾊,所以要取单列来分析,通过x1=x(:,1)语句来实现。
③画时域波形图:⽤plot函数来画图,注意横坐标为时间t。
④⾳量⼤⼩调节:通过将⾳频直接乘⼀个系数来实现调⾳量。
⑤混⾳和回声:混⾳即将两个⾳频相加,要相加就得保证矩阵⼀样,所以要通过截取并补零矩阵来实现;回声是把三个信号叠加,这三个信号在不同位置补零⾳量也逐渐变⼩,就可以实现回声。
⑥播放声⾳:本题我使⽤wavplay来播放声⾳,会有警告,后⾯的题我⽤sound⽐较好。
1.3程序源码及注释clear[x,fs] = wavread('beautiful.wav');%⾳乐信号[y,fs1]= wavread('1.wav');%⼥⽣声⾳[z,fs2]= wavread('2.wav');%男⽣声⾳%输出频率fsfs1fs2%⾳乐语⾳信号分声道处理x1=x(:,1);y1=y(:,1);z1=z(:,1);%画⾳乐信号时域图n1=length(x1);%length取数列长度即元素个数figure(1)t1=(0:(n1-1))/fs;plot(t1,x1);axis([0,5,-1,1]);xlabel('时间t');title('⾳乐信号时域波形');%画语⾳信号时域图n2=length(y1);figure(2)subplot(2,1,1);t2=(0:(n2-1))/fs1;plot(t2,y1);%⼥⽣axis([0,4,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('⼥⽣语⾳信号时域波形');n3=length(z1);subplot(2,1,2);t3=(0:(n3-1))/fs2;plot(t3,z1);%男⽣axis([0,4,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('男⽣语⾳信号时域波形');%对语⾳信号声⾳⼤⼩调节wavplay(y,fs1); %播放原语⾳y11=10*y;wavplay(y11,fs1); %加⼤⾳量播放y22=0.5*y;wavplay(y22,fs1); %减⼩⾳量播放%两种语⾳信号的混⾳[m,n]=size(y1);%size取矩阵的⾏列数[m0,n0]=size(z1);a=zeros(abs(m-m0),n);%两矩阵⾏数差为零矩阵⾏数if length(y1)<length(z1)y2=[y1;a];y3=y2+z1;%两个矩阵⾏数⼀样才能相加,所以要补零elsey2=[z1;a];y3=y2+y1;%y1和z1中长的那个不变,短的那个补零end;wavplay(y3,fs1) ;%播放混⾳语⾳%画混⾳波形figure(3)subplot(2,1,1);t4=(0:(max(n2,n3)-1))/fs1;plot(t4,y3);axis([0,4.5,-0.5,0.5]);xlabel('时间');ylabel('幅度');title('两语⾳信号叠加后时域波形');%⾳乐信号的回⾳x11=x1(1:200000);%截取部分x11=x11';%因为输出为⼀列所以要转置成⼀⾏int0=zeros(1,20000);%1⾏2000列的零矩阵temp1=[x11,int0,int0];temp2=[int0,0.6*x11,int0];temp3=[int0,int0,0.3*x11];%通过补零实现延时,同时声⾳⼀个⽐⼀个⼩hui=temp1+temp2+temp3;%三重声⾳相加实现回声N=length(hui);wavplay(hui,fs1);%播放回⾳⾳乐%画回声波形subplot(2,1,2);t1=(0:(N-1))/fs;plot(t1,hui);axis([0,4.5,-1,1]);xlabel('时间');ylabel('幅度');title('回声时域波形');1.4运⾏结果仿真结果分析:我听到了原声和⾳量放⼤减⼩的声⾳,也听到了混⾳和回声的效果,变化明显;本题我画了⾳乐和两个语⾳信号的时域波形以及混⾳回声的时域波形,⾳乐信号幅度⽐语⾳信号⾼且连贯性⾼,混⾳之后幅度叠加,回声之后幅度也增⼤,波形有很明显的变化。
数字信号处理matlab课程设计
课题一数字信号处理系统设计一、项目要求用本课程所学的数字信号处理理论知识,设计一个具有信号的采集、处理、传输、显示和存储等功能的系统,内容如下:1、录制一段语音信号,并对录制的语音信号进行采样(采样频率可取fs=22050Hz);2、画出采样后的语音信号的时域波形和频谱图;3、滤波器的性能指标:低通滤波器:通带边界频率fp=1kHz,通带最大衰减Ap=1dB;阻带边界频率fp=1.2kHz,阻带最小衰减Ap=100dB;高通滤波器:通带边界频率fp=5kHz,通带最大衰减Ap=1dB;阻带边界频率fp=4.8kHz,阻带最小衰减Ap=100dB;带通滤波器:通带上限截止频率fp2=3kHz, 通带下限截止频率fp1=1.2kHz;阻带上限截止频率fs2=3.2kHz, 通带下限截止频率fp1=1kHz;通带最大衰减Ap=1dB, 阻带最小衰减As=100dB;采用双线性变换法设计滤波器,并画出滤波器的频率响应;4、用自己设计的滤波器对采样的信号进行滤波,画出滤波后信号的时域波形和频谱图,并对滤波前后的信号进行对比,分析信号的变化;5、回放语音6、用GUI设计一个信号系统的用户界面。
二、实验所要用到的MATLAB函数1、语音信号的采样与播放wavread();[y,fs,bite]=wavread();%语音信号的采样sound(y,fs,bite);%播放语音2.滤波器:IIR:butte();%巴特沃思滤波器cheby1(); %切比雪夫I滤波器elliptical();%椭圆滤波器3.频率响应:[h,f]=freqz(b,a,n,fs)freqz(b,a,n,fs)5.快速傅里叶变换fft (x, n)6.画曲线plot(x, y)stem(x, y)7.在MATLAB中,设计辅助低通原型巴特沃思和切比雪夫滤波器的阶数和截止频率;1)利用buttord和cheblord确定阶数;2)[num,den]=butter(N,Wn),[num,den]=cheby1(N,Wn)3)lp2hp,lp2bp,lp2bs可以完成低通滤波器到高通,带通,带阻的转换4)使用biliner对模拟滤波器进行双线性变换,求得数字滤波器的传输函数系数三、数字滤波器(代码)1.IIR低通滤波器fp=1000;ft=5500;fs=1200;wp=2*pi*fp/ft;ws=2*pi*fs/ft;Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=buttord(Fp,Fs,1,100,'s');[z,p,k]=buttap(n);B=k*real(poly(z));A=real(poly(p));[b1,a1]=lp2lp(B,A,Omgc);[ba1,aa1]=bilinear(b1,a1,ft); %模拟转数字[Ha,w]=freqz(ba1,aa1); %求频率相应plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 低通滤波器');xlabel('频率/HZ');ylabel('幅值');2.IIR高通滤波器fp=5000;ft=25000;%取抽样频率•fs=4800;Rp=1;As=100;wp=2*pi*fp/ft;%通带频率ws=2*pi*fs/ft;%截止频率Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=ellipord(Fp,Fs,Rp,As,'s'); %计算阶数n和截止频率[z,p,k]=ellipap(n,Rp,As);B3=k*real(poly(z));A3=real(poly(p));[b3,a3]=lp2hp(B3,A3,Omgc);[ba3,aa3]=bilinear(b3,a3,ft);[Ha,w]=freqz(ba3,aa3);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR高通滤波器');xlabel('频率/HZ');ylabel('幅值');3.IIR带通滤波器fp1=1200;fp2=3000;fs1=1000;fs2=3200;ft=10000; As=100;Rp=1;wp1=2*pi*fp1/ft;wp2=2*pi*fp2/ft;ws1=2*pi*fs1/ft;ws2=2*pi*fs2/ft;Fp1=2*ft*tan(wp1/2);Fp2=2*ft*tan(wp2/2);Fp=[Fp1,Fp2];Fs1=2*ft*tan(ws1/2);Fs2=2*ft*tan(ws2/2);Fs=[Fs1,Fs2];bw=Fp2-Fp1;w0=sqrt(Fp1*Fp2);%通带宽和中心频率[n,Omgn]=cheb1ord(Fp,Fs,Rp,As,'s');[z,p,k]=cheb1ap(n,Rp);B2=k*real(poly(z));A2=real(poly(p));[b2,a2]=lp2bp(B2,A2,w0,bw);[ba2,aa2]=bilinear(b2,a2,ft);[Ha,w]=freqz(ba2,aa2);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 带通滤波器'); xlabel('频率/HZ'); ylabel('幅值');四、总代码function varargout = bzh(varargin)% BZH M-file for bzh.fig% BZH, by itself, creates a new BZH or raises the existing% singleton*.%% H = BZH returns the handle to a new BZH or the handle to% the existing singleton*.%% BZH('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in BZH.M with the given input arguments.%% BZH('Property','Value',...) creates a new BZH or raises the % existing singleton*. Starting from the left, property value pairs are% applied to the GUI before ko_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application% stop. All inputs are passed to bzh_OpeningFcn via varargin. %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allowsonly one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2021 -2021 The MathWorks, Inc.% Edit the above text to modify the response to help bzh% Last Modified by GUIDE v2.5 09-Jan-2021 08:54:22% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @bzh_OpeningFcn, ...'gui_OutputFcn', @bzh_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before bzh is made visible.function bzh_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% varargin command line arguments to bzh (see VARARGIN)% Choose default command line output for bzhhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes bzh wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = bzh_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in tag_start.function tag_start_Callback(hObject, eventdata, handles)% hObject handle to tag_start (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1)cla;global z0;global yy;fs=22050;nbits=32;[yy,fs,nbits]=wavread('D:\f.wav'); %语音信号加载sound(yy,fs); %回放语音z0=yy;axes(handles.axes1);plot(yy);title('时域采样信号波形');grid onn=length(yy); %求出语音信号的长度Y=fft(yy,n); %傅里叶变换axes(handles.axes2);plot(20*log10(abs(Y)));title('时域采样信号频谱');guidata(hObject,handles);grid on% --- Executes on button press in tag_ditong.function tag_ditong_Callback(hObject, eventdata, handles)% hObject handle to tag_ditong (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1)cla;global z1;global yy;global ba1;global aa1;global Fp;global Fs;fp=1000;ft=5500;fs=1200;wp=2*pi*fp/ft;ws=2*pi*fs/ft;Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=buttord(Fp,Fs,1,100,'s');[z,p,k]=buttap(n);B=k*real(poly(z));A=real(poly(p));[b1,a1]=lp2lp(B,A,Omgc);[ba1,aa1]=bilinear(b1,a1,ft); %模拟转数字z1=filter(ba1,aa1,yy);[Ha,w]=freqz(ba1,aa1); %求频率相应plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 低通滤波器');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_gaotong.function tag_gaotong_Callback(hObject, eventdata, handles)% hObject handle to tag_gaotong (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes2)cla;global yy;global z2;global B3;global ba3;global aa3;global Fp;global Fs;fp=5000;ft=25000;%取抽样频率•fs=4800;Rp=1;As=100;wp=2*pi*fp/ft;%通带频率ws=2*pi*fs/ft;%截止频率Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=ellipord(Fp,Fs,Rp,As,'s'); %计算阶数n和截止频率[z,p,k]=ellipap(n,Rp,As);B3=k*real(poly(z));A3=real(poly(p));[b3,a3]=lp2hp(B3,A3,Omgc);[ba3,aa3]=bilinear(b3,a3,ft);z2=filter(ba3,aa3,yy);[Ha,w]=freqz(ba3,aa3);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR高通滤波器');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_daitong.function tag_daitong_Callback(hObject, eventdata, handles)% hObject handle to tag_daitong (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z3;global B2;global ba2;global aa2;fp1=1200;fp2=3000;fs1=1000;fs2=3200;ft=10000;As=100;Rp=1;wp1=2*pi*fp1/ft;wp2=2*pi*fp2/ft;ws1=2*pi*fs1/ft;ws2=2*pi*fs2/ft;Fp1=2*ft*tan(wp1/2);Fp2=2*ft*tan(wp2/2);Fp=[Fp1,Fp2];Fs1=2*ft*tan(ws1/2);Fs2=2*ft*tan(ws2/2);Fs=[Fs1,Fs2];bw=Fp2-Fp1;w0=sqrt(Fp1*Fp2);%通带宽和中心频率[n,Omgn]=cheb1ord(Fp,Fs,Rp,As,'s');[z,p,k]=cheb1ap(n,Rp);B2=k*real(poly(z));A2=real(poly(p));[b2,a2]=lp2bp(B2,A2,w0,bw);[ba2,aa2]=bilinear(b2,a2,ft);z3=filter(ba2,aa2,yy);[Ha,w]=freqz(ba2,aa2);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 带通滤波器');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_dibo.function tag_dibo_Callback(hObject, eventdata, handles)% hObject handle to tag_dibo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z1;global ba1;global aa1;m4=fft(z1);plot(z1,'y');title('IIR滤波后的信号波形');xlabel('时间/t');ylabel('幅值');axes(handles.axes4)cla;plot(abs(m4),'y');title('IIR滤波后信号频谱');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_gaobo.function tag_gaobo_Callback(hObject, eventdata, handles)% hObject handle to tag_gaobo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z2;global B3;global ba3;global aa3;m5=fft(z2);plot(z2,'y');title('IIR滤波后的信号波形');xlabel('时间/t');ylabel('幅值');axes(handles.axes4)cla;plot(abs(m5),'y');title('IIR滤波后信号频谱');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_daibo.function tag_daibo_Callback(hObject, eventdata, handles)% hObject handle to tag_daibo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z3;global B2;global ba2;global aa2;m6=fft(z3);plot(z3,'y');title('IIR滤波后的信号波形');xlabel('时间/t');ylabel('幅值');axes(handles.axes4)cla;plot(abs(m6),'y');title('IIR滤波后信号频谱');xlabel('频率/HZ');ylabel('幅值');% --- Executes on selection change in tag_choose.function tag_choose_Callback(hObject, eventdata, handles)% hObject handle to tag_choose (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns tag_choose contents as cell array% contents{get(hObject,'Value')} returns selected item from tag_choose% --- Executes during object creation, after setting all properties. function tag_choose_CreateFcn(hObject, eventdata, handles)% hObject handle to tag_choose (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundCo lor'));end% --- Executes on button press in tag_return.function tag_return_Callback(hObject, eventdata, handles)% hObject handle to tag_return (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global z0;global z1;global z2;global z3;global yy;val=get(handles.tag_choose,'Value');if(val==1)[yy,fs,nbits]=wavread('D:\f.wav'); %语音信号加载sound(yy,fs); %回放语音endif(val==2)sound(z1,22050);endif(val==3)sound(z3,22050);endif(val==4)sound(z2,22050);end% --- Executes on mouse press over axes background.function axes1_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- If Enable == 'on', executes on mouse press in 5 pixel border. % --- Otherwise, executes on mouse press in 5 pixel border or over tag_start.function tag_start_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to tag_start (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)采样后信号滤波器数字波形IIR低通滤波后波形图IIR高通滤波后波形图IIR带通滤波后波形图教师见习报告总结期待已久的见习已经结束了,在龙岩三中高中部见习听课,虽然只是短短的两个星期,但感触还是蛮深的,以前作为一名学生坐在课室听课,和现在作为一名准教师坐在课室听课是完全不同的感受,感觉自己学到了一些在平时课堂上学不到的东西。
基于matlab的语音信号滤波处理——数字信号处理课程设计
数字信号处理课程设计题目:基于matlab的语音信号滤波处理摘要:语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。
这为我们的本次设计提供了强大并良好的环境!本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。
再在Matlab中分别设计不同形式的FIR数字滤波器。
之后对采集的语音信号经过不同的滤波器(低通、高通、带通)后,观察不同的波形,并进行时域和频谱的分析。
对比处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。
最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。
目录1.设计内容 (4)2.设计原理 (4)2.1语音信号的时域分析 (4)2.2语音信号的频域分析 (5)3.设计过程 (5)3.1实验程序源代码 (6)3.1.1原语音信号时域、频域图 (6)3.1.2低通滤波器的设计 (6)3.1.3高通滤波器的设计 (7)3.1.4带通滤波器的设计 (8)3.1.5语音信号的回放 (9)3.2调试结果描述 (10)3.3所遇问题及结果分析 (15)3.3.1所遇主要问题 (16)3.3.2结果分析 (16)4.体会与收获 (17)5.参考文献 (17)1.设计内容:1.首先录制好一段自己的语音。
2.用Matlab分别设计好3种类型的滤波器(指标自己确定):低通型、高通型、带通型。
3.用Matlab将语音信号进行采样,并分别将其通过所设计的3种滤波器。
4.用Matlab自带的语音返回函数收听滤波后的语音信号,分析并比较其与原语音信号的差异。
数字信号处理课程设计--基于 MATLAB 的语音去噪处理
数字信号处理课程设计课程名称数字信号处理基于MATLAB 的语音去噪处理题目名称专业班级13级通信工程本一学生姓名学号指导教师二○一五年十二月二十七日引言滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。
利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。
课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。
通过理论推导得出相应结论,再利用MATLAB 作为编程工具进行计算机实现。
在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。
通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。
关键词数字滤波器 MATLAB 窗函数法巴特沃斯切比雪夫双线性变换目录1 绪论 (4)2 课程设计内容 (5)3 课程设计的具体实现 (5)3.1 语音信号的采集 (4)3.2 语音信号的时频分析 (4)3.3 语音信号加噪与频谱分析 (6)3.4 利用双线性变换法设计低通滤波器 (8)3.5 用滤波器对加噪语音信号进行滤波 (9)3.6 分析滤波前后语音信号波形及频谱的变化 (10)3.7回放语音信号 (10)3.8小结 (11)结论 ···········································································错误!未定义书签。
语音信号处理的matlab实现
山东建筑大学课程设计指导书课程名称:数字信号处理课程设计设计题目:语音信号分析与处理及其MATLAB实现使用班级:指导教师:一、设计要求1.基本要求:本次课程设计要求利用MATLAB对语音信号进行分析和处理,要求学生采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
2.基本教学要求:每组一台电脑(附话筒和耳机),电脑安装MATLAB6.5版本以上软件。
二、设计步骤1.理论依据根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,采样定理;时域信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较),阐明设计原理。
2.信号采集采集语音信号,并对其进行FFT频谱分析,画出信号的时域波形图和频谱图。
3.构造受干扰信号并对其进行FFT频谱分析对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。
并对其进行FFT频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。
4.数字滤波器设计根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。
5.信号处理用所设计的滤波器对含噪语音信号进行滤波。
对滤波后的语音信号进行FFT频谱分析。
画出处理过程中所得各种波形及频谱图。
对语音信号进行回放,感觉滤波前后声音的变化。
比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。
三、设计成果1.设计说明书(约2000~3000字),一般包括:(1)封面(2)目录(3)摘要(4)正文①设计目的和要求(简述本设计的任务和要求,可参照任务书和指导书);②设计原理(简述设计过程中涉及到的基本理论知识);③设计内容(按设计步骤详细介绍设计过程,即任务书和指导书中指定的各项任务)I程序源代码:给出完整源程序清单。
语音信号处理及MATLAB实现课程设计
语音信号处理及MATLA或现课程设计13目录摘 要. ..................................................................1. 设计原理 (1)1.1 设计的目的及要求 (1)1.2 课题的研究意义 (1)2. 设计原理 (2)2.1 采样频率 . (2)2.2 采样位数 (2)2.3 采样定理 (2)2.4 时域信号的 FFT 分析 (2)2.5 数字滤波器设计原理和方法 (3)2.6 各种不同类型滤波器的性能比较 . ........................................3. 设计内容 (4)3.1 语音信号的录入与提取 (4)3.2 加噪处理(高频噪音) (6)3.3 设计窗函数带阻滤波器 (8)3.4 滤波处理 (9)3.5 加躁处理(低频噪音) (11)3.6 设计椭圆函数高通滤波器滤波处理 . .....................................总 结. (16)致 谢. (17)参考文献 (17)附录 . (18)摘要语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
Matlab 语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
信号处理是Matlab 重要应用的领域之一。
本实验设计用电脑自带的录音机采集了一段语音,对其进行了时域分析,频谱分析, 分析语音信号的特性。
数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理
数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理xxxx数字信号处理课程设计报告题目:基于MATLAB 的语音信号的特技处理系 (院): 计算机工程学院专业: 通信工程班级: 通信xx班学号: xxxxxxxx姓名: xxx指导教师: xxx学年学期: 2009 ~ 2010 学年第 1 学期2009年12月 18 日设计任务书课题基于MATLAB 的语音信号的特技处理名称1. 巩固所学的数字信号处理理论知识,理解信号的采集、处理、传输、显示和存储过程;设计2. 综合运用专业及基础知识,解决实际工程技术问题的能力; 目的3. 学习资料的收集与整理,学会撰写课程设计报告。
1. 微型电子计算机(PC); 实验环境 2. 安装Windows 2000以上操作系统,MATLAB等开发工具。
1. 选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,并对其进行频谱分析; 然后在时域用数字信号处理方法将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;最后设计一个信号处理系统界面。
2. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,任务注意材料收集与整理; 要求3. 在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;4. 结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。
工作进度计划序号起止日期工作内容2009.12.14~2009.12.14 在预设计的基础上,进一步查阅资料,完善设计方案。
12009.12.14~2009.12.17 设计总体方案,构建、绘制流程框图,编写代码,上机调试。
22009.12.17~2009.12.18 测试程序,完善功能,撰写设计报告。
32009.12.18 参加答辩,根据教师反馈意见,修改、完善设计报告。
4指导教师(签字):年月日摘要语音是人们交流思想和进行社会活动的最基本手段,我们要对语音信号进行测定并将其转变为另一种形式,以提高我们的通信能力。
基于matlab的数字音效处理器——数字信号处理课设报告
实验题目专业:通信工程班级: 114班姓名: XXXXX 学号: XXXXXXXX指导教师: XXXXX一、实验类型综合研究性实验二、实验目的1.掌握采样定理及FFT谱分析的基本原理及其利用Matlab的实现方法;2. 掌握数字滤波器的设计原理和方法;3. 学习用MATLAB编程实现语音数字滤波系统。
三、实验要求1. 利用Windows下的录音机设备采集语音信号;2. 对语音信号进行采样并混进加性噪声,作频谱分析;3. 通过频谱分析选择合适的滤波器性能指标,设计合适的数字滤波器,并对含噪音的语音信号进行数字滤波;4. 设计处理系统的用户界面(GUI),在所设计的系统界面上可以选择滤波器的参数,显示滤波器的频率响应,选择信号等。
四、数字滤波器的设计原理数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配,所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。
其设计方法主要有经典设计法、直接设计法和最大平滑滤波器设计法。
FIR数字滤波器的单位脉冲响应是有限长序列。
它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
在对滤波器实际设计时,整个过程的运算量是很大的。
设计阶数较高的IIR 滤波器时,计算量更大,设计过程中改变参数或滤波器类型时都要重新计算。
设计完成后对已设计的滤波器的频率响应要进行校核。
要得到幅频、相频响应特性,运算量也是很大的。
平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。
基于MATLAB的语音信号分析与处理的课程设计
基于MATLAB的语音信号分析与处理的课程设计一.课程设计目的综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
二.课程设计基本要求1.学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。
2.掌握在 Windows 环境下语音信号采集的方法。
3. 掌握数字信号处理的基本概念、基本理论和基本方法。
4. 掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法。
5. 学会用 MATLAB 对信号进行分析和处理。
三.设计过程实验按照录制采集语音信号,对录制的信号进行采样,绘制采样后语音信号的时域波形和频谱图,设计滤波器,运用所设计的滤波器对采集的信号进行滤波,绘制滤波后信号的时域波形和频谱的思路进行。
首先录制一段自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,用 MATLAB 设计一信号处理系统界面。
实现波形的程序如下:clear;clc;[y,Fs,bits]=wavread('lc.wav',[22050 10000]);ws=0.125*pi;wp=0.075*pi;rp=0.25;rs=50;[N,wc]=buttord(wp/pi,ws/pi,rp,rs);[B,A]=butter(N,wc);[Bz,Az]=bilinear(B,A,Fs);[Rows,Cols]=size(y);y(:,1)=y(:,1)-mean(y(:,1));Y=abs(fft(y)+eps);%为防止出现0值Y(1)=Y(2);L=Rows;w=0:(L-1);w=2*pi/Rows*w;x=filter(B,A,y);X=abs(fft(x)+eps);%为防止出现0值X(1)=X(2);figure(1);subplot(2,2,1);plot(y);title('滤波前信号波形');subplot(2,2,2);plot(w/pi,Y(1:L));title('滤波前信号频谱');xlabel('w(单位pi)');ylabel('幅值');subplot(2,2,3);plot(x);title('滤波后信号波形');subplot(2,2,4);plot(w/pi,X(1:L));title('低通滤波后信号频谱');xlabel('w(单位pi)');ylabel('幅值');figure(2);[H,w]=freqz(B,A);plot(w/pi,abs(H));图形为:四.结果分析与体会:利用sound函数重放滤波后的声音,低通滤波后的声音跟原始声音差别不大,通过观察频谱及过渡带的衰减特性,可知此时最优的为椭圆型数字低通滤波器。
Matlab在语音信号处理中的应用(00002)
Matlab在语音信号处理中的应用————————————————————————————————作者:————————————————————————————————日期:《数字信号处理》课程设计报告学院(部)信息工程学院专业电子信息工程班级24030902学生姓名周小军学号2403090212数字信号综合设计一、实验目的1.学会MATLAB的使用,掌握MA TLAB的程序设计方法;2.掌握在Windows环境下语音信号采集的方法;3.掌握数字信号处理的基本概念、基本理论和基本方法;4.掌握MATLAB设计FIR和IIR数字滤波器的方法;5.学会用MATLAB对信号进行分析和处理。
二、实验原理2.1 语音信号采集与分析运用windows下的录音机,录制一段自己的话音,时间控制在一秒。
然后在MATLAB 软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形,具体运用见程序代码。
2.2 滤波器设计和运用滤波器进行滤波1 )窗函数和等波纹逼近法设计FIR滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用fir1函数设计线性相位FIR数字滤波器,再用freqz函数画出其频谱图形,最后运用fftfilt函数对信号进行滤波。
而等波纹逼近法中则运用remez和remezord直接设计FIR滤波器,然后运用fftfilt函数对信号进行滤波。
具体见程序代码。
2 )双线性变换法社设计IIR数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标:Ωph=2/T*tan(wp/2),然后用butter和buttord、cheby1和cheb1ord、ellip和ellipord 设计各种模拟滤波器,再用bilinear函数进行模拟滤波器和数字滤波器之间的转换,最后用filter函数对语音信号进行滤波,并运用函数sound播放滤波后语音。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中原工学院数字信号处理教程课程设计电信152杨耀华绪论数字信号处理课程是电子信息类与电气类专业本科生继“信号与系统”课之后的一门必修的专业基础课程。
设置本课程的目的在于,使学生通过本课程的学习,了解“数字信号处理”这一技术领域的概貌,初步建立起有关“数字信号处理”的基本概念,掌握基本分析方法,为后续课程及从事信息处理等方面有关的研究工作打下基础。
本课程是一门结合实际工程应用的基础理论课程。
本次课程设计是在MATLAB平台上,对声音信号进行采集,处理,滤波等最终还原出原无噪声的声音信号。
运用本课程所学的理论知识对信号进行谱分析,设计滤波器,得出结论。
进一步巩固所学的知识。
目录一.设计目的 (1)二.设计要求及任务 (1)三.课程设计平台 (2)四.设计原理及计算方法 (2)五.实验论证方案及结果分析 (3)六. 结论及心得 (15)七. 附录:程序代码及注释 (15)八. 参考文献 (28)一.设计目的1.学会MATLAB的使用,掌握MATLAB程序设计方法。
2.掌握在windows环境下语音信号采集的方法。
3.掌握数字信号处理的基本概念,基本理论和基本方法。
4.掌握MATLAB设计IIR数字滤波器的方法。
学会用MATLAB对信号进行分析和处理。
二.设计要求及任务2.1.语音信号的采集;本设计利用计算机Windows下的录音机录入一句语音信号,然后在Matlab软件平台下,利用函数waveread对语音信号进行采样,记住采样频率和采样点数。
2.2.语音信号的频谱分析;在Matlab中,可以利用函数FFT对信号进行快速傅里叶变换,得到信号的频谱特性,然后加入一干扰信号,要求画出语音信号干扰前后的时域波形,并对其频谱进行分析。
2.3.设计数字滤波器,给出性能指标(参考指标);(1)低通滤波器的性能指标:fp=1000Hz,fs=1200Hz,As=100dB,Ap=1dB(2)高通滤波器的性能指标:fs=4800Hz,fp=5000Hz,As=100dB,Ap=1dB(3)带通滤波器的性能指标:fp1=1200Hz,fp2=3000Hz,fs1=1000Hz,fps2=3200Hz,As=100dB,Ap=1dB;采用双线性变换法设计上面一种类型的数字滤波器,要求使用切比雪夫II型滤波器。
2.4.用滤波器对信号进行滤波画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化。
2.5.回放语音信号,分析滤波前后的语音变化。
在熟悉数字信号处理课程理论的基础上,通过MATLAB仿真实现语音信号的采集与处理,进一步加深对数字信号处理理论和技术的掌握。
三.课程设计平台计算机、MATLAB6.5以上四.设计原理及计算方法4.1.语音信号采集在新版本的MATLAB中可采用audioread函数将声音信号提取出来,并通过sound 函数在MATLAB中直接播放,也可以通过audiowrite函数将处理后的数据存为声音文件。
4.2.噪声的叠加①采用单一频率的信号进行叠加,产生噪音,此种方法容易滤除。
②采用rand函数产生全频率的噪声,然后通过高通滤波器产生高频率的噪声。
其高通滤波器选择的是FIR等波纹逼近法设计的滤波器。
③采用rand函数产生全频率的噪声,然后通过带通滤波器产生高频率的噪声。
其带通滤波器选择的是椭圆带通滤波器。
4.3.滤波器的选择根据声音频率选择合适的滤波器,根据题目要求要使用双线性变换法。
巴特沃斯和切比雪夫是基础的滤波器,因此我们采用这两种滤波器。
五.实验论证方案及结果分析5.1.声音的采样及加噪声我们通过声音剪辑软件截取了一段10s的音乐,通过audioread函数将声音采样,并通过绘图程序将声音的时域波形和频域波形显示了出来。
部分代码如下:(详细见附录)[y,Fs]=audioread('Z:\伦桑,橙光音乐 - 山有木兮-橙光游戏《人鱼传说之长生烛》主题曲.wav'); //读取声音文件audiowrite('Z:\sound.wav',y,44100) //保存声音文件;%sound(y,Fs);y1=y(:,1)';y2=y(:,2)';l1=length(y1);xk1=fft(y1,l1);xk2=fft(y2,l1); //FFT变换求频谱T=1/Fs;D=1/(l1*T); //频率分辨率 hz其运行的结果图:结果分析由图可见,由于采用的是高清的声音源,其最高的频率达到了15khz。
如要完全还原声音信号,滤波器的通带要在15k以上。
所遇到的问题及解决方法①在声音采集后出现了两组数列,并且在绘制频谱和时域波形是有两个图形。
因此推测此声音为双声道,为了便于观察,将其一声道和二声道分离,从而清晰的看到了结果。
②时域波形显示太过于密集,因此我们调整了绘图的x坐标轴,只显示一部分波形便于以后的对比。
5.2.噪声的产生我们采用了随机函数rand来产生随机噪声因为rand产生的是全频率的噪声,为了将声音频率分辨快来,必须加上滤波器来产生高频噪声。
我们采用了两种滤波器,一种为FIR滤波器,一种为椭圆滤波器,来避免频率和声音频率相同,导致滤除不掉。
部分代码如下:(详细见附录)fs=14000; fp=15000;Rp=0.1;As=70; % 滤波器指标fb=[fs,fp];m=[0,1]; % 计算remezord函数所需参数f,m,devdev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];[n,fo,mo,W]=remezord(fb,m,dev,Fs); % 确定remez函数所需参数hn=remez(n,fo,mo,W); % 调用remez函数进行设计,用于滤除噪声nt中的低频成分yt=filter(hn,1,5*nt); %滤除随机噪声中低频成分,生成高通噪声ytfs1=16000; fp1=18000;fp2=20000;fs2=22000;%模拟指标Rp=0.1;As=70;%滤波器指标fp=[fp1,fp2];fs=[fs1,fs2];wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;%数字指标OmegaP=2*Fs*tan(wp/2);%频率预畸OmegaS=2*Fs*tan(ws/2);%椭圆滤波器[N,OmegaC]=ellipord(OmegaP,OmegaS,Rp,As,'s');%调用函数求滤波器阶数N和wc[b,a]=ellip(N,Rp,As,OmegaC,'s');%设计滤波器[bz,az]=bilinear(b,a,Fs);%双线性变化法yt=filter(bz,az,5*nt);%滤波绘形显示:结果分析我们设计了两种噪声,如图所示。
第一种只能通过低通滤波器来滤除噪声,第二种可以使用低通和带阻滤波器来滤除。
所遇到的问题及解决方法在加噪声时要注意噪声的长度,否则不满足矩阵的运算规则,产生报错。
5.3.滤波器的设计根据我们所加的噪声和声音频率,很容易通过计算来得出滤波器的参数fs,和fp。
为了比较滤波效果,我们分别设计了巴特沃斯低通滤波器,切比雪夫低通滤波器,巴特沃斯带阻滤波器,切比雪夫带阻滤波器。
部分代码如下:(详细见附录)fp=12000;fs=15000;%根据声音和噪声频率来确定参数Fs=44100;Rp=1;As=70;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;OmegaP=2*Fs*tan(wp/2);%预畸OmegaS=2*Fs*tan(ws/2);%切比雪夫Ⅱ型低通滤波器[N1,OmegaC1]=cheb2ord(OmegaP,OmegaS,Rp,As,'s');%求阶数和wc[b1,a1]=cheby2(N1,As,OmegaS,'s');%调用函数设计[bz1,az1]=bilinear(b1,a1,Fs);%双线性变换[H1,w1]=freqz(bz1,az1);%求频响dBH1=20*log10(abs(H1)/max(abs(H1)));%转换为分贝%巴特沃斯低通滤波器[N2,OmegaC2]=buttord(OmegaP,OmegaS,Rp,As,'s');%求阶数和wc[b2,a2]=butter(N2,OmegaC2,'s');%调用函数设计[bz2,az2]=bilinear(b2,a2,Fs);%双线性变换[H2,w2]=freqz(bz2,az2);fp=[16000;22000];fs=[18000,20000];%根据声音和噪声频率来确定参数Fs=44100;Rp=1;As=70;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;OmegaP=2*Fs*tan(wp/2);%预畸OmegaS=2*Fs*tan(ws/2);%切比雪夫Ⅱ型带阻滤波器[N1,OmegaC1]=cheb1ord(OmegaP,OmegaS,Rp,As,'s');%求阶数和wc [b1,a1]=cheby2(N1,As,OmegaC1,'stop','s');[bz1,az1]=bilinear(b1,a1,Fs);[H1,w1]=freqz(bz1,az1);%巴特沃斯带阻滤波器[N2,OmegaC2]=buttord(OmegaP,OmegaS,Rp,As,'s');[b2,a2]=butter(N2,OmegaC2,'stop','s');[bz2,az2]=bilinear(b2,a2,Fs);[H2,w2]=freqz(bz2,az2);dBH2=20*log10(abs(H2)/max(abs(H2)));绘图显示:结果分析:根据各种滤波器的频率响应可以看出,各种性能能够满足要求,同时在设计时我们发现,当完成同一滤波器指标时,切比雪夫滤波器的阶数要比巴特沃斯要小。
遇到的问题及解决方法①滤波器无图形,通过各种分析和调试,我们发现当滤波器参数要求过于苛刻时,其所需的阶数会很大,最终超过了上限,系统报错。
因此我们更改了合适的过度带,As,和Rp,再次调试无错误。
②采样频率Fs的设定要保持与声音采样频率一致,否则设计的数字滤波器的参数不能与模拟信号一致,导致无法使用。
5.4.滤波效果调用函数filter函数,对有噪声的信号进行滤波,通过与原声音时域波形和频谱,声音对比,来分析滤波效果。
部分代码如下:(详细代码见附录)y11=filter(b1,a1,x1);%滤波y12=filter(b1,a1,x2);y21=filter(b2,a2,x1);y22=filter(b2,a2,x2);yk11=fft(y11);yk12=fft(y12);yk21=fft(y21);yk22=fft(y22);T=1/Fs;D=1/(l1*T);图形如下:低通滤波器滤波滤除15k以上噪声结果:带阻滤波器滤除18k~20k噪声结果:结果分析对比原声音信号,不管是时域和频域,声音都无明显的改变,证明滤波器设计成功。