ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:741.87KB ,
资源ID:5148121      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5148121.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(语音信号的采集与频谱分析附代码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

语音信号的采集与频谱分析附代码.docx

1、语音信号的采集与频谱分析附代码信号与系统大作业语音信号的采集与频谱分析基于 Matlab 的语音信号处理学生姓名:学号:专业班级:电子工程学院卓越班指导老师:2015 年 6 月 22 日摘要本设计用苹果手机自带的录音设备采集了原始语音,并导入了电脑转成 wav 格式,然后用 MATLAB和 Adobe audition 对其进行时域分析。接着利用傅里叶变换进行了频域分析,绘制频谱图,再录制一段加上歌曲 的伴奏的语音与原唱进行了对比分析,得出了我与歌星在频域上的差别。本设计给信号加了两种噪声并通过观察加噪后的频谱和试听回放效果比较 加噪前后的差别,最后,设计了 FIR 数字低通滤波器和带通滤波

2、器,分析滤波前后的频谱。 再次试听回放效果,得出结论。关键词 :语音、 FFT、频谱图、噪声、滤波器AbstractThis design is based on the general function of Matlab and Adobe edition to dealwith Audio signals. The original signals are collected by iPhone -in recording s builtequipment.First, I compare the file generated by myself with that of thesame

3、 song sang bya famous singer.The emphasis is generally laid on analysing the difference in frequncy domain,but time domain will be included too.After that,two noise signals are added to the original signal respectively and let them pass a filter to analyse it.In the two process mentioned before,I ma

4、ke comparison between the before and after frequency domain.Sampling Theorem is the base of my design.It is by sampling we can get discrete signals from the original one and draw the image in time domain.Also,fast fourier transform is employed(FFT)to get the signals in frequency domain.The ayalysis

5、of frequency domain is the highlight of this design.Through this design,I can deepen my comprehension of principles of audio signals and I have learnt how to deal with it.Through met with much hindrance,I improved my skills finally.Keywords: audio signal、TTT 、 noise、 filter1 绪论1.1课题的研究意义语音信号处理属于信息科学

6、的一个重要分支,它是研究用数字信号处理技 术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及 面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。学会运用 MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波 及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,这为今后 熟练使用 MATLAB进行系统的分析仿真和设计奠定基础。1.2课题的目的与要求利用 Matlab 和 Adobe audition 对语音信号进行数字信号处理和分析,要 求采集语音信号后,在软件平台进行频谱分析;并对所采集的语音信号加入干 扰噪声,对加入噪声的信号进行频谱分析,设计合适

7、的滤波器滤除噪声,再进 行频谱分析和再播放来感受噪声滤除的效果。2.理论依据采样频率、采样位数的概念,采样定理;时域信号的 FFT 分析;数字滤波 器设计原理和方法,各种不同类型滤波器的性能比较。2.1. 时域信号的 FFT分析FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏 变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它 利用“一分为二”的思想不断进行,点数越多,运算量的节约就越大,这就是 FFT的优越性。在 MATLAB的信号处理工具箱中函数 FFT 和 IFFT 用于快速傅立叶变换和逆 变换。函数 FFT用于序列快速傅立叶变换,其调用格式为 y=f

8、ft(x) ,其中, x 是序列, y 是序列的 FFT,x 可以为一向量或矩阵,若 x 为一向量, y 是 x 的 FFT且和 x相同长度;若 x 为一矩阵,则 y是对矩阵的每一列向量进行 FFT。如 果 x 长度是 2 的幂次方,函数 fft 执行高速基 2FFT 算法,否则 fft 执行一种 混合基的离散傅立叶变换算法,计算速度较慢。函数 FFT的另一种调用格式为 y=fft(x,N) ,式中, x,y 意义同前, N 为正整数。函数执行 N点的 FFT,若 x 为向量且长度小于 N,则函数将 x补零至长度 N;若向量 x 的长度大于 N,则函 数截短 x 使之长度为 N;若 x 为矩阵

9、,按相同方法对 x 进行处理。2.1.2采样定理 采样定理,又称香农采样定律、奈奎斯特采样定律,是信息论,特别是通 讯与信号处理学科中的一个重要基本结论。采样是将一个信号(即时间或空间上的连续函数)转换成一个数值序列 (即时间或空间上的离散函数),这个数值序列即是一个数字信号。采样定理 是将连续的模拟信号转变为离散的数字信号的方法。对于一个时域连续的信号 f(t) 利用开关函数 s(t) 进行采样,或者冲激函 数序列进行采样( T(t) )。两种取样都具有一定的取样间隔,同时要求 f(t) 为 频带带限信号,否则取样后将发生频谱混合重叠,破坏原信号。采样定理公式 如下:st f(t) f (n

10、Ts) (t nTs) Sa( 2s )n2其中 Ts 为采样间隔,设 f(t) 的频谱区间在 ( m, m)之间,即信号频带带 限,需满足的采样条件为: fs 2fm,其中 fs 为采样频率, 2 这样便完成了 对于连续信号的采样形成离散的数字信号方便处理。2.1.2数字滤波器数字滤波器是一个输入输出都是离散时间信号的特定功能装置。应用数字 滤波器处理模拟信号(对应模拟频率)时,首先须对输入模拟信号进行限带、 抽样和模数转换。数字滤波器输入信号的数字频率( 2*f/fs,f 为模拟信号的 频率, fs 为采样频率,注意区别于模拟频率 ), 按照奈奎斯特取样定理,要使抽 样信号的频谱不产生重叠

11、,应小于折叠频率( ws/2=) ,其频率响应具有以 2 为间隔的周期重复特性,且以折叠频率即 = 点对称。为得到模拟信号 数字滤波器处理的输出数字信号须经数模转换。数字滤波器具有高精度、高可 靠性、可程控改变特性或复用、便于集成等优点。数字滤波器有低通、高通、带通、带阻和全通等类型。它可以是时不变的 或时变的、因果的或非因果的、线性的或非线性的。应用最广的是线性、时不 变数字滤波器,以及 FIR 滤波器。从单位脉冲响应的角度,可以把数字滤波器分为: IIR 滤波器(无限长单 位冲激响应滤波器)和 FIR 滤波器(有限长单位冲激响应滤波器)3.设计思想3.1语音信号的采集 此次我选择的歌曲是赵

12、薇的情深深雨蒙蒙,用苹果手机自带的录音功 能( Voice Memos)录音,和 windows自带的录音机程序相比,优点是方便,而 且可以忽略电脑运行本身的噪声。然后将其导入到电脑,转换格式存为 wave 格 式,并对从网上下载原唱的语音用同样的方式转换格式,并保存到正确的目录, 以便以后能在 matlab 中打开。同时手机自带的录音功能还能完成简单的音频剪 辑操作,减掉多余的不需要的部分。3.2语音处理工具的选择 MatlabMatlab 是大家都熟悉的一种科学计算软件,在信号与系统中运用很广泛, 优点是可编程性强,且具有很好的可移植性和可扩展性,而且和专业信号与系 统关联更大。但缺点是数

13、据都以矩阵形式进行处理,对我来说不够直观。 Adobe auditionAdobe audition 是一款专门处理音频的软件,可提供先进的编辑、混音、 控制和效果处理功能,优点是很方便,比如采样频率可以直接选择,处理效果 很直观,缺点是和信号与系统相关性较小,可编程性差。这次设计的频谱分析主要是采用了 matlab 进行分析,但对原始语音频谱的 分析以及由采样频率不同带来的变化中我同时采用了 matlab 和 adobe audition 来分析。3.3噪声函数的选择rand 函数产生随机噪声,具体语句将在下面的列表中列出高斯白噪声 Gaussian White Noise 此噪声在随机信号

14、分析课程中已学过,此次向原始信号中加入此噪声, 加强理解。3.4滤波器的选择设计中选择的是 FIR 有限长单位冲激响应滤波器,相比于 IIR 滤波器,它 有如下的优点: FIR 滤波器,由于冲激响应有限长,可以用快速傅里叶变换,这样运算 速度可以快很多; FIR 滤波器可以做到严格的线性相位,而若要 IIR 得到严格的线性相位, 则要大大增加滤波器的阶数, FIR 滤波器主要采用非递归结构,因而从理论上以及时性从实际的有限 精度的运算中,都是稳定的。有限精度运算误差也较小, IIR 滤波器必须采用 递归的结构,极点必须在 Z 平面单位圆内,才能稳定,这种结构,运算中的四 舍五入处理,有时会引起

15、寄生振荡。但是 IIR 也有相同技术指标下阶数较少,存储单元少,运算次数少的有点, 此处不再加以赘述。两种滤波器:低通巴特沃斯滤波器巴特沃斯滤波器的特点为的通频带频率响应最为平滑,阻带缓慢衰减。用窗函数法设计低通滤波器,具体指标为fp=3000Hz fc=4000Hz Ap=1dB As=100dB高通滤波器具体指标为: fp=35ooHz fc=4000Hz Ap=1dB As=10dB3.5Matlab 函数的选择( 1) y,fs,bits=wavread( filename )wavread函数可读入语音信号 y 是采样获得的离散时域信号, fs 是返回的采样 频率, bits 是采样

16、位数, filename 是音频信号的文件名。( 2) wavwrite(y,fs,bits, filename )wavwrite 函数,改变采样频率,可以将 22.05KHz 或者 11.025KHz的信号写回 并观察这样的采样频率会产生什么样的结果。其中 y 是已经获得的时域离散信 号, fs 为写回的频率, bits 是写回的位数, filename 为要写回的文件名。( 3) sound(y,fs,bits)sound 函数,播放存在的离散音频信号其中的三个参数同 wavread 中的相同( 4) rnt=rand(a,b)rand 函数,为产生随机噪声,从而在信号中加入噪声。改随机

17、噪声是在( 0,1 ) 内的随机数,均值为 0.5 其中 a、 b 为产生随机数矩阵的行和列。5)fy=fft(y)y 为离散时域信号 ,fft 函数是所有程序分析的核心。 fft 函数提供了以快速傅 立叶变换算法的离散傅里叶变换的计算,等于对一个离散信号进行 DFT离散傅立叶变换。( 6) y1=awgn(y,q, measured)awgn函数,为向一个现有的离散信号加入高斯白噪声的函数, y 为被添加噪声 的信号, q 为信噪比,一般要大于 1,measured是一种控制名称。( 7) n,fo,ao,w=firpmord(f,a,dev,fs)firpmord 函数,为设计滤波器阶数的

