基于MATLAB的语音信号时域特征分析
基于MATLAB的语音信号分析与处理的实验报告
基于MA TLAB的语音信号分析与处理的实验报告数字信号课程设计,屌丝们有福了一.实验目的数字信号课程设计,屌丝们有福了综合计运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,培养发现问题、分析问题和解决问题的能力。
并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
此外,还系统的学习和实现对语音信号处理的整体过程,从语音信号的采集到分析、处理、频谱分析、显示和储存。
二.实验的基本要求数字信号课程设计,屌丝们有福了1.进一步学习和巩固MATLAB的使用,掌握MATLAB的程序设计方法。
2.掌握在windows环境下语音信号采集的方法。
3.掌握数字信号处理的基本概念、基本理论、原理和基本方法。
4.掌握MATLAB设计FIR和IIR数字滤波器的方法。
5.学会用MATLAB对信号进行分析和处理。
三.实验内容录制一段自己的语音信号,(语音信号声音可以理解成由振幅和相位随时间缓慢变化的正弦波构成。
人的听觉对声音的感觉特征主要包含在振幅信息中,相位信息一般不起作用。
在研究声音的性质时,往往把时域信息(波形图)变换得到它的频域信息(频谱),通过研究频谱和与频谱相关联的特征获得声音的特性。
)并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或者双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号发生的变化;回放语音信号。
数字信号课程设计,屌丝们有福了四.实验的实现(1).语音信号的采集采用windows下的录音机或者手机、其他的软件,录制一段自己的话音,时间控制在一分钟左右;然后在MATLAB软件平台下,利用函数wavread对自己的话音进行采样,记住采样的频率和采样的点数。
基于MATLAB的语音信号时域特性分析_语音信号处理实验报告
南京信息工程大学 实验(实习)报告实验(实习)名称 基于MATLAB 的语音信号时域特性分析 实验(实习)日期 2013.4.18 得分 ___指导教师院电子与信息工程专业电子信息工程年级 班次 姓名 学号一、实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。
语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。
语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。
本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。
二、实验原理及实验结果1.窗口的选择通过对发声机理的认识,语音信号可以认为是短时平稳的。
在5~50ms 的范围内,语音频谱特性和一些物理特性参数基本保持不变。
我们将每个短时的语音称为一个分析帧。
一般帧长取10~30ms 。
我们采用一个长度有限的窗函数来截取语音信号形成分析帧。
通常会采用矩形窗和汉明窗。
图1.1给出了这两种窗函数在帧长N=50时的时域波形。
0.20.40.60.811.21.41.61.82矩形窗samplew (n )0.10.20.30.40.50.60.70.80.91hanming 窗samplew (n )图1.1 矩形窗和Hamming 窗的时域波形矩形窗的定义:一个N 点的矩形窗函数定义为如下{1,00,()n Nw n ≤<=其他hamming 窗的定义:一个N 点的hamming 窗函数定义为如下0.540.46cos(2),010,()n n NN w n π-≤<-⎧⎨⎩其他=这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发现(如图1.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB ),会导致泄漏现象;汉明窗的主瓣宽8*pi/N ,旁瓣峰值低(-42.7dB ),可以有效的克服泄漏现象,具有更平滑的低通特性。
语音信号处理及matlab仿真实验总结
语音信号处理及matlab仿真实验总结
语音信号处理是利用数字信号处理技术对语音信号进行分析、处
理和改进的过程。
语音信号是不规则的波形,其包含了很多信息,如
语音的音高、音调、音色、语速、语气等,因此语音信号处理是一项
非常重要的技术。
语音信号处理的一般流程包括语音信号采集、预处理、特征提取、模型建立和应用,其中预处理包括信号增强、降噪、去混响等,特征
提取包括时域特征、频域特征和时频域特征,模型建立包括声学模型
和语言模型等。
为了更加深入地掌握语音信号处理技术,我们进行了一些matlab
仿真实验。
我们首先学习了语音信号的采样和量化过程,并使用
matlab软件对语音信号进行了仿真采样和量化,了解了采样率和分辨
率等概念,还了解了量化噪声的影响。
其次,我们学习了语音信号的基本特征提取技术,并用matlab仿
真实现了时域特征、频域特征和时频域特征的提取,如时域的短时能
量和短时过零率、频域的傅里叶变换和倒谱系数、时频域的小波变换等。
最后,我们学习了基于模型的语音信号处理技术,如基于隐马尔
可夫模型、高斯混合模型、人工神经网络等模型的语音识别、语音合
成等应用,并用matlab进行了相关的仿真实验。
总之,语音信号处理是一项非常重要的技术,它可以在语音识别、语音合成、语音压缩、语音增强等领域得到广泛应用。
通过学习语音
信号处理及matlab仿真实验,我们了解到了它的基本理论和应用方法,并得到了一些实践经验,这对我们今后的学习和工作将具有很大的指
导意义。
基于MATLAB的语音信号时域特征分析(
基于MATLAB 的语音信号时域特征分析研究背景及意义:语音信号是一种非平稳的时变信号,它携带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。
语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。
语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率, 短视自相关函数。
短时自相关函数自相关函数用于衡量信号自身时间波形的相似性。
清音和浊音的发声机理不同,因而在波形上也存在着较大的差异。
浊音的时间波形呈现出一定的周期性,波形之间相似性较好;清音的时间波形呈现出随机噪声的特性,样点间的相似性较差。
因此,我们用短时自相关函数来测定语音的相似特性。
短时自相关函数定义为:()()()()()n m R k x m w n m x m k w n m k ∞=-∞=-+--∑令'm n m =+´,并且'()()w m w m -=,可以得到:1''''()[()()][()()][()()][()()]N k n m m R k x n m w m x n m k w m k x n m w m x n m k w m k ∞--=-∞==++++=++++∑∑ 图1给出了清音的短时自相关函数波形,图7给出了不同矩形窗长条件下(窗长分别为N=70,N=140,N=210,N=280)浊音的短时自相关函数波形。
由图1.1、图1.2短时自相关函数波形分析可知:清音接近于随机噪声,清音的短时自相关函数不具有周期性,也没有明显突起的峰值,且随着延时k 的增大迅速减小;浊音是周期信号,浊音的短时自相关函数呈现明显的周期性,自相关函数的周期就是浊音信号的周期,根据这个性质可以判断一个语音信号是清音还是浊音,还可以判断浊音的基音周期。
基于MATLAB分析语音信号频域特征
由于语音信号是短时平稳的随机信号 , 某一语音 信号帧的短时傅立叶变换的定义为 :
∞
( ) ∑ ( ( — e = m) n m)
(. ) 2 1
以分辨 由于激励所形成的细微结构 , 称为宽带语谱图; 而窄带语谱 图正好 与之相反。 宽带语谱图可以获得较高 的时间分辨率 , 反映频
2 1 年 8月 01
湖北第二师范学院学报
J un lo b iUmv mi o u a o o r a fHu e e  ̄ fEd c t n i
Al 2 1 唱. 0 1
第 2 卷第 8 8 期
V0. 8 No 8 12 .
基 于 MA L B分 析 语 音信 号 频 域 特 征 TA
谱、 倒谱 , 画出语谱 图, 并分析仿 真结果 , 在此基础上 , 借助频域分析方法所求得的参数分析语音信号的基音
周期或共振峰。 2 语音分 析基本 方法
2 1 短 时傅 立 叶变换 .
音信号 的动态频率特性 , 在语音 分析 中具有重要的实 用价值。被成为可视语言。 语谱 图的时间分辨率和频率分辨率是由窗 函数的 特性决定的。时间分辨率高 , 以看 出时间波形的每 可 个周期及共振峰随时间的变化 , 但频率分辨率低, 不足
于是 可 以得 到
∞
.
带两与语音特性相关 的信息 。语谱图上 因其不 同的灰 度, 形成不 同的纹路 , 称之为“ 声纹” 。声纹因人而异 , 因此可 以在司法 、 安全等场合得到应用 。
基于MATLAB的语音信号分析和处理
基于MATLAB的语音信号分析和处理摘要语音信号的处理是一门非常重要的学科,如今普遍应用在电话通信、助听器等方面。
本次设计主要是为了在Matlab软件的帮助下,处理一段被“污染”的声音信号。
该过程会涉及到采样定理,快速傅里叶变换等理论和算法在设计过程中的实际应用。
在本次设计中,我们关注的是在驱除噪声污染时所需要的滤波器的选择,充分比较各种滤波器的优缺点后,再利用滤波器来滤除杂音。
通过滤波前后的声音信号的频谱图的对比,来了解滤波器的特性和作用,并得到本次设计的结果。
关键词语音信号;Matlab;傅里叶变换;滤波器。
ANALYSIS AND PROSESSING OF THE SPEECH SIGNAL BASED MATLABABSTRACTThe voice signal processing is a very important discipline with a wide use range, for example telephone communications, hearing aids and so on.The purpose of my paper is to process a polluted sound signal by using the Matlab software.This process may involve the sampling theorem, the fast Fourier transform theory and practical application of the used algorithm.In this paper, we focus on selecting the appropriate filter, and fully comparing the advantages and disadvantages of the various filters, and then using the appropriate filter to filter out the noise polluting the voice signal. By comparing the frequency spectrum of the sound signals, we can understand the work nature of the filter, and obtain our results.Keyword V oice signal;Matlab;Fourier transform;Filter目录摘要 (I)ABSTRACT (I)目录 (II)1.绪论 (1)1.1 国内外研究状况 (1)1.2 课题的背景及意义 (1)2.语音信号处理的基本理论知识 (2)2.1语音信号采样频率和采样位数的选择 (2)2.2语音信号的合成 (2)2.3时域信号的FFT分析 (3)2.4数字滤波器 (3)2.4.1 IIR数字滤波器 (3)2.4.2 FIR数字滤波器 (4)2.4.3 FIR数字滤波器和IIR数字滤波器的比较 (5)2.5倒谱 (6)3.语音处理信号的理论方案论证 (6)3.1语音信号的采集 (6)3.2语音信号的处理 (6)3.3系统框图 (7)4.语音信号处理的实例分析 (8)4.1语音信号的录入 (8)4.2语音信号的提取 (8)4.3语音信号的时域和频谱图 (8)4.4语音信号的“污染” (10)4.5 IIR滤波器的设计及滤波 (11)4.6 设计FIR滤器波并滤波 (13)4.7 回放语言信号 (15)总结 (15)参考文献 (16)附录 (17)致谢 (21)1.绪论本次设计是为了综合运用数字信号处理的理论知识对语音信号进行时频分析和滤波器设计,根据理论知识,设计实验步骤,再利用计算机上的Matlab软件进行编程实现,得到需要的结果。
基于Matlab的语音识别系统的设计本科毕业设计
摘要语音识别主要是让机器听懂人说的话,即在各种情况下,准确地识别出语音的内容,从而根据其信息执行人的各种意图。
语音识别技术既是国际竞争的一项重要技术,也是每一个国家经济发展不可缺少的重要技术支撑。
本文基于语音信号产生的数学模型,从时域、频域出发对语音信号进行分析,论述了语音识别的基本理论。
在此基础上讨论了语音识别的五种算法:动态时间伸缩算法(Dynamic Time Warping,DTW)、基于规则的人工智能方法、人工神经网络(Artificial Neural Network,ANN)方法、隐马尔可夫(Hidden Markov Model,HMM)方法、HMM和ANN的混合模型。
重点是从理论上研究隐马尔可夫(HMM)模型算法,对经典的HMM模型算法进行改进。
语音识别算法有多种实现方案,本文采取的方法是利用Matlab强大的数学运算能力,实现孤立语音信号的识别。
Matlab 是一款功能强大的数学软件,它附带大量的信号处理工具箱为信号分析研究,特别是文中主要探讨的声波分析研究带来极大便利。
本文应用隐马尔科夫模型(HMM) 为识别算法,采用MFCC(MEL频率倒谱系数)为主要语音特征参数,建立了一个汉语数字语音识别系统,其中包括语音信号的预处理、特征参数的提取、识别模板的训练、识别匹配算法;同时,提出利用Matlab图形用户界面开发环境设计语音识别系统界面,设计简单,使用方便,系统界面友好。
经过统计,识别效果明显达到了预期目标。
关键词:语音识别算法;HMM模型;Matlab;GUIABSTRACTSpeech Recognition is designed to allow machines to understand what people say,and accurately identify the contents of voice to execute the intent of people.Speech recognition technology is not only an important internationally competed technology,but also an indispensable foundational technology for the national economic development.Based on the mathematical model from the speech signal,this paper analyze audio signal from the time domain,frequency domain proceeding,and discussed the basic theory of speech recognition technology.Five algorithm are discussed:Dynamic Time Warping(DTW)、Rule-based Artificial Intelligence,Artificial Neural Network(ANN),Hidden Markov Model(HMM),HMM combined with ANN.The focus is put in the theoretical studies of Hidden Markov(HMM) model algorithm,and the classical HMM algorithm is improved.Speech recognition algorithm is realized in various programs,this article taking the method is to use Matlab powerful mathematical operation ability to realize the recognition of speech signal isolation. Matlab is a powerful mathematic software with a mass of toolboxes dealing with signal processing. It gives a terrific shortcut to the research of signal processing,especially the wave analysis. We can characterize the sound with key parameters such as intensity, frequency etc. In this paper, hidden Markov model (HMM) recognition algorithm using MFCC (MELfrequency cepstral coefficients) as the main voice characteristic parameters, the establishment of a Chinese digital speech recognition system, including the preprocessing of the speech signal,the extraction of characteristic parameters the training of the recognition template,identifying matching algorithm;the same time,the use of Matlab graphical user interface development environment designed speech recognition system interface,is designed to be simple,easy to use,friendly interface. Besides,to have a simple exploration of the voice recognition is another target.After statistics,recognition result obviously is made out as the expected goal.Key words:Speech recognition algorithm;HMM model;Matlab;GUI目录一、前言 (1)1.1语音识别的发展历史 (1)1.2语音识别研究现状 (1)1.3语音识别系统的分类 (2)1.4语音识别系统的基本构成 (3)1.5语音识别技术难点 (3)1.6语音识别发展前景 (4)二、语音信号分析 (4)2.1语音学知识 (4)2.1.1音素和音节 (5)2.1.2汉语的声调 (5)2.1.3语音信号产生模型 (6)2.2语音信号数字化和预处理 (7)2.2.1数字化 (7)2.2.2预加重处理 (7)2.2.3防混叠滤波 (8)2.2.4加窗处理 (8)2.3语音信号的时域分析 (9)2.3.1短时能量分析 (9)2.3.2短时平均过零率 (11)2.3.3短时自相关函数和短时平均幅度差函数 (12)2.3.4语音端点检测 (13)2.4语音信号的频域分析 (14)2.4.1滤波器组法 (14)2.4.2傅立叶频谱分析 (14)2.5特征参数提取 (15)2.5.1 LPCC倒谱系数 (15)2.5.2 Mel频率倒谱系数 (16)三、语音识别主要算法 (17)3.1动态时间伸缩算法 (17)3.2基于规则的人工智能方法 (18)3.3人工神经网络方法 (19)3.4隐马尔可夫方法 (20)3.5 HMM和ANN的混合模型 (21)四、隐含马尔可夫模型算法 (23)4.1 HMM的基本理论和数学描述 (23)4.2 HMM的三个基本问题及解决算法 (24)4.3 HMM算法的改进 (31)4.4 HMM的结构和类型 (33)4.5 HMM算法实现的问题 (34)五、基于Matlab环境下的语音识别算法实现 (35)5.1识别系统平台介绍 (35)5.2在Matlab中HMM算法的实现 (36)5.2.1端点检测 (36)5.2.2特征参数提取 (36)5.2.3训练和识别 (37)5.3实验结论分析 (38)六、结束语 (39)6.1回顾 (39)6.2展望 (39)七、致谢 (40)参考文献 (40)一、前言1.1语音识别的发展历史作为智能计算机研究的主导方向和人机语音通信的关键技术,语音识别技术一直受到各国科学界的广泛关注。
基于MATLAB语音信号检测分析及处理
第一章绪论Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。
1.1 Matlab简介MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。
早期的MATLAB 是用FORTRAN语言编写的,尽管功能十分简单,但作为免费软件,还是吸引了大批使用者。
经过几年的校际流传,在John Little。
Cleve Moler和Steve Banger 合作,于1984年成立MathWorks公司,并正式推出MATLAB第一版版。
从这时起,MATLAB的核心采用C语言编写,功能越来越强大,除原有的数值计算功能外,还新增了图形处理功能。
MathWorks公司于1992年推出了具有划时代意义的4.0版;1994年推出了4.2版扩充了4.0版的功能,尤其在图形界面设计方面提供了新方法;1997年春5.0版问世,5.0版支持了更多的数据结构,使其成为一种更方便、更完善的编程语言;1999年初推出的MATLAB5.3版在很多方面又进一步改进了MATLAB语言的功能,随之推出的全新版本的最优化工具箱和Simulink3.0达到了很高水平;2000年10月,MATLAB6.0版问世,在操作页面上有了很大改观,为用户的使用提供了很大方便,在计算机性能方面,速度变的更快,性能也更好,在图形界面设计上更趋合理,与C语言接口及转换的兼容性更强,与之配套的Simulink4.0版的新功能也特别引人注目;2001年6月推出的MATLAB6.1版及Simulink4.1版,功能已经十分强大;2002年6月推出的MATLAB6.5版及Simulink5.0版,在计算方法、图形功能、用户界面设计、编程手段和工具等方面都有了重大改进;2004年,MathWorks公司推出了最新的MA TLAB7.0版,其中集成了最新的MATLAB7编译器、Simumlink6.0仿真软件以及很多工具箱。
基于MATLAB对语音信号进行分析和处理
基于MATLAB对语音信号进行分析和处理一、设计目的1.学会MATLAB的使用,掌握MA TLAB的程序设计方法;2.掌握在Windows环境下语音信号采集的方法;3.掌握数字信号处理的基本概念、基本理论和基本方法;4.掌握MATLAB设计FIR和IIR数字滤波器的方法;5.学会用MA TLAB对信号进行分析和处理。
二、设计过程1、语音信号采集与分析运用windows下的录音机,录制一段自己的话音,时间为两秒。
然后在MATLAB 软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形。
人为设计一个固定频率5500Hz的噪声干扰信号。
噪声信号通常为随机序列,在本设计中用正弦序列代替,干扰信号构建命令函数为d=[Au*sin(2*pi*5500*t)]',给出的干扰信号为一个正弦信号,针对上面的语音信号 ,采集了其中一段。
再对噪音信号进行频谱变换得到其频谱图。
2、滤波器设计和运用滤波器进行滤波1 )窗函数和等波纹逼近法设计FIR滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用fir1函数设计线性相位FIR数字滤波器,再用freqz函数画出其频谱图形,最后运用fftfilt函数对信号进行滤波。
而等波纹逼近法中则运用remez和remezord直接设计FIR滤波器,然后运用fftfilt函数对信号进行滤波。
2 )双线性变换法社设计IIR数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标:Ωph=2/T*tan(wp/2),然后用butter、cheby1设计各种模拟滤波器,再用bilinear函数进行模拟滤波器和数字滤波器之间的转换,最后用filter函数对语音信号进行滤波,并运用函数sound播放滤波后语音。
三、结果及分析1、用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱时域波形和频谱:图1 原始语音信号图2 语音信号频率响应图图3 原始语音信号FFT与信号频谱2、给原始的语音信号加上一个高频余弦噪声,频率为5500hz。
基于MATLAB语音信号分析与处理ppt
9
Company Logo
FIR滤波器的窗函数设计
3.基于哈明窗高通滤波器设计
10
Company Logo
FIR滤波器的窗函数设计
4.基于矩形窗带阻滤波器设计
11
Company Logo
6.语音信号的效果显示:
通过用户图形界面的输出功能,将处理后的信号的语音进 行播放,试听处理后的效果。
12
Company Logo
Thank you
Company Logo
6
Company Logo
5.语音信号的滤波:设计FIR好玩IIR滤波器,滤除语音信号中加噪的噪 音部分,可采用低通滤波、高通滤波、带通滤波、带阻滤波,并比较各 种滤波后的效果。信号的滤波采用了四种滤波方式,来观察各种滤波性 Text 1 sub text 能的优缺点。如下图所示。信号滤波低通滤波器带通滤波器带阻滤波器 高通滤波器 Text 2 信号滤波
信号的调 整
幅度的调 整
频率的调 整
4
Company Logo
5
(1)语音信号的时域FFT分析 FFT即为快速傅氏变换,是离散傅氏变换的快速算法 ,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离 散傅立叶变换的算法进行改进获得的。在 MATLAB的信号 Diagram 2 处理工具箱中数FFT和IFFT用于快速傅立叶变换和逆变换 。函数FFT用于序列快速傅立叶变换,其调用格式为 y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量 或矩阵,若x为一向量,y是x的FFT且和x相同长度若x为一 矩阵,则y是对矩阵的每一列向量进行FFT。如果x长度是2 的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一 Diagram 3 Diagram 4 种混合基的离散立叶变换算法,计算速度较慢。函数 FFT 的另一种调用格式为y=fft(x,N)x,y意义同前,N正整数。 函数执行N点的FFT,若x为向量且长度小于N,则函数将x 补零至长度N;若量x的长度大于N,则函数截短x使之长度 为N;若x 为矩阵,按相同方法对x进行处理。
语音信号处理实验报告.doc
语音信号处理实验班级:学号:姓名:实验一基于MATLAB的语音信号时域特征分析(2 学时)1)短时能量( 1)加矩形窗a=wavread('mike.wav');a=a(:,1);subplot(6,1,1),plot(a);N=32;for i=2:6h=linspace(1,1,2.^(i-2)*N);%形成一个矩形窗,长度为 2.^(i-2)*NEn=conv(h,a.*a);% 求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2) ,legend('N=32' );elseif(i==3), legend('N=64' );elseif(i==4) ,legend('N=128' );elseif(i==5) ,legend('N=256' );elseif(i==6) ,legend('N=512' );endend1-10.5 1 1.5 2 2.54 x 102N=32 0 0.5 1 1.5 2 2.55 x 10N=64 0 0.5 1 1.5 2 2.510 x 1050.5 1 1.5 2 2.5 N=128 020 x 10100.5 1 1.5 2 2.5 N=256 040 x 1020N=5120 0.5 1 1.5 2 2.5x 10( 2)加汉明窗a=wavread('mike.wav');a=a(:,1);subplot(6,1,1),plot(a);N=32; 3 43 43 43 43 43 4for i=2:6h=hanning(2.^(i-2)*N);% 形成一个汉明窗,长度为 2.^(i-2)*NEn=conv(h,a.*a);% 求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2), legend('N=32' );elseif(i==3), legend('N=64' );elseif(i==4) ,legend('N=128' );elseif(i==5) ,legend('N=256' );elseif(i==6) ,legend('N=512' );endend1-10.5 1 1.5 2 2.52 x 101N=32 0 0.5 1 1.5 2 2.54 x 102N=64 0 0.5 1 1.5 2 2.54 x 102N=128 0 0.5 1 1.5 2 2.510 x 105N=256 0 0.5 1 1.5 2 2.520 x 1010N=5120 0.5 1 1.5 2 2.5x 102)短时平均过零率a=wavread('mike.wav');a=a(:,1);n=length(a);N=320;subplot(3,1,1),plot(a);h=linspace(1,1,N);En=conv(h,a.*a); %求卷积得其短时能量函数Ensubplot(3,1,2),plot(En);for i=1:n-1if a(i)>=0 3 43 43 43 43 43 4elseb(i) = -1;endif a(i+1)>=0b(i+1)=1;elseb(i+1)= -1;endw(i)=abs(b(i+1)-b(i)); %求出每相邻两点符号的差值的绝对值endk=1;j=0;while (k+N-1)<nZm(k)=0;for i=0:N-1;Zm(k)=Zm(k)+w(k+i);endj=j+1;k=k+N/2; % 每次移动半个窗endfor w=1:jQ(w)=Zm(160*(w-1)+1)/(2*N); %短时平均过零率endsubplot(3,1,3),plot(Q),grid;1-100.51 1.52 2.5 34x 10201000.51 1.52 2.5 34x 100.50204060801001201401601803)自相关函数N=240y=wavread('mike.wav');y=y(:,1);x=y(13271:13510);x=x.*rectwin(240);R=zeros(1,240);for k=1:240for n=1:240-kR(k)=R(k)+x(n)*x(n+k);endendj=1:240;plot(j,R);grid;2.521.510.5-0.5-1-1.5050100150200250实验二基于 MATLAB 分析语音信号频域特征1)短时谱cleara=wavread('mike.wav');a=a(:,1);subplot(2,1,1),plot(a);title('original signal');gridN=256;h=hamming(N);for m=1:Nb(m)=a(m)*h(m)endy=20*log(abs(fft(b)))subplot(2,1,2)plot(y);title('短时谱 ');gridoriginal signal10.5-0.5-100.51 1.52 2.5 34x 10短时谱10.500.20.40.60.81 1.2 1.4 1.6 1.8 22)语谱图[x,fs,nbits]=wavread('mike.wav')x=x(:,1);specgram(x,512,fs,100);xlabel('时间 (s)');ylabel('频率 (Hz)' );title('语谱图 ');语谱图50004000)zH3000(率频200010000.51 1.5 2时间 (s) 3)倒谱和复倒谱(1)加矩形窗时的倒谱和复倒谱cleara=wavread('mike.wav',[4000,4350]);a=a(:,1);N=300;h=linspace(1,1,N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title( '加矩形窗时的倒谱')subplot(2,1,2)plot(c);title( '加矩形窗时的复倒谱')加矩形窗时的倒谱1-1-2050100150200250300加矩形窗时的复倒谱105-5-10050100150200250300(2)加汉明窗时的倒谱和复倒谱 cleara=wavread('mike.wav',[4000,4350]);a=a(;,1);N=300;h=hamming(N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title( '加汉明窗时的倒谱')subplot(2,1,2)plot(c);title( '加汉明窗时的复倒谱')加汉明窗时的倒谱1-1-2-3050100150200250300加汉明窗时的复倒谱105-5-10050100150200250300实验三基于 MATLAB 的 LPC 分析MusicSource = wavread('mike.wav');MusicSource=MusicSource(:,1);Music_source = MusicSource';N = 256; % window length, N = 100 -- 1000;Hamm = hamming(N); % create Hamming windowframe = input( '请键入想要处理的帧位置= ' );% origin is current frameorigin = Music_source(((frame - 1) * (N / 2) + 1):((frame - 1) * (N / 2) + N));Frame = origin .* Hamm';%%Short Time Fourier Transform%[s1,f1,t1] = specgram(MusicSource,N,N/2,N);[Xs1,Ys1] = size(s1);for i = 1:Xs1FTframe1(i) = s1(i,frame);endN1 = input( '请键入预测器阶数= ' ); % N1 is predictor's order[coef,gain] = lpc(Frame,N1); % LPC analysis using Levinson-Durbin recursionest_Frame = filter([0 -coef(2:end)],1,Frame); % estimate frame(LP)FFT_est = fft(est_Frame);err = Frame - est_Frame; % error% FFT_err = fft(err);subplot(2,1,1),plot(1:N,Frame,1:N,est_Frame,'-r');grid;title('原始语音帧 vs.预测后语音帧 ')subplot(2,1,2),plot(err);grid;title('误差 ');pause%subplot(2,1,2),plot(f',20*log(abs(FTframe2)));grid;title('短时谱 ')%%Gain solution using G^2 = Rn(0) - sum(ai*Rn(i)),i = 1,2,...,P%fLength(1 : 2 * N) = [origin,zeros(1,N)];Xm = fft(fLength,2 * N);X = Xm .* conj(Xm);Y = fft(X , 2 * N);Rk = Y(1 : N);PART = sum(coef(2 : N1 + 1) .* Rk(1 : N1));G = sqrt(sum(Frame.^2) - PART);A = (FTframe1 - FFT_est(1 : length(f1'))) ./ FTframe1 ; % inverse filter A(Z)subplot(2,1,1),plot(f1',20*log(abs(FTframe1)),f1',(20*log(abs(1 ./ A))),'-r');grid;title('短时谱 ');subplot(2,1,2),plot(f1',(20*log(abs(G ./ A))));grid;title( 'LPC谱 ');pause%plot(abs(ifft(FTframe1 ./ (G ./ A))));grid;title('excited')%plot(f1',20*log(abs(FFT_est(1 : length(f1')) .* A / G )));grid;%pause%%find_pitch%temp = FTframe1 - FFT_est(1 : length(f1'));%not move higher frequncepitch1 = log(abs(temp));pLength = length(pitch1);result1 = ifft(pitch1,N);% move higher frequncepitch1((pLength - 32) : pLength) = 0;result2 = ifft(pitch1,N);%direct do real cepstrum with errpitch = fftshift(rceps(err));origin_pitch = fftshift(rceps(Frame));subplot(211),plot(origin_pitch);grid;title( '原始语音帧倒谱 (直接调用函数 )');subplot(212),plot(pitch);grid;title( '预测误差倒谱 (直接调用函数 )');pausesubplot(211),plot(1:length(result1),fftshift(real(result1)));grid;title('预测误差倒谱 (根据定义编写,没有去除高频分量)');subplot(212),plot(1:length(result2),fftshift(real(result2)));grid;title('预测误差倒谱 (根据定义编写,去除高频分量 )');原始语音帧 vs. 预测后语音帧0.40.2-0.2-0.4050100150200250300误差0.20.1-0.1-0.2050100150200250300短时谱50-50-100010203040506070LPC 谱100806040010203040506070原始语音帧倒谱(直接调用函数)0.5-0.5-1050100150200250300预测误差倒谱(直接调用函数)0.5-0.5-1050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300实验四基于 VQ 的特定人孤立词语音识别研究1、mfcc.mfunction ccc = mfcc(x)bank=melbankm(24,256,8000,0,0.5,'m' );bank=full(bank);bank=bank/max(bank(:));for k=1:12n=0:23;dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));endw = 1 + 6 * sin(pi * [1:12] ./ 12);w = w/max(w);xx=double(x);xx=filter([1 -0.9375],1,xx);xx=enframe(xx,256,80);for i=1:size(xx,1)y = xx(i,:);s = y' .* hamming(256);t = abs(fft(s));t = t.^2;c1=dctcoef * log(bank * t(1:129));c2 = c1.*w';m(i,:)=c2';enddtm = zeros(size(m));for i=3:size(m,1)-2dtm(i,:) = -2*m(i-2,:) - m(i-1,:) + m(i+1,:) + 2*m(i+2,:);enddtm = dtm / 3;ccc = [m dtm];ccc = ccc(3:size(m,1)-2,:);2、vad.mfunction [x1,x2] = vad(x)x = double(x);x = x / max(abs(x));FrameLen = 240;FrameInc = 80;amp1 = 10;amp2 = 2;zcr1 = 10;zcr2 = 5;maxsilence = 8; % 6*10ms = 30msminlen = 15; % 15*10ms = 150msstatus = 0;count = 0;silence = 0;tmp1 = enframe(x(1:end-1), FrameLen, FrameInc);tmp2 = enframe(x(2:end) , FrameLen, FrameInc);signs = (tmp1.*tmp2)<0;diffs = (tmp1 -tmp2)>0.02;zcr = sum(signs.*diffs, 2);amp = sum(abs(enframe(filter([1 -0.9375], 1, x), FrameLen, FrameInc)), 2); amp1 = min(amp1, max(amp)/4);amp2 = min(amp2, max(amp)/8);x1 = 0;x2 = 0;for n=1:length(zcr)goto = 0;switch statuscase {0,1}if amp(n) > amp1x1 = max(n-count-1,1);status = 2;silence = 0;count= count + 1;elseif amp(n) > amp2 | ...zcr(n) > zcr2status = 1;count = count + 1;elsestatus = 0;count= 0;endcase 2,if amp(n) > amp2 | ...zcr(n) > zcr2count = count + 1;elsesilence = silence+1;if silence < maxsilence count = count + 1;elseif count < minlenstatus = 0;silence = 0;count= 0;elsestatus = 3;endendcase 3,break;endendcount = count-silence/2;x2 = x1 + count -1;3、codebook.m%clear;function xchushi= codebook(m) [a,b]=size(m);[m1,m2]=szhixin(m);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);[m7,m8]=szhixin(m4);[m5,m6]=szhixin(m3);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);[m15,m16]=szhixin(m8);[m13,m14]=szhixin(m7);[m11,m12]=szhixin(m6);[m9,m10]=szhixin(m5);[m7,m8]=szhixin(m4);[m5,m6]=szhixin(m3);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);chushi(1,:)=zhixinf(m1);chushi(2,:)=zhixinf(m2);chushi(3,:)=zhixinf(m3);chushi(4,:)=zhixinf(m4);chushi(5,:)=zhixinf(m5);chushi(6,:)=zhixinf(m6);chushi(7,:)=zhixinf(m7);chushi(8,:)=zhixinf(m8);chushi(9,:)=zhixinf(m9);chushi(10,:)=zhixinf(m10);chushi(11,:)=zhixinf(m11);chushi(12,:)=zhixinf(m12);chushi(13,:)=zhixinf(m13);chushi(14,:)=zhixinf(m14);chushi(15,:)=zhixinf(m15);chushi(16,:)=zhixinf(m16);sumd=zeros(1,1000);k=1;dela=1;xchushi=chushi;while(k<=1000)sum=ones(1,16);for p=1:afor i=1:16d(i)=odistan(m(p,:),chushi(i,:));enddmin=min(d);sumd(k)=sumd(k)+dmin;for i=1:16if d(i)==dminxchushi(i,:)=xchushi(i,:)+m(p,:);sum(i)=sum(i)+1;endendendfor i=1:16xchushi(i,:)=xchushi(i,:)/sum(i); endif k>1dela=abs(sumd(k)-sumd(k-1))/sumd(k); endk=k+1;chushi=xchushi;endreturn4、 testvq.mclear;disp('这是一个简易语音识别系统,请保证已经将您的语音保存在相应文件夹中') disp('正在训练您的语音模版指令,请稍后...')for i=1:10fname = sprintf(海儿的声音\\%da.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);m = mfcc(x);m = m(x1:x2-5,:);ref(i).code=codebook(m);enddisp('语音指令训练成功,恭喜!)?'disp('正在测试您的测试语音指令,请稍后...')for i=1:10fname = sprintf(海儿的声音\\%db.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);mn = mfcc(x);mn = mn(x1:x2-5,:);%mn = mn(x1:x2,:)test(i).mfcc = mn;endsumsumdmax=0;sumsumdmin=0;disp('对训练过的语音进行测试')for w=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);for i=1:10for p=1:afor j=1:16d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:));enddmin=min(d);sumd(i)=sumd(i)+dmin; %×üê§??endendsumdmin=min(sumd)/a;sumdmin1=min(sumd);sumdmax(w)=max(sumd)/a;sumsumdmin=sumdmin+sumsumdmax;sumsumdmax=sumdmax(w)+sumsumdmax;disp('正在匹配您的语音指令,请稍后...')for i=1:10if (sumd(i)==sumdmin1)switch (i)case 1fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'前 ', '前 ');case2fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'后 ', '后 ');case3fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'左 ', '左 ');case4fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'右 ', '右 ');case5fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'东 ', '东 ');case6fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'南 ', '南 ');case7fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'西 ', '西 ');case8fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'北 ', '北 ');case9fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'上 ', '上 ');case10fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'下 ', '下 ');otherwisefprintf( 'error');endendendenddelamin=sumsumdmin/10;delamax=sumsumdmax/10;disp('对没有训练过的语音进行测试')disp('正在测试你的语音,请稍后...')for i=1:10fname = sprintf(o£ ?ùμ ?éùò?\\%db.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);mn = mfcc(x);mn = mn(x1:x2-5,:);%mn = mn(x1:x2,:)test(i).mfcc = mn;endfor w=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);for i=1:10for p=1:afor j=1:16d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:));enddmin=min(d);sumd(i)=sumd(i)+dmin; %×üê§??endendsumdmin=min(sumd);z=0;for i=1:10if (((sumd(i))/a)>delamax)||z=z+1;endenddisp('正在匹配您的语音指令,请稍后...')if z<=3for i=1:10if (sumd(i)==sumdmin)switch (i)case 1fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'前 ', '前 ');case2fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'后 ', '后 ');case3fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'左 ', '左 ');case4fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'右 ', '右 ');case5fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'东 ', '东 ');case6fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'南 ', '南 ');case7fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'西 ', '西 ');case8fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'北 ', '北 ');case9fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'上 ', '上 ');case10fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'下 ', '下 ');otherwisefprintf( 'error');endendendelsefprintf( '您输入的语音无效?\n'£)?endend(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)。
MATLAB语音信号分析和处理
Computer Knowledge and Technology 电脑知识与技术计算机工程应用技术本栏目责任编辑:梁书第7卷第13期(2011年5月)MATLAB 语音信号分析和处理冯玉亮,孙祥娥(长江大学电子信息信学院,湖北荆州434023)摘要:MATLAB 作为一款具备强大科学计算能力和图形显示功能的软件在科学研究以及实际应用的各个领域得到了广泛的应用。
文章介绍了FFT 频谱分析原理及其显示,MATLAB 中相关函数的功能,滤波器的设计和使用。
在此基础上对实际采集的一段含噪声语音信号进行了相关分析处理,试验证明MATLAB 对语音信号的处理十分简单方便,易于实现。
关键词:语音信号处理;MATLAB ;滤波器;频谱分析中图分类号:TN912文献标识码:A 文章编号:1009-3044(2011)13-3145-03Analysis and Processing Speech Signal Based on MATLABFENG Yu-liang,SUN Xiang-e(Electronic and Information Institute of Yangtze University,Jingzhou 434102,China)Abstract:As a scientific software with the characteristic of powerful computing capability and strong graphical display,Matlab has been widely used in scientific research and practical applications in various fields.This paper introduces the principle of FFT firstly,Matlab fuc -tions about display,filter designing are discribed too.And then,an actual speech signal is analysed and processed by matlab.Though analysis the frequency character of noise and raw speech,the proper filter is designed and the noise is surpressed.Matlab can execute those analysis and peocessing simplely and conveniently.Key words:the speech signal proseccing;matlab;filter;frequency character analysis数字信号处理是一门发展迅速、应用广泛的前沿性学科,加上现在科技的迅速发展,数字信号处理也在逐步向着数字化、可视化、软件化的方向发展。
基于MATLAB的语音信号时域特征分析.doc
+k w m k)()]开始录音1)短时能量(1)加矩形窗a=wavread('C:\Users\k01\WEI.wav'); subplot(6,1,1),plot(a);N=32;for i=2:6h=linspace(1,1,2.^(i-2)*N);En=conv(h,a.*a);subplot(6,1,i),plot(En);if(i==2) legend('N=32');elseif(i==3) legend('N=64');elseif(i==4) legend('N=128');elseif(i==5) legend('N=256');elseif(i==6) legend('N=512');endend00.51 1.52 2.53 3.54x 105-0.200.200.51 1.52 2.53 3.54x 105012 N=3200.51 1.52 2.53 3.54x 105024 N=6400.51 1.52 2.53 3.54x 10505 N=12800.51 1.52 2.53 3.54x 1050510 N=25600.51 1.52 2.53 3.54x 10501020 N=512(2)加汉明窗a=wavread('C:\Users\k01\WEI.wav');subplot(6,1,1),plot(a);N=32;for i=2:6h=hanning(2.^(i-2)*N);%形成一个汉明窗,长度为2.^(i-2)*N En=conv(h,a.*a);% 求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2) legend('N=32');elseif(i==3) legend('N=64');elseif(i==4) legend('N=128');elseif(i==5) legend('N=256');elseif(i==6) legend('N=512');endend00.51 1.52 2.53 3.54x 105-0.200.200.51 1.52 2.53 3.54x 10500.51 N=3200.51 1.52 2.53 3.54x 105012 N=6400.51 1.52 2.53 3.54x 105024 N=12800.51 1.52 2.53 3.54x 10505 N=25600.51 1.52 2.53 3.54x 1050510 N=51200.51 1.52 2.53 3.5x 105-0.500.53) 自相关函数N=240Y=WAVREAD('C:\Users\k01\WEI.wav');x=Y(13271:13510);x=x.*rectwin(240);R=zeros(1,240);for k=1:240for n=1:240-kR(k)=R(k)+x(n)*x(n+k);endendj=1:240; plot(j,R); grid;短时谱1)短时谱cleara=wavread('C:\Users\k01\Desktop\WENWEI.wav');subplot(2,1,1),plot(a);title('original signal');gridN=256;h=hamming(N);for m=1:Nb(m)=a(m)*h(m)endy=20*log(abs(fft(b)))subplot(2,1,2)plot(y);title('短时谱');grid00.51 1.52 2.53 3.5x 105-0.500.5original signal050100150200250300-200-100100短时谱2)语谱图[x,fs,nbits]=wavread('C:\Users\k01\Desktop\WENWEI.wav ')specgram(x,512,fs,100);xlabel('时间(s)');ylabel('频率(Hz)');title('语谱图');3)倒谱和复倒谱(1)加矩形窗时的倒谱和复倒谱cleara=wavread('C:\Users\k01\Desktop\WENWEI.wav',[4000,4350]); N=300;h=linspace(1,1,N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title('加矩形窗时的倒谱')subplot(2,1,2)plot(c);title('加矩形窗时的复倒谱')050100150200250300-6-4-22加矩形窗时的倒谱050100150200250300-505加矩形窗时的复倒谱(2)加汉明窗时的倒谱和复倒谱cleara=wavread('C:\Users\k01\Desktop\WENWEI.wav',[4000,4350]); N=300;h=hamming(N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title('加汉明窗时的倒谱')subplot(2,1,2)plot(c);title('加汉明窗时的复倒谱')050100150200250300-6-4-22加汉明窗时的倒谱050100150200250300-505加汉明窗时的复倒谱段的起始点;而过零率分析仅仅是表明清音的过零率高于浊音,对噪声的存在比较敏感,如果背景中有反复穿越坐标轴的随机噪声,会产生大量的虚假过零率,影响检测结果。
基于MATLAB的语音信号分析和处理
摘要本文主要描述的是基于MATLAB的一般声音信号的频谱分析过程包括:用电脑声卡录音、从WAV文件输入、从标准信号发生器输入;信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值、均方值和方差的计算;信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。
关键词:MATLAB,频谱分析,误差目录前言 (1)一、设计原理 (2)1.1系统整体设计原理 (2)1.2频谱分析原理 (3)1.3 频谱图 (4)1.4 模块划分 (4)二、详细设计步骤 (5)2.1语音信号的采集 (5)2.2采样分帧 (6)2.3 短时能量和短时平均幅度 (6)2.4短时过零率 (8)2.5短时自相关函数 (9)2.6语音信号的滤波 (11)三、设计结果及分析 (12)3.1语音信号的录入与打开 (12)3.2时域信号的FFT分析与加噪后的波形比较 (12)3.3滤波并比较滤波前后语音信号的波形 (14)3.4频率响应分析 (15)总结 (17)参考文献 (18)致谢 (19)附录 (20)前言随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向。
虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。
基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析等。
从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能的飞速发展,已把传统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来连锅端的技术更新速率。
目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSA Vu、dBFA等。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令。
本文将给出基于声卡与MATLAB的声音信号频谱分析的设计原理与实现方法。
基于MATLAB对语音信号进行分析和处理
目录一、摘要 ------------------------------------------------------------ 2二、正文 ------------------------------------------------------------ 31.设计目的和要求----------------------------------------------- 3 2.设计原理----------------------------------------------------- 3(1)采样定理 -------------------------------------------------- 3(2)采样频率 -------------------------------------------------- 3(3)采样位数与采样频率 ---------------------------------------- 33.设计内容------------------------------------------------------ 4 (1)程序源代码: -------------------------------------------- 4 (2)调试分析过程描述 ---------------------------------------- 6 (3)数据、结果和分析 ---------------------------------------- 7三、总结与致谢 ----------------------------------------------------- 10四、参考文献 ------------------------------------------------------- 11一、摘要本次课程设计要求利用MATLAB对语音信号进行分析和处理,要求学生采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
实验二基于MATLAB分析语音信号频域特征
实验二 基于MATLAB 分析语音信号频域特征一、实验目的信号的傅立叶表示在信号的分析与处理中起着重要的作用。
因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项物理现象。
由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。
输出频谱是声道系统频率响应与激励源频谱的乘积。
声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。
由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
本实验要求掌握傅里叶分析原理,会利用已学的知识,编写程序估计短时谱、倒谱,画出语谱图,并分析实验结果,在此基础上,借助频域分析方法所求得的参数分析语音信号的基音周期或共振峰。
二、实验原理1、短时傅立叶变换由于语音信号是短时平稳的随机信号,某一语音信号帧的短时傅立叶变换的定义为:()()()jwjwmn m X e x m w n m e∞-=-∞=-∑ (1.1)其中w(n-m)是实窗口函数序列,n 表示某一语音信号帧。
令n-m=k',则得到(')'()(')(')jwjw n k n k X e w k x n k e∞--=-∞=-∑ (1.2)于是可以得到()()()jw jwnjwkn k X e ew k x n k e∞-=-∞=-∑ (1.3)假定()()()jwjwkn k X e w k x n k e∞=-∞=-∑ (1.4)则可以得到()()jw jwn jw n n X e e X e -= (1.5)同样,不同的窗口函数,将得到不同的傅立叶变换式的结果。
由上式可见,短时傅立叶变换有两个变量:n 和ω,所以它既是时序n 的离散函数,又是角频率ω的连续函数。
基于MATLAB的语音信号的分析与处理
摘要如何从较多的语音情感特征因素中实现最优化是情感识别过程中的重要环节。
而正交实验设计就是研究多因素多水平一种设计方法,它是根据从全面实验中挑选出部分有代表性的点进行实验。
正交实验设计又称正交设计或多因素优选设计,是一种合理安排、科学分析各实验因素的一种有效的数理统计方法。
它是在实践经验和理论认识的基础上,借助一种规格化的“正交表”,从众多的实验条件中确定出若干个代表性较强的实验条件,科学地安排实验,然后对实验结果进行综合比较,统计分析,探求各因素水平最佳组合,从而得到最优或较优实验方案的一种实验设计方法。
本文介绍分析了正交试验设计的基本思想原理,和对数据的分析方法。
然后对提取的15个语音情感特征因素进行实例应用,即利用正交试验设计找出最优组合,提高情感识别的识别率。
关键字:正交试验;正交表;因素;交互作用;最优组合安徽建筑大学毕业设计(论文)AbstractHow to get optimal emotion recognition from many voice emotional characteristics is an important part of the process, while the orthogonal experimental design is a approach of studying multi-level and multi-factor , which is based on a comprehensive experiment selected from a representative sample of the experiment. Orthogonal experimental design called orthogonal design or multifactor preferred design. It is a standardized "orthogonal".We can get obtain optimal or optimum experimental program from Scientifically arranging experiments and statistical analysing.This article describes the analysis of the basic idea of orthogonal experimental design principles, and data analysis methods. There are 15 examples of application of e orthogonal design to find the optimal combination to improve emotion recognition rate.Keywords: orthogonal experiment; orthogonal larray; factor; interaction; optimal combination目录摘要...................................................... I Abstract ................................................. II 1 绪论. (1)1.1 引言 (1)1.2正交设计的研究现状 (1)1.3 本文主要内容 (2)2 正交实验设计的原理 (3)2.1 正交法常用概念 (3)2.2正交法 (3)3正交试验设计的步骤 (9)3.1 确定试验指标 (9)3.2 确定试验因素并选取适当的水平 (9)3.3 选用正交表 (10)3.4 表头设计 (10)3.5 编制试验方案 (11)4 实验数据分析 (12)4.1 实验数据的综合分析 (12)4.2 实验数据的统计分析 (13)5基于正交试验的特征选择 (19)5.1 问题分析 (19)5.2无交互作用处理 (19)参考文献 (24)致谢 (25)附录一数据处理程序 (26)基于MATLAB的语音信号的分析与处理-基于正交试验的特征选择方法的研究与实现电子与信息工程学院通信工程专业2009级2班邵伟指导教师王坤侠1 绪论1.1 引言如今,科学的快速进步带来各种各样革命性的产品,这些产品不是凭空而生,而是人类科学家经过多次成功与失败的试验总结完善而成的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,在矩形窗+k w m k)()]开始录音1)短时能量(1)加矩形窗a=wavread('C:\Users\k01\WEI.wav'); subplot(6,1,1),plot(a);N=32;for i=2:6h=linspace(1,1,2.^(i-2)*N);En=conv(h,a.*a);subplot(6,1,i),plot(En);if(i==2) legend('N=32');elseif(i==3) legend('N=64');elseif(i==4) legend('N=128');elseif(i==5) legend('N=256');elseif(i==6) legend('N=512');endend00.51 1.52 2.53 3.54x 105-0.200.200.51 1.52 2.53 3.54x 105012 N=3200.51 1.52 2.53 3.54x 105024 N=6400.51 1.52 2.53 3.54x 10505 N=12800.51 1.52 2.53 3.54x 1050510 N=25600.51 1.52 2.53 3.54x 10501020 N=512(2)加汉明窗a=wavread('C:\Users\k01\WEI.wav');subplot(6,1,1),plot(a);N=32;for i=2:6h=hanning(2.^(i-2)*N);%形成一个汉明窗,长度为2.^(i-2)*N En=conv(h,a.*a);% 求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2) legend('N=32');elseif(i==3) legend('N=64');elseif(i==4) legend('N=128');elseif(i==5) legend('N=256');elseif(i==6) legend('N=512');endend00.51 1.52 2.53 3.54x 105-0.200.200.51 1.52 2.53 3.54x 10500.51 N=3200.51 1.52 2.53 3.54x 105012 N=6400.51 1.52 2.53 3.54x 105024 N=12800.51 1.52 2.53 3.54x 10505 N=25600.51 1.52 2.53 3.54x 1050510 N=51200.51 1.52 2.53 3.5x 105-0.500.53) 自相关函数N=240Y=WAVREAD('C:\Users\k01\WEI.wav');x=Y(13271:13510);x=x.*rectwin(240);R=zeros(1,240);for k=1:240for n=1:240-kR(k)=R(k)+x(n)*x(n+k);endendj=1:240; plot(j,R); grid;短时谱1)短时谱cleara=wavread('C:\Users\k01\Desktop\WENWEI.wav');subplot(2,1,1),plot(a);title('original signal');gridN=256;h=hamming(N);for m=1:Nb(m)=a(m)*h(m)endy=20*log(abs(fft(b)))subplot(2,1,2)plot(y);title('短时谱');grid00.51 1.52 2.53 3.5x 105-0.500.5original signal050100150200250300-200-100100短时谱2)语谱图[x,fs,nbits]=wavread('C:\Users\k01\Desktop\WENWEI.wav ')specgram(x,512,fs,100);xlabel('时间(s)');ylabel('频率(Hz)');title('语谱图');3)倒谱和复倒谱(1)加矩形窗时的倒谱和复倒谱cleara=wavread('C:\Users\k01\Desktop\WENWEI.wav',[4000,4350]); N=300;h=linspace(1,1,N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title('加矩形窗时的倒谱')subplot(2,1,2)plot(c);title('加矩形窗时的复倒谱')050100150200250300-6-4-22加矩形窗时的倒谱050100150200250300-505加矩形窗时的复倒谱(2)加汉明窗时的倒谱和复倒谱cleara=wavread('C:\Users\k01\Desktop\WENWEI.wav',[4000,4350]); N=300;h=hamming(N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title('加汉明窗时的倒谱')subplot(2,1,2)plot(c);title('加汉明窗时的复倒谱')050100150200250300-6-4-22加汉明窗时的倒谱050100150200250300-505加汉明窗时的复倒谱段的起始点;而过零率分析仅仅是表明清音的过零率高于浊音,对噪声的存在比较敏感,如果背景中有反复穿越坐标轴的随机噪声,会产生大量的虚假过零率,影响检测结果。
对于背景噪声和清音的区分则显得无能为力。
将这两种方法结合起来,通过短时能量分析去除高频环境噪声的干扰,用过零率分析去除低频的干扰,检测效果较好。
但综合考虑后,由于这两种方法本身的局限性以及过零率门限值和短时能量门限值的选取,使得检测的范围和精度仅限于单个单词,而对整个句子的检测还达不到令人满意的效果。
复倒谱一个函数的傅里叶变换的对数的傅里叶反变换。
对褶积信号的线性分离作用,在实际信号处理中很有用处,例如可应用于通信、建筑声学、地震分析、地质勘探和语音处理等领域。
尤其在语音处理方面,应用复倒谱算法可制成同态预测声码器系统,用于高度保密的通信。
在离散信号x(n)情况下,用z变换表示复倒谱,可以写作复倒谱可以利用同态系统中一种特定的特征系统来求得,如图所示。
为了区别于用一般方法所求得的频谱(spectrum),将spectrum这一词前半部(spec)字母顺序颠倒即成cepstrum,根据词形定名为倒谱。
又因频谱一般为复数谱,故称为复倒谱。
为了说明复倒谱的性质,假设已知两信号x1(n)和x2(n)相褶积而得到的时间函数x(n),对它们分别求其离散傅里叶变换,写作X(ω)=DFT【x(n)】X1(ω)=DFT【x1(n)】X2(ω)=DFT【x2(n)】按上述定义,可得到如下关系式=IDFT{log 【X1(ω)】}+IDFT{log【X2(ω)】}由此可见,通过复倒谱的运算可将x1(n)和x2(n)的褶积关系变换为相加关系,再采用一般线性系统对它们进行滤波处理。
倒谱功率谱的对数值的逆傅氏变换称为倒谱,又称作功率倒频谱。
广泛应用于语音信号处理。
倒频谱函数C(q)(power cepstrum)其数学表达式为:C(q) = | IF(log(s(f))) |^2.其中,s(f)是信号s(t)的傅里叶变换,log()为取对数,IF为逆傅里叶变换。
自相关函数(Autocorrelation Function)在不同的领域,定义不完全等效。
在某些领域,自相关函数等同于自协方差(autocovariance)。
统计学信号处理,其中“*”是卷积算符,为取共轭。
同一时间函数在瞬时t和t+a的两个值相乘积的平均值作为延迟时间t的函数,它是信号与延迟后信号之间相似性的度量。
延迟时间为零时,则成为信号的均方值,此时它的值最大。
短时傅里叶变换(STFT,short-time Fourier transform,或short-term Fourier transform))是和傅里叶变换相关的一种数学变换,用以确定时变信号其局部区域正弦波的频率与相位。
它的思想是:选择一个时频局部化的窗函数,假定分析窗函数g(t)在一个短时间间隔内是平稳(伪平稳)的,移动窗函数,使f(t)g(t)在不同的有限时间宽度内是平稳信号,从而计算出各个不同时刻的功率谱。
短时傅里叶变换使用一个固定的窗函数,窗函数一旦确定了以后,其形状就不再发生改变,短时傅里叶变换的分辨率也就确定了。
如果要改变分辨率,则需要重新选择窗函数。
短时傅里叶变换用来分析分段平稳信号或者近似平稳信号犹可,但是对于非平稳信号,当信号变化剧烈时,要求窗函数有较高的时间分辨率;而波形变化比较平缓的时刻,主要是低频信号,则要求窗函数有较高的频率分辨率。
短时傅里叶变换不能兼顾频率与时间分辨率的需求。
短时傅里叶变换窗函数受到W.Heisenberg不确定准则的限制,时频窗的面积不小于2。
这也就从另一个侧面说明了短时傅里叶变换窗函数的时间与频率分辨率不能同时达到最优。