基于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的语音信号分析与处理的实验报告

基于MATLAB的语音信号分析与处理的实验报告

基于MA TLAB的语音信号分析与处理的实验报告数字信号课程设计,屌丝们有福了一.实验目的数字信号课程设计,屌丝们有福了综合计运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,培养发现问题、分析问题和解决问题的能力。

并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。

此外,还系统的学习和实现对语音信号处理的整体过程,从语音信号的采集到分析、处理、频谱分析、显示和储存。

二.实验的基本要求数字信号课程设计,屌丝们有福了1.进一步学习和巩固MATLAB的使用,掌握MATLAB的程序设计方法。

2.掌握在windows环境下语音信号采集的方法。

3.掌握数字信号处理的基本概念、基本理论、原理和基本方法。

4.掌握MATLAB设计FIR和IIR数字滤波器的方法。

5.学会用MATLAB对信号进行分析和处理。

三.实验内容录制一段自己的语音信号,(语音信号声音可以理解成由振幅和相位随时间缓慢变化的正弦波构成。

人的听觉对声音的感觉特征主要包含在振幅信息中,相位信息一般不起作用。

在研究声音的性质时,往往把时域信息(波形图)变换得到它的频域信息(频谱),通过研究频谱和与频谱相关联的特征获得声音的特性。

)并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或者双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号发生的变化;回放语音信号。

数字信号课程设计,屌丝们有福了四.实验的实现(1).语音信号的采集采用windows下的录音机或者手机、其他的软件,录制一段自己的话音,时间控制在一分钟左右;然后在MATLAB软件平台下,利用函数wavread对自己的话音进行采样,记住采样的频率和采样的点数。

基于MATLAB的语音信号时域特性分析_语音信号处理实验报告

基于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环境下,从介绍功率谱的估计原理入手分析了经典谱估计和现代谱估计两类估计方法的原理、各自特点以及实现方法。

[关键词]功率谱;功率谱估计;经典功率谱估计;现代功率谱估计;语谱图;共振峰信号的频谱分析是研究信号特性的重要手段之一,通常是求其功率谱来进行频谱分析。

功率谱反映了随机信号各频率成份功率能量的分布情况,可以揭示信号中隐含的周期性及靠得很近的谱峰等有用信息,在许多领域都发挥了重要作用。

然而,实际应用中的平稳随机信号通常是有限长的,只能根据有限长信号估计原信号的真实功率谱,这就是功率谱估计。

⑴功率谱估计cleara=wavread('鸟语花香.wav');subplot(2,1,1),plot(a);title('original signal');grid;N=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('短时谱');xlabel('频率(Hz)');ylabel('功率谱(db)');grid;①%相关法:相关法是利用维纳-辛钦定理该方法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。

[xn,Fs,bits]=wavread('鸟语花香.wav');n=0:1/Fs:1;nfft=512;cxn=xcorr(xn,'unbiased');CXk=fft(cxn,nfft);Pxx=abs(CXk);index=0:round(nfft/2-1);k=index*Fs/nfft;a=log(10);b=log(Pxx(index+1));c=b/a;plot_Pxx=10*c;plot(k,plot_Pxx);xlabel('frequeney(hz)相关法');ylabel('power spectraldensity');title('recorrelation psd estimate');②周期图法周期图法是直接将信号的采样数据x(n)进行Fourier 变换求取功率谱密度估计的方法。

基于MATLAB的语音信号的时、频域分析课程设计

基于MATLAB的语音信号的时、频域分析课程设计

摘要用MATLAB对于语音信号进行分析和处理,采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。

本次设计介绍了基于MATLAB的对语音信号的采集,处理及滤波器的设计,并使之实现的过程。

关键词:MATLAB;语音信号;滤波器;加噪;除噪目录摘要 (1)1 设计原理 (1)1.1 理论原理 (1)1.1.1采样频率 (1)1.1.2采样位数 (1)1.1.3采样定理 (1)1.1.4时域信号的FFT分析 (2)1.1.5数字信号的滤波器原理和方法 (2)1.1.6 各种不同类型滤波器的性能比较 (3)1.1.7离散傅立叶变换 (3)2 信号采集及读取 (4)3 构造受干扰信号并对其进行FFT频谱分析 (6)4 数字滤波器设计 (8)4.1 用窗函数法设计IIR带通滤波器 (8)4.2 用窗函数法设计FIR低通滤波器 (10)5信号处理 (12)5.1 IIR带通滤波 (12)5.2 FIR低通滤波 (14)6心得体会 (16)7 参考文献: (16)1设计原理1.1 理论原理1.1.1 采样频率也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。