18、函数, f 是滤波器的参数,主要为带边沿 的参数,低通滤波器则是通带与阻带截止频率。 a 是通带与止带的幅频响应的 幅度,也是一个向量。 dev 是通带与止带的震荡幅度大小比例(介于 0 到 1), 也是一个向量, fs 则是采样频率。左边的 4个参数, n是滤波器阶数, f0 是频 率向量, a0 是幅频特性向量, w是权重。这四个参数是用来下一步制作模拟滤 波器的。( 8) h=firpm(n,fo,ao,w)firpm 函数,利用 firpmord 所产生的参数制作模拟滤波器,后面四个参数是 firpmord 所计算出的。( 9) ht,w=freqz(h)freqz 函数,对一个设计好

19、的滤波器求冲激响应, h 为前一步 firmp 设计好的滤波器, ht 为频率响应,用 abs 取绝对值得到幅频特性,或者用 log 转化成 dB作图。 w 是频率范围(归一化的)( 10) yf=fftfilt(h,y)fftfilt 函数,用设计好的滤波器滤波(数字信号) h 为设计好的滤波器, y 为 待滤的信号。11)h=fir1(n,w,window) fir1 函数,用于使用做好的窗函数进行带通滤波器设计,做好窗函数如 hanning 窗( MATLAB也有这个函数),根据相应其他参数做出带通滤波器。window 是已经做好的窗, n 是滤波器阶数, w 是通带范围(一定要在 0

20、到 1 之间),为一个向量(因为是带通滤波器)。( 13) a=mean(y)mean函数,用于求一个离散序列的均值,在实验中求采样所得的音频信号的均值 y 是一个向量(数组), a 是该数组的均值。( 14) a=var(y)var 函数,用于求离散序列的方差,在实验中用于求采样所得音频信号的方差,y 为一个数组, a 为该数组的方差 。4.课程设计的具体实现及仿真结果分析4.1语音信号的采集、录入、与打开把我的原始语音信号保存为 qingshenshen.wav 保存在相应路径,此语音信 号的长度小于 30s。通过 matlab 的函数 wavread()可读入一个 .wav 格式的音频文

21、件,例如下 面的语句y,fs,bits=wavread( qingshenshen.wav );读入 wav 文件并放入向量 y 中,对于双声道的音频文件, y 有两行,此处 我们仅对一个声道的音频进行分析。 fs 为采样频率, .wav 格式默认的采样频率 为 44.1KHz,下文将比较不同采样频率对语音信号的影响。回放声音:用 sound()函数,例如:sounf(x,fs,bits);此处我将我唱的歌和伴奏合起来保存为 qingshenshen.wav (具体程序见附录一)运行结果如下原始语音信号时域频域图此时可在 workspace中看到 fs 的值 value 为44100通过调整放

22、大第三章小图,可以看出我声音的频率范围主要集中在 200-450hz 之间属于女低音用 Adobe audition 画出的频域图为,分析可得频域范围与 Matlab 分析所得很 接近,只是 Adobe audition 的横轴显示的标准不同。然后我将原唱赵薇的(带伴奏)进行同样的分析,具体程序见附录一)原唱语音信号频域幅值图通过对比可以发现,赵薇的频域更宽,从几十到 1000hz 都有较大的分布, 算是个女高音吧,但大部分集中在几十到 600hz 这个区间段,看来我在高音部 分与原唱有较大差距,怪不得唱她的歌的时候总有种唱不上去的感觉。特征值的分析 :通过 matlab 函数 mean()和

23、 var ()的计算,可以得出原唱的均值与方 差为:m1= 1.0e-003 *0.1372v1=0.8996而我的语音的均值与方差为:m2=1.0e-005*0.5838v2=0.0046比对可知,我唱的歌在均值和方差上和原唱差距都很差,说明我对歌曲的 还原度不高,还需要加强唱歌技巧的联系。特别要注意的是,在这次作图过程中,有两个横坐标的量要加以特别的控 制,一个是时域分析的横坐标时间,所以加入了对横坐标的控制语句 t=(0:n- 1)/fs; ,使它的单位为时间 s;二是频域分析的横坐标控制语句 yol=(0:length(X)-1)*fs/length(X); 如果不加这句很可能出来的不

24、是应有的 频率范围。上面的分析都是默认频率 44.1KHz 下进行的,可以通过 wavwrite 函数改变采样 频率,例如:wavwrite(x,220500, qingshenshen.wav )以上语句便使得采样频率变成了 22.05khz然后用 sound函数试听,发现音乐失真很大,速度变得很快,原本 30s 的 音频几秒便放完了,同时音调也变得很高,这是我最直观的感受。同理,如果 用 500hz 的频率去采样,声音就变得很低沉,像风的呼啸与野兽的低喘,可在 workspace 中观察到 fs 的值变了4.2噪声的加入 此处,我对我的原始语音分别加入了两个噪声,一个是随机序列噪声,一个是

25、 高斯白噪声。注意,以下的分析全都是基于 44.1khz 的采样频率下进行的。 随机序列噪声程序中用 rand 函数产生与采样获得的信号 y 维度相同的噪声信号,加入原信号 中,同样进行时域与频域的分析,画出时域图像、幅频特性,相频特性用处不 大在此忽略不画。这里 rand 的维度通过 y 的维度得到,可用语句 whos 查看, (具体程序见附录二)运行结果如下:与上文未加噪声的波形对比,可看出时域波形幅值变化较大,波形更加参差不 齐,二频域波形变化不大。用 sound 回放,可明显感觉到有杂音,就像老式的 电视机放出的那种刺啦刺啦的声音。然后再计算加噪后的均值与方差:mean=1.0e-00

26、4*0.1374var=0.048与加噪声前相比,均值变增大了 135%,而方差只变化了 4.3%,主要因为加入了 大小同信号大小幅度差不多的噪声,并且全都在大于 0 的区域。此处分析时我仅仅分析了我翻唱的音频信号,对翻唱的信号加噪声分析,对于 原唱的分析类似,只要改变文件名即可,因此不再赘述。同样在画图时有坐标控制,此后的程序也有,不再加以称述。高斯白噪声用函数 awgn()产生高斯白噪声,这里取信噪比为 10dB,防止噪声太大而淹没 原始信号。(具体程序如下见附录二)运行结果如下:从图片上可以看出,通过对比可以明显看出加完噪声后时域幅值变大,频域变 化不大。加入高斯白噪声后试听的效果同加入

27、随机噪声的结果都有刺啦刺啦的声音但相 对而言高斯白噪声的噪声更大。同样对于歌星原唱的音频信号不再重复操作。 均值与方差分别为 :mean2=1.0e-001*1.2676 var2=0.0460与未加噪声前相比,均值变化很大,而方差仍基本没有变化4.3滤波器的设计及滤波结果低通滤波器具体的指标为:通带截止频率为 3000Hz ,阻带截止频为 4000Hz,通带最大衰 减为 1dB,阻带最大衰减为 100dB. 通带阻带的幅频相应幅度一个是 1 一个是 0, 震荡比例在通带是 0.05 ,阻带为 0.01。并用 frez 计算频率响应。(具体程序见附录三)设计出滤波器后,画出幅频响应和相频响应图

28、为:通过滤波器前后的噪声的时域和频域图为:对比可看出,低频部分,尤其是频率小于 3000hz 的部分的频谱基本没有发生变 化,而在蓝色的途中看以明显看出绿色图中的高频部分被滤除了。试听感觉,声音相比未滤波之前的更加沉闷一些,因为高频成分被滤去的缘故。高通滤波器此处采用凯塞窗函数构成高通滤波器,设计指标为:阻带截止频率为 3500Hz,通带截止频率为 4000Hz,阻带衰减为 1dB,通带衰减为 100dB。(具体程序见附录三)滤波器的频率响应图为:加噪信号通过滤波器前后频谱的变化如下图:从视觉上可以很明显地看出,通过滤波器后,低频信号都被滤除了,只剩蓝色 的高频分量,同时滤波前后的波形变化也很

29、大,滤波后的波形更为规整。试听 后觉得声音很尖,是因为低频部分的分量被滤除的原因。5.设计中遇到的问题及总结5.1 问题遇到的问题首先与矩阵的维度有关, Matlab 是以矩阵形式存储和处理数据 的,而我经常忽略矩阵的维度而直接对两个矩阵进行加减运算,无疑会出现矩 阵维度不匹配的问题,一开始我并不知道数据的维度究竟是多少,也不知道如 何解决,但后来我学会了用 whos 语句查看变量的维度,之后又学会了怎么取出 矩阵的某一行某一列,问题便得到了解决。然后遇到的问题是如何改变采样频率,一开始我会直接在程序开头定义采 样频率为 22050Hz或者 5500Hz,但之后发现这样做出来的试听效果是一样的

30、, 后来查阅了才知道 wave 格式默认的采样频率为 44.1kHz ,要用 wavwrite 函数 改变信号的采样频率,问题迎刃而解。接着还遇到了滤波器怎么设计的问题,这方面老师上课虽然有提到过,但 是并没有深入地讲,但我记得老师说过滤波器是一个很专业的东西,有人为此 设计了一辈子。然后我通过查阅资料了解了 IIR 滤波器和 FIR 滤波器,并知道 了通过 Matlab 如何去模拟滤波器。虽然如此我觉得我设计的滤波器还只是最最 简单的,从滤波效果来看,还有许多问题,还需加强对滤波器的学习。 5.2 设 计的5.2 感悟与总结通过这次设计,又加深了我对傅里叶变换以及采样定理的理解,深感信号 与

31、系统真是博大精深,我们平时所学都只是冰山一角,只是皮毛,更多的内容 在等着我们去探索。一开始想直接用 Adobe audition 进行滤波,但是说来惭愧,连教程都看不 懂,想要将歌曲的伴奏滤都做的很差。想想也是,哪有那么轻易的事,怎么可 能用简答的几步就完成人家苦苦研究的课题。后来用 Matlab 编程,感觉自己的编程能力还是很欠缺,遇到了很多问题, 一些细节一些小的指令总是被我轻易的忽略。但我同时也再次感受到了 Matlab 的神奇,它有那么多功能,和信号与系统一样,也许我原来知道的只是其中很 小的一部分。总的来说,在以后的学习中,要一手抓理论知识,即掌握老师上课讲的内 容,同时也要加强编程能力的锻炼。对于这次试验所做的内容,其实只是对语音信号的一个粗略的分析,通过 结果也可以看出,滤波器设计得并不理想。由于本人能力和时间有限,所以未 进行更深层次的研究,以后一定会加强。参考资料 :【 1】郭宝龙,闫允一,朱娟娟,吴宪祥工程信号与系统 M北京:高等 教育出版社【 2】王祯飞基于 MATLAB 的语音信号分析和处理 C福建师范大学协和 学院【 3】丁玉美,高西全,数字信号处理 . 3 版M. 西安:西安电子科技大学 出版社, 2008

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1