基于matlab的音频信号处理毕业设计含源文件.docx
《基于matlab的音频信号处理毕业设计含源文件.docx》由会员分享,可在线阅读,更多相关《基于matlab的音频信号处理毕业设计含源文件.docx(35页珍藏版)》请在冰豆网上搜索。
![基于matlab的音频信号处理毕业设计含源文件.docx](https://file1.bdocx.com/fileroot1/2022-12/30/ef6ce24a-f652-4c41-a063-2851c7b73adc/ef6ce24a-f652-4c41-a063-2851c7b73adc1.gif)
基于matlab的音频信号处理毕业设计含源文件
毕业设计
题目:
基于matlab的音频信号处理
专业:
电子信息工程
学号:
作者:
指导教师(职称):
基于MATLAB的语音信号处理
【摘 要】
Matlab语音信号处理是指利用matlab软件对音频信号进行读取,并对音频信号进行采样分析及离散傅里叶变换,以方便对其在频域上进行调制滤波等相关的操作.本次实验在提取音频信号后会对该信号使用在MATLAB软件中设计的滤波器进行滤波,并观察其效果,验证滤波器是否可行。
本次使用了MATLAB软件,综合运用GUI界面设计、各种函数调用等来实现音频信号的傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义.软件中自带的信号处理与分析工具箱为语音信号分析实验提供了丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化。
信号处理是MATLAB重要应用的领域之一。
【关键词】matlab语音信号处理数字滤波器傅里叶变换
BasedonMATLABofthesignalprocessing
Audioprocessing design
【Abstract】:
Thecontentsoftheresearchis tofilterthe signal noise withusingMATLABsoftware。
signalprocessingistostudytheuseofdigitalsignalprocessingtechnologyandknowledgeofthevoicesignalvoiceprocessingoftheemergingdisciplineisthefastestgrowingareasofinformationscienceoneofthecoretechnology。
Transmissionofinformationthroughthevoiceofhumanity'smostimportant,mosteffectiveandmostconvenientformofexchangeofinformation。
MATLABisaProfessional ComputingSoftwarebasedon themathematicalfunction .Through intothe MATLABsoftware canaudio signalfrequency synthesisanddecomposition.Also canbeprocessed inmoredetail theaudiofile touseit, suchasincreasingthe frequencyandamplitude ofaudiofiles it canalsoadd tospecifythecontent of theaudiofile noisesignal.Theexperiment willbe through digital MATLABfilterdesign todealwiththeaudioinwhichbepolluted,afterit,Thesystemwilldrawstwowaveformpicture:
beforefilteringandafterfiltering.Andthroughthese picturesto observe thefilteringeffectofthefilter。
Mathematicalfunction designedinthispaper are:
thefastfouriertransform,themethodofwindowfunction, thebilineartransformationmethod.AndinthisprocessitalsoincludeuseGUIinterfacedesignwindow.FinallythevoicesignalprocessingwillbeapopulardevelopmentinFuturedevelopmentdirection
【Keywords】:
matlab,signalprocessing,Fouriertransform,
第1章引言
本章简要介绍了音频信号处理的研究意义、起源与发展以及国内外的研究现状,并依此提出了本论文研究的主要内容。
MATLAB是一种功能强大、效率高、交互性好的数值计算和可视化计算机高级语言,它将数值分析、信号处理和图形显示有机地融合为一体,形成了一个极其方便、用户界面友好的操作环境。
本文就是在MATLAB基础上来进行音频信号参数的分析与处理的.
1.1音频信号处理的研究意义
本课题旨在对音频文件的调制和滤波.音频信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过声音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式.同时,声音也是人与机器之间进行通信的重要工具,它是一种理想的人机通信方式,因而可为信息处理系统建立良好的人机交互环境,进一步推动计算机和其他智能机器的应用,提高社会的信息化程度.
语音信号是基于时间轴上的一维数字信号,在这里主要是对语音信号进行频域上的分析。
在信号分析中,频域往往包含了更多的信息。
对于频域来说,大概有8种波形可以让我们分析:
矩形方波,锯齿波,梯形波,临界阻尼指数脉冲波形,三角波,余旋波,余旋平方波,高斯波。
对于各种波形,我们都可以用一种方法来分析,就是傅立叶变换:
将时域的波形转化到频域来分析.
语音信号处理是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科.虽然从事这一领域研究的人员主要来自信号与信息处理及计算机应用等学科,但是它与语音学、语言学、声学、认知科学、生理学、心理学等许多学科也有非常密切的联系。
1.2音频信号处理的发展历程和现状
在60年代,计算机的广泛应用推动了语音识别技术的发展,出现了多种语音信号分析方法,提出了动态规划(DP)和线性预测分析(LP)技术。
其中后者较好地解决了语音信号产生模型的问题,对语音识别的发展产生了深远影响。
70年代,语音识别理论取得了突破。
LP技术得到进一步发展,动态时间归正技术(DTW)基本成熟,特别是提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论.在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。
80年代,HMM模型和人工神经元网络(ANN)成功应用于实践,并于1988年由CMU研制出了非特定人、大词汇量、连续语音识别系统—SPHINX。
它可以理解由1000个单词构成的4200个句子,被认为是语音识别历史上的一个里程碑。
HMM模型的广泛应用应归功于AT&TBell实验室Rabiner等科学家的努力,他们把原本晦涩难懂的HMM纯数学模型工程化,从而为更多研究者了解和认识。
ANN和HMM模型建立的语音识别系统,性能相当。
进入90年代,随着多媒体时代的来临,迫切要求语音识别系统从实验室走向实用。
许多著名的大公司如IBM、苹果、AT&T和NTT都对语音识别系统的实用化研究投以巨资。
语音识别技术有一个很好的评估机制,那就是识别的准确率,而这项指标在20世纪90年代中后期实验室研究中得到了不断的提高。
比较有代表性的系统有:
IBM公司推出的ViaVoice和DragonSystem公司的NaturallySpeakingNuance公司的NuanceVoicePlatform语音平台,Microsoft的WhisperSun的VoiceTone等。
语音识别也得到了更多的商用,其中SpeechWorks6是世界领先的电话自动语音识别系统解决方案提供者-SpeechWorks公司的代表产品.利用该产品,用户可以通过电话用自然语言与系统进行交互,进行旅游预约、股票交易、银行服务、订票服务、宾馆服务和寻呼服务等,无需服务人员的介入。
目前市场上出现了语音识别电话、语音识别记事本等产品,如美国VPTC公司的VoiceOrganizer和法国的Parrot等.
在我国,语音技术的研究起步较晚,70年代末才开始了语音技术的研究,但在很长一段时间内,都处于缓慢发展的阶段,直到80年代后期,随着计算机应用技术在我国的逐渐普及和数字信号处理技术的进一步发展,国内许多单位纷纷投入到这项研究工作中去,其中有中科院声学所,自动化所,清华大学,四川大学和西北工业大学等科研机构和高等院校,大多数研究者致力于语音识别的基础理论研究工作、模型及算法的研究和改进。
但由于起步晚、基础薄弱、计算机水平不发达,导致在整个80年代,我国在语音识别研究方面并没有形成自己的特色,更没有取得显著的成果和开发出大型性能优良的实验系统。
1.3本课题的研究内容
在本科题中,所要研究的内容首先是语音的录入部分和对录入的音频数据进行频谱的分析并画出其图像。
其次是设计滤波器并对加入噪声后的音频文件进行滤波并考察其使用情况以此来检验滤波器的设计是否正确。
本课题研究内容包括:
(1)对音频信号进行采集:
使用MATLAB中的wavread命令对音频文件进行采集。
并使用sound命令对原信号进行播放用于对添加噪声后的信号进行对比.
(2)图形用户界面GUI的设计:
包含设置界面及按钮并对各按钮功能能进行编程。
需要实现按键执行信号播放,加噪声和滤波的功能.
(3)利用傅里叶变换求信号的频域并作图:
使用MATLAB中的傅里叶变换命令对已经采集到的音频信号做傅里叶变换,变换完成后画出其在频域上的波形并对原时域上的波形进行对比.
(4)对采样后的信号进行加噪声处理:
使用matlab中的相关命令。
WGN,AWGN。
WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。
也可直接用randn函数产生高斯分布序列。
(5)设计数字滤波器:
设计一个数字滤波器时,根据指标先写出模拟滤波器的公式,再通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
1.4设计流程图
第2章信号采集基本内容
2.1Matlab简述
MATLAB和Mathematica、Maple并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域.MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持.可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。
MATLAB主要可实现功能:
数值分析
数值和符号计算
工程与科学绘图
控制系统的设计与仿真
数字图像处理
数字信号处理
通讯系统设计与仿真
财务与金融工程
本次试验采用的MATLAB版本为2014a版
2.2采样位数和采样频率
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数.采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数相当于力度范围增加了6dB。
采样位数越多则捕捉到的信号越精确。
对于采样率来说你可以想象它类似于一个照相机,44。
1kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次.显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确.
2.3音频信号采集依据:
采样定理
对音频信号的采集时必须依据采样定理进行。
如此方可避免在采集过程中造成的原信号丢失。
在进行模拟/数字信号的转换过程中,当采样频率fs。
max大于信号中最高频率fmax的2倍时(fs。
max〉2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特定理。
频带为F的连续信号f(t)可用一系列离散的采样值f(t1),f(t1±Δt),f(t1±2Δt),.。
.来表示,只要这些采样点的时间间隔Δt≤1/(2F),便可根据各采样值完全恢复原来的信号f(t)。
这是时域采样定理的一种表述方式。
时域采样定理的另一种表述方式是:
当时间信号函数f(t)的最高频率分量为fM时,f(t)的值可由一系列采样间隔小于或等于1/(2fM)的采样值来确定,即采样点的重复频率f≥(2fM).
2.4倒谱概念
定义:
倒谱定义为信号短时振幅谱的对数傅里叶反变换。
特点:
具有可近似地分离并能提取出频谱包络信息和细微结构信息的特点
用途:
①提取声道特征信息:
提取频谱包络特征,以此作为描述音韵的特征参数而应用于语音识别。
②提取音源信息:
提取基音特征,以此作为描述音韵特征的辅助参数而应用于语音识别.
求法:
A:
短时信号;B:
短时频谱;C:
对数频谱;D:
倒谱系数;E:
对数频谱包络;
F:
基本周期
2.5信号采集过程
使用windows系统自带的录音软件进行录音。
录音结束后将文件格式转换为适于MATLAB读取的WAV格式并保存.保存完成后打开MATLAB软件。
确定文件是否在MATLAB的索引区域内,如果不在,使用读取命令的时候必须附加音频文件的地址。
在命令行窗口中使用WAVREAD命令采集保存好的声音文件。
该命令使用方法为:
y=wavread(file)%读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs,bits]=wavread(file) %采样值放在向量y中。
fs表示采样频率。
bits表示采样位数。
y=wavread(file,N)%读取前N点的采样值放在向量y中.
y=wavread(file,[N1,N2])%读取从N1到N2点的采样值放在向量y中。
如果在实验中录入音频文件名为VOC1.则其相应的打开命令:
y=wavread(voc1)
sound(x,fs,bits);用于对声音的回放。
向量y则就代表了一个信号(也即一个复杂的%26ldquo;函数表达式%26rdquo;)也就是说可以像处理一个信号表达式一样处理这个声音信号.
2.6傅里叶变换基础
离散傅里叶变换(DFT),是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。
在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。
即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换.设x(n)是一个长度为M的有限长序列,则定义x(n)的N点离散傅里叶变换为:
按照公式进行计算称为DFT的直接计算方法。
计算离散傅里叶变换的一种快速算法,简称FFT。
快速傅里叶变换是1965年由J.W.库利和T。
W.图基提出的.采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。
由于本次分析的音频信号文件抽样点数过多,最少的点数仍约为1W点,使用原离散傅里叶变换函数会造成计算机运行的内存空间不足,故此次采用快速傅里叶变换.
MATLAB中调用快速傅里叶变换函数的命令为:
X=FFT(x);—-
返回应用快速傅立叶方法计算得到的矢量X的离散傅立叶变换(DFT),如果X为矩阵,fft返回矩阵每一列的傅立叶变换,如果X为多维数组,fft运算从第一个非独立维开始执行。
Y=fft(X)--
返回应用快速傅立叶方法计算得到的矢量X的离散傅立叶变换(DFT),如果X为矩阵,fft返回矩阵每一列的傅立叶变换,如果X为多维数组,fft运算从第一个非独立维开始执行。
Y=fft(X,n)——
返回n点的离散傅立叶变换,如果X的长度小于n,X中补0使其与n的长度相同,如果X的长度大于n,则X的多出部分将被删除;如X为矩阵,用同样方法处理矩阵列的长度。
一般而言,对于N点的x(n)序列的FFT是N点的复数序列,其点n=N/2+1对应Nyquist频率,作频谱分析时仅取序列X(k)的前一半,即前N/2点即可。
X(k)的后一半序列和前一半序列时对称的.若N点序列x(n)(n=0,1,…,N—1)是在采样频率下获得的。
它的FFT也是N点序列,即X(k)(k=0,1,2,…,N-1),则第k点所对应实际频率值为f=k*f/N.作FFT分析时,幅值大小与FFT选择点数有关,但不影响分析结果。
用法实例:
t=linspace(0,2*pi,500);
y=[sin(t)];
subplot(2,1,1);
plot(t,y);
s=fft(y);
subplot(2,1,2);
plot(t,s);
此程序内容即为对一段SIN函数进行快速傅里叶变换并作图,结果如图。
2.7matlab数字滤波器设计简述
滤波器设计是一个创建满足指定滤波要求的滤波器参数的过程。
滤波器的实现包括滤波器结构的选择和滤波器参数的计算。
只有完成了滤波器的设计和实现,才能最终完成数据的滤波。
滤波器设计的目标是实现数据序列的频率成分变更.严格的设计规格需要指定通带波纹数、阻带衰减、过渡带宽度等.更准确的指定可能需要实现最小阶数的滤波器、需要实现任意形状的滤波器形状或者需要用fir滤波器实现。
指定的要求不同,滤波器的设计也不同。
它可以理解为是一个计算程序或算法,给代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:
(1) 按照实际任务的要求,确定滤波器的性能指标。
(2) 用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。
根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。
(3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。
平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。
在这种情况下,滤波器设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成。
利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量,直观简便。
第3章音频信号处理
3.1音频的采集与作图
本次实验采用wavread命令对声音信号进行采集,在采集的过程中采样频率是由MATLAB软件自行定义的,由于录制声音采样率较低故可以不设定采样频率仅使用软件默认的采样频率进行采样。
以下展示的程序为语音信号在MATLAB中操作的表现,它实现了语音的读入打开,并利用FFT快速傅里叶变换绘出了语音信号的波形图频谱图。
编写M文件,定义名称为tryed:
clear all;
music=input(’输入文件名:
’,’s’)
[y,fs,nbits]=wavread(music);%音频信号的采集
sound(y,fs,nbits); %音频信号的播放
n=length(y); %设定长度
Y=fft(y,n); %快速傅里叶变换
figure; %控窗
subplot(2,1,1);
plot(y,’r’);
title(’波形图’,'fontweight',’blod’);
grid; %网格
subplot(2,1,2);
plot(abs(Y),’b’); %取绝对值
title('频谱图',’fontweight',’blod');
grid;
程序运行结果:
如图所示,展示的是一段语音信号的时域和频域波形
3.2对采集信号进行加噪声处理。
MATLAB中产生高斯白噪声的两个函数
MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。
WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。
在设计中使用的是直接产生高斯噪声的RANDN函数,实验采用的是MATLAB中的随机函数rand产生噪声加入到语音信号中,通过对噪声信号的加入以此来实现模仿语音信号被污染,并对添加噪声后的文件进行频谱分析。
matlab函数randn:
产生正态分布的随机数或矩阵的函数
randn
产生均值为0,方差σ^2=1,标准差σ=1的正态分布的随机数或矩阵的函数.
用法:
Y=randn(n)
返回一个n*n的随机项的矩阵.如果n不是个数量,将返回错误信息。
Y=randn(m,n)或Y=randn([mn])
返回一个m*n的随机项矩阵。
Y=randn(m,n,p,...)或Y=randn([mnp.。
。
])
产生随机数组。
Y=randn(size(A))
返回一个和A有同样维数大小的随机数组.
在本次实验过程中,我们选用Randn(m,n)函数。
对语音信号添加噪声及其频谱分析的主要程序如下:
clear all;
music=input('输入文件名:
',’s’)
[y,fs,nbits]=wavread(music);%语音信号的采集
n = length (y)
Noise=0。
3*randn(n,2); %编辑噪声
s=y+Noise;
Y=fft(y,n);
sound(s);
S=fft(s);
figure;
subplot(2,2,1);
plot(y,'r');
title('时域波形图',’fontweight',’bold');
grid;
subplot(2,2,2);
plot(abs(Y),’r');
title(’频域波形图’,'fontweight',’blod’);
subplot(2,2,3);
plot(s);
title(’加噪时域波形图',’fontweight','bold');
grid;
subplot(2,2,4);
plot(abs(S));
title(