采样频率只能用于周期性采样的采样器,对于非周期性采样的采样器没有规则限制。

通俗的讲采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。

采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。

1.1.2采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。

1.1.3采样定理在进行模拟/数字信号的转换过程中,当采样频率fs.max 大于信号中最高频率fmax的2倍时(fs.max>=2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特定理。

基于MATLAB分析语音信号频域特征

基于MATLAB分析语音信号频域特征
线性滤波器 。这样经过 同态处理后 , 语音信号 的复倒 谱 , 励信 号 的复倒谱 , 道 系统 的复倒 谱 之 间满 足下 激 声 面 的关 系 : ( )= n +寻 n n ( ) ( ) (.) 2 9
由于语音信号是短时平稳的随机信号 , 某一语音 信号帧的短时傅立叶变换的定义为 :

( ) ∑ ( ( — 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的语音信号分析与处理(DOC)

基于Matlab的语音信号分析与处理(DOC)

基于Matlab的语音信号分析与处理[摘要]语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。

通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。

滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。

MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。

课题基于MATLAB 有噪音语音信号处理与设计与实现,本人综合运用数字信号处理的理论知识对加噪声清浊语音信号进行时域、频域分析和滤波。

通过理论推导得出相应结论,用MATLAB平台对语音信号加入了不同的噪声,进一步用双线性变换法设计了一个的巴特沃思低通IIR滤波器和用窗函数法设计了FIR低通滤波器,然后对加噪的语音信号进行滤波处理。

最后对比滤波前后的语音信号的时域和频域特性。

[关键词]清浊语音信号采集;傅里叶变换;滤波器设计;信号处理目录引言............................................. - 1 -1基本原理....................................... - 1 -1.1语音信号概述................................... - 1 -1.2数字滤波器原理................................. - 1 -2总体设计思想................................... - 2 -2.1 语音信号的采集................................ - 2 -2.2 语音信号处理工具的选择........................ - 2 -2.3 数字滤波器的设计.............................. - 2 -3语音信号分析和滤波处理 ......................... - 4 -3.1 语音信号的采集................................ - 4 -3.2 语音信号的频谱分析............................ - 4 -3.3语言信号处理................................... - 6 -4滤波器的设计[4]................................. - 10 -4.1巴特沃斯低通滤波器............................ - 10 -4.2频率响应S域到Z域的变换:.................... - 13 -4.3设计数字带通滤波器............................ - 16 -4.4窗函数法的FIR滤器波.......................... - 20 -5结果及分析.................................... - 23 -6总结.......................................... - 23 -参考文献........................................ - 24 -附录原程序.................................... - 25 -引言语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。

基于Matlab的语音信号分析与处理

基于Matlab的语音信号分析与处理
(2)采样位数 采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采
集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备 在一秒钟内对声音信号的采样次数于音频接口来说是最为重要的两个指标,也是选择音频 接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数 据最大的力度范围。每增加一个采样位数相当于力度范围增加了 6dB。采样位数 越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机, 44.1kHz 意味着音频流进入计算机时计算机每秒会对其拍照达 441000 次。显然 采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
关键字:清浊语音信号采集;傅里叶变换;滤波器设计;信号处理
目录
前 言............................................................................................................................1 一 语音信号特性介绍与采集......................................................................................2
在设计中要用到数字滤波器, 它是数字信号处理中及其重要的一部分。随着 信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数 值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不 存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类 很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即 有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。

基于MATLAB的语音信号分析与处理系统的设计

基于MATLAB的语音信号分析与处理系统的设计

基于MATLAB的语音信号分析与处理系统的设计数字信号处理大作业基于MATLAB的语音信号分析与处理系统的设计班级:物联网1401学号:姓名:zk一、设计目的综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB和C语言作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。

二、设计内容及要求2.1设计内容①录制一段自己的语音信号(我是物联网1401班的张坤),并对录制的信号进行采样。

②画出采样后语音信号的时域波形和频谱图。

③给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应。

④利用设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化,回放语音信号。

⑤用 MATLAB 设计一信号处理系统界面。

⑥利用C语言对录制语音信号进行FFT变换(取其中的1024进行),计算出自己声带的带宽。

2.2设计要求①学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。

②掌握在 Windows 环境下语音信号采集的方法。

③掌握数字信号处理的基本概念、基本理论和基本方法。

④掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法。

⑤学会用 MATLAB 对信号进行分析和处理。

⑥学会用C语言进行FFT程序的编写和算法效果的仿真。

三、详细设计过程3.1语音信号的采集利用PC 机上的声卡和Windows 操作系统实现语音信号的的采集。

打开“开始”菜单,选择“程序\附件\娱乐\录音机”项,打开Windows中自带的录音机程序,点击录音机程序界面中的录音按钮,开始声音录制。

录完后点击放音按钮,可以实现所录音的重现。

以文件名“zhangkun”保存入D:\ 中。

文件存储器的后缀默认为.wav ,这是Windows 操作系统规定的声音文件存的标准。

3.2 原始语音信号的时域频域分析利用MATLAB中的“audioread”命令来读入(采集)语音信号,将它赋值给某一向量。

掌握Matlab语音信号处理的基本原理

掌握Matlab语音信号处理的基本原理

掌握Matlab语音信号处理的基本原理Matlab是一种流行的程序设计语言和工具,广泛应用于信号处理领域。

在音频处理中,Matlab可以帮助我们实现各种音频效果、音频分析和音频信号处理算法。

本文将介绍Matlab语音信号处理的基本原理和应用。

一、语音信号的数学表示语音信号是一种连续时间的信号,可以通过采样将其离散化。

在Matlab中,我们可以使用采样率(Sampling rate)来表示每秒采样的样本数。

通常情况下,语音信号的采样率为8000Hz、16000Hz或者更高。

我们可以使用Matlab的`audioread()`函数将音频文件读取为一个向量,并使用`sound(y, Fs)`函数将其播放。

二、语音信号的时域分析时域分析是一种描述信号在时间上变化的方法。

对于语音信号,我们可以使用Matlab的`plot`函数将其在时间轴上绘制出来。

通过查看语音信号的时域波形,我们可以观察到语音信号的持续时间、音调、强度等特征。

三、语音信号的频域分析频域分析是一种描述信号在频率上变化的方法。

对于语音信号,我们可以使用傅里叶变换将其从时域表示转换为频域表示。

在Matlab中,我们可以使用`fft`函数来计算信号的傅里叶变换,并使用`plot`函数将其绘制成频谱图。

频谱图可以帮助我们观察语音信号的共振峰、频率成分等特征。

四、语音信号的滤波处理滤波是一种常用的信号处理方法,可以用来增强或者改变信号的特征。

在语音信号处理中,滤波可以用于去除噪声、增强谐波等。

在Matlab中,我们可以使用`filter`函数来设计和应用各种数字滤波器。

滤波器的设计可以通过指定滤波器的系数或者用滤波器设计函数来自动完成。

五、语音信号的特征提取语音信号的特征提取是一种将语音信号转换为一组数学特征的方法。

这些特征可以用于语音识别、语音合成等应用。

在Matlab中,我们可以使用各种特征提取函数来计算音频信号的特征,如基频、共振峰频率等。

这些特征提取函数通常基于统计分析、傅里叶变换等算法进行计算。

基于MATLAB对语音信号进行分析和处理

基于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

基于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

语音信号处理实验报告.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的语音信号时域特征分析.doc

基于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的语音信号分析和处理

摘要本文主要描述的是基于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仿真教学课件

语音信号的短时时域分析数字语音处理及MATLAB仿真教学课件
|R(k)|≤R(0) (3) 对于确定信号,R(0)对应于能量
对于随机信号,R(0)对应于平均功率
36
数字语音处理及MATLAB仿真 张雪英编著
3.6.2 语音信号的短时自相关函数
采用短时分析方法,定义语音信号短时自相关函数为
Rn k x mw n m x m k w n k m
每 10ms 内的过零数
过零率概率分布
33
数字语音处理及MATLAB仿真 张雪英编著
端点检测
端点检测目的:从包含语音的一段信号中确 定出语音的起点及结束点。
有效的端点检测不仅能使处理时间减到最少, 而且能抑制无声段的噪声干扰,提高语音处理的 质量。
34
数字语音处理及MATLAB仿真 张雪英编著
3.6 短时自相关分析
3.2.1 语音信号的预加重处理
预加重目的:为了对语音的高频部分进行加重, 去除口唇辐射的影响,增加语音的高频分辨率。 可通过一阶FIR高通数字滤波器来实现:
H (z) 1 z1
设n时刻的语音采样值为x(n) ,经过预加重处理后 的结果为
y(n) x(n) x(n 1)
5
数字语音处理及MATLAB仿真 张雪英编著
几种常见的短时处理方法是: 1. T[x(m)] x2 (m),h(n) w2 (n) Qn 对应于能量; 2. T[x(m)] sgn[x(m,)]sgn[x(m1)],h(n) w(n)
Qn 对应于平均过零率;
3. T[x(m)] x(m)x(mk),hn wnwn k
Qn 对应于自相关函数 ;
3.6.1 短时自相关函数
时域离散确定信号的自相关函数定义为:
R(k)
∑ ∞
xm
xm

基于MATLAB对语音信号进行分析和处理

基于MATLAB对语音信号进行分析和处理

目录一、摘要 ------------------------------------------------------------ 2二、正文 ------------------------------------------------------------ 31.设计目的和要求----------------------------------------------- 3 2.设计原理----------------------------------------------------- 3(1)采样定理 -------------------------------------------------- 3(2)采样频率 -------------------------------------------------- 3(3)采样位数与采样频率 ---------------------------------------- 33.设计内容------------------------------------------------------ 4 (1)程序源代码: -------------------------------------------- 4 (2)调试分析过程描述 ---------------------------------------- 6 (3)数据、结果和分析 ---------------------------------------- 7三、总结与致谢 ----------------------------------------------------- 10四、参考文献 ------------------------------------------------------- 11一、摘要本次课程设计要求利用MATLAB对语音信号进行分析和处理,要求学生采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于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 的增大迅速减小;浊音是周期信号,浊音的短时自相关函数呈现明显的周期性,自相关函数的周期就是浊音信号的周期,根据这个性质可以判断一个语音信号是清音还是浊音,还可以判断浊音的基音周期。

浊音语音的周期可用自相关函数中第一个峰值的位置来估算。

所以在语音信号处理中,自相关函数常用来作以下两种语音信号特征的估计:
1)区分语音是清音还是浊音;2)估计浊音语音信号的基音周期。

延时k
R (k )
图1.2 清音的短时自相关函数
延时k
R (k )
延时k
R (k )
延时k
R (k )
延时k
R (k )
图1.2 不同矩形窗长条件下的浊音的短时自相关函数
短时平均过零率
过零率可以反映信号的频谱特性。

当离散时间信号相邻两个样点的正负号相异时,我们称之为“过零”,即此时信号的时间波形穿过了零电平的横轴。

统计单位时间内样点值改变符号的次数具可以得到平均过零率。

定义短时平均过零率:
sgn[[]sgn[(1)]()
n m Z x m x m w n m ∞
=-∞
=
---∑
其中sgn[]为符号函数,{1,()0
1,()0
sgn ()x n x n x n ≥-=,在矩形窗
条件下,可以简化为
1
1
sgn[()sgn[(1)]
2n
n m n N Z x m x m N
=-+=
--∑
短时过零率可以粗略估计语音的频谱特性。

由语音的产生模型可知,发浊音时,声带振动,尽管声道有多个共振峰,但由于声门波引起了频谱的高频衰落,因此浊音能量集中于
3KZ 以下。

而清音由于声带不振动,声道的某些部位阻塞气流产生类白噪声,多数能量集中在较高频率上。

高频率对应着高过零率,低频率对应着低过零率,那么过零率与语音的清浊音就存在着对应关系。

.
图2为某一语音在矩形窗条件下求得的短时能量和短时平均过零率。

分析可知:清音的短时能量较低,过零率高,浊音的短时能量较高,过零率低。

清音的过零率为0.5左右,浊音的过零率为0.1左右,两但者分布之间有相互交叠的区域,所以单纯依赖于平均过零率来准确判断清浊音是不可能的,在实际应用中往往是采用语音的多个特征参数进行综合判决。

短时平均过零率的应用:1)区别清音和浊音。

例如,清音的过零率高,浊音的过零率低。

此外,清音和浊音的两种过零分布都与高斯分布曲线比较吻合。

2)从背景噪声中找出语音信号。

语音处理领域中的一个基本问题是,如何将一串连续的语音信号进行适当的分割,以确定每个单词语音的信号,亦即找出每个单词的开始和终止位置。

3)在孤立词的语音识别中,可利用能量和过零作为有话无话的鉴别。

02000400060008000
1000012000140001600018000
sample
采样幅度
sample
短时能量
sample
短时平均过零率
图2矩形窗条件下的短时平均过零率 时域分析方法的应用
1)基音频率的估计
首先可利用时域分析(短时能量、短时过零率、短时自相关)方法的某一个特征或某几
个特征的结合,判定某一语音有效的清音和浊音段;其次,针对浊音段,可直接利用短时自相关函数估计基音频率,其方法是:估算浊音段第一最大峰的位置,再利用抽样率计算基音频率,举例来说,若某一语音浊音段的第一最大峰值约为35个抽样点,设抽样频率为11.025KHZ,则基音频率为11025/35=315 HZ。

但是,实际上第一最大峰值位置有时并不一定与基音周期吻合。

一方面与窗长有关,另一方面还与声道特性有关。

鉴于此,可采用三电平削波法先进行预处理。

2)语音端点的检测与估计
可利用时域分析(短时能量、短时过零率、短时自相关)方法的某一个特征或某几个特征的结合,判定某一语音信号的端点,尤其在有噪声干扰时,如何准确检测语音信号的端点,这在语音处理中是富有挑战性的一个课题。

参考文献:
陈怀琛.数字信号处理教程[M].北京:电子工业出版社,2004.
程佩青.数字信号处理教程(第二版)[M].北京:清华大学出版社,2001.
韩纪庆,张磊,郑铁然.语音信号处理[M].北京:清华大学出版社,2004.
易克初,田斌,付强.语音信号处理[M].北京:国防工业出版社,2000.
周辉,董正宏.数字信号处理基础及MATLAB实现[M].北京:北京希望电子出版社,2006.
赵力.语音信号处理[M].北京机械工业出版社,1985.
短时平均过零率
a=wavread('beifeng.wav');
n=length(a);
N=320;
subplot(3,1,1),plot(a);
h=linspace(1,1,N); 均分响亮
En=conv(h,a.*a); %求卷积得其短时能量函数En
subplot(3,1,2),plot(En);
for i=1:n-1
if a(i)>=0
b(i)= 1;
else
b(i) = -1;
end
if a(i+1)>=0
b(i+1)=1;
else
b(i+1)= -1;
end
w(i)=abs(b(i+1)-b(i)); %求出每相邻两点符号的差值的绝对值
end
k=1;
while (k+N-1)<n
Zm(k)=0;
for i=0:N-1;
Zm(k)=Zm(k)+w(k+i);
end
j=j+1;
k=k+N/2; %每次移动半个窗
end
for w=1:j
Q(w)=Zm(160*(w-1)+1)/(2*N); %短时平均过零率
end
subplot(3,1,3),plot(Q),grid;
加矩形窗
a=wavread('beifeng.wav');
subplot(6,1,1),plot(a);
N=32;
for i=2:6
h=linspace(1,1,2.^(i-2)*N) %形成一个矩形窗,长度为2.^(i-2)*N En=conv(h,a.*a);% 求短时能量函数En
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');
end
end
自相关函数
N=240
Y=WAVREAD('beifeng.wav');
x=Y(13271:13510);
x=x.*rectwin(240);
R=zeros(1,240);
for k=1:240
for n=1:240-k
R(k)=R(k)+x(n)*x(n+k);
end
end
j=1:240;
plot(j,R);
grid;。

相关文档
最新文档