语音特征参数MFCC的提取及识别
mfcc特征提取的物理意义

mfcc特征提取的物理意义摘要:一、引言二、MFCC特征提取的原理1.预处理2.帧处理3.倒谱分析三、MFCC特征提取的物理意义1.频率域分析2.谐波结构分析3.语音信号的时域特性分析四、MFCC在实际应用中的优势1.鲁棒性2.泛化能力3.高效性五、结论正文:一、引言MFCC(Mel频率倒谱系数)是一种广泛应用于语音信号处理的特征提取方法。
它通过分析语音信号的频谱特性,提取出具有较强表征能力的特征参数,为后续的语音识别、语音合成等任务提供有效的输入。
本文将从MFCC特征提取的原理、物理意义以及在实际应用中的优势三个方面进行阐述。
二、MFCC特征提取的原理1.预处理:在MFCC特征提取之前,需要对原始语音信号进行预处理,包括预加重、分帧等操作。
预加重是通过一个一阶高通滤波器改善高频段的信号能量,以提高识别性能。
分帧是将连续的语音信号划分为较短的时间段,以便对每个时间段的信号进行分析。
2.帧处理:对预处理后的语音帧进行频谱分析,得到幅度谱和相位谱。
常用的频谱分析方法有离散余弦变换(DCT)和快速傅里叶变换(FFT)。
3.倒谱分析:将得到的频谱数据进行倒谱分析,即将频谱的幅度谱沿着频率轴翻转,再进行逆FFT或逆DCT变换,得到倒谱系数。
三、MFCC特征提取的物理意义1.频率域分析:MFCC特征提取将语音信号从时域转换为频率域进行分析,有利于揭示语音信号的频谱特性,为后续处理提供有力依据。
2.谐波结构分析:MFCC在一定程度上反映了语音信号的谐波结构,谐波结构是语音信号的基本特征之一,对于语音识别具有重要意义。
3.语音信号的时域特性分析:MFCC特征提取过程中,通过预处理和帧处理操作,有效地保留了语音信号的时域特性,有利于提高识别性能。
四、MFCC在实际应用中的优势1.鲁棒性:MFCC具有较强的鲁棒性,能适应不同信噪比、不同说话人和不同语音内容的场景。
2.泛化能力:MFCC具有较好的泛化能力,可以在不同应用场景中取得较好的性能。
语音识别的特征提取方法

语音识别的特征提取方法语音识别技术是指通过计算机技术将人的语音信息转化为可识别和理解的文本或指令的过程。
而在实现语音识别的过程中,特征提取是其中至关重要的一步。
本文将介绍一些常用的语音识别特征提取方法。
1. 短时能量和过零率特征短时能量指的是在一段时间内短时信号的能量大小,它可以用来描述信号的音量大小。
过零率是信号穿过零点的次数,可以用来描述信号的频率特性。
短时能量和过零率特征可以用来区分不同音频信号的语音信息。
2. 梅尔频率倒谱系数(MFCC)MFCC被广泛应用于语音识别领域。
它首先将声音信号通过傅里叶变换转换为频域信号,然后将频域信号转换为梅尔倒谱系数。
MFCC特征具有良好的频率表示能力和语音识别性能。
3. 线性预测编码系数(LPC)LPC是一种常用的短时语音信号建模方法,通过对语音信号进行分帧处理,利用线性预测分析法得到线性预测滤波器的系数。
LPC特征可以表示语音信号中的共振特性,用于说明语音信号的声道特性。
4. 倒谱谱分析(LPCC)LPCC是在LPC基础上进一步改进的一种特征提取方法。
它通过对信号的小波包分解来提取倒谱系数,具有更好的频率表示能力和高分辨率。
5. 线性离散预测(LDA)LDA是一种经典的特征降维方法,被广泛应用于语音识别任务中。
它通过最大化类内散度和最小化类间散度的方式将高维特征映射到低维空间,以提高分类效果和减少计算复杂度。
6. 隐马尔科夫模型(HMM)HMM是一种概率模型,用于描述序列数据中的潜在状态和状态之间的转移关系。
在语音识别中,HMM被广泛用于建模语音的时域演化过程,同时结合上述特征提取方法,实现对语音信号的自动识别。
总结起来,语音识别的特征提取方法包括短时能量和过零率特征、MFCC、LPC、LPCC、LDA以及HMM等。
这些方法在实际应用中相互结合,共同构建一个准确、高效的语音识别系统。
随着深度学习等技术的发展,也出现了一些基于神经网络的特征提取方法,如深度神经网络和循环神经网络等。
华南理工大学_语音信号实验四:MFCC特征提取

华南理⼯⼤学_语⾳信号实验四:MFCC特征提取华南理⼯⼤学《语⾳信号处理》实验报告实验名称:端点检测姓名:学号:班级:11级电信7班⽇期:2014年3 ⽉1.实验⽬的1、熟练运⽤MATLAB软件进⾏语⾳信号实验;2、熟悉短时分析原理、MFCC的原理;3、学习运⽤MATLAB编程进⾏MFCC的提取;4、学会利⽤短时分析原理提取MFCC特征序列;2. 实验原理MFCC:语⾳识别和说话⼈识别中,常⽤的语⾳特征是基于Mel频率的倒谱系数(即MFCC)。
MFCC参数是将⼈⽿的听觉感知特性和语⾳的产⽣机制相结合。
Mel频率可以⽤如下公式表⽰:在实际应⽤中,MFCC倒谱系数计算过程如下;①将信号进⾏分帧,预加重和加汉明窗处理,然后进⾏短时傅⾥叶变换并得到其频谱。
②求出频谱平⽅,即能量谱,并⽤M个Mel带通滤波器进⾏滤波;由于每⼀个频带中分量的作⽤在⼈⽿中是叠加的。
因此将每个滤波器频带内的能量进⾏叠加,这时第k个滤波器输出功率谱③将每个滤波器的输出取对数,得到相应频带的对数功率谱;并进⾏反离散余弦变换,得到L个MFCC系数,⼀般L取12~16个左右。
MFCC系数为④将这种直接得到的MFCC特征作为静态特征,再将这种静态特征做⼀阶和⼆阶差分,得到相应的动态特征。
3.实验数据及平台本实验所采⽤的数据是语⾳⽂件phrase.WAV和monologue speech_female,平台是MATLAB。
4. 实验过程(步骤)(1)实验步骤①输⼊样本⾳频②给样本⾳频预加重、分帧、加窗③将处理好的样本⾳频做傅⾥叶变换④进⾏Mel频率滤波⑤进⾏Log对数能量⑥对样本求倒谱⑦输出MFCC图像(2)、MFCC提取程序流程图5. 实验结果及讨论运⾏附录程序,得到的结果为:1、采⽤语⾳⽂件phrase.WAV,得到的MFCC特征提取图像为:2、采⽤语⾳⽂件monologue speech_female.wav,得到的MFCC特征提取图像为:通过计算MFCC参数,获得了声纹识别的特征参数。
语音信号特征参数的提取

语音信号特征参数的提取摘要语音识别是指让计算机通过识别和理解把语音信号转变为具有人类听觉功能的机器,以便可以直接听懂人讲的话,并且做出相应的反应。
语音识别技术是语音信号处理领域的一项关键技术,近年来正逐步成为信息技术当中人机接口部分的关键技术,语音识别技术和语音合成技术的有机结合,使人们可以弃用键盘,通过语音命令直接进行操作。
语音识别就是利用智能设备自动识别语音信息的技术,有广义和狭义之分。
广义上是指识别出语音中对于我们“感兴趣的内容”。
狭义上的语音识别技术指的是以较高的准确率识别出语音信号所表达的意思。
关键词语音信号;语音识别;特征参数中图分类号tn912 文献标识码a 文章编号 1674-6708(2011)57-0228-021 语音学概述1.1 汉语的音素、音节和音调我们发现依据人类声音产生的机制,由于激励方式的不同会形成清音和浊音两种不同的语音。
由这两种语音又可以组合成两种不一样音素:元音及辅音。
构成语音的最小单位是音素。
元音由不相同的口腔形状发声而形成,辅音的形成由发声的部位以及发声的方法决定。
音节是构成汉语的最小单位。
我们所说的音节指的是一个元音加上一或两个辅音所构成的音素的组合。
汉语当中包括以下4种音节,即:元音、元音+辅音、辅音+元音,辅音+元音+鼻音。
一般汉语可以简单划分为声母+韵母两个部分。
音节前部分的辅音称之为声母,元音和元音后面有时候出现的鼻音称之为韵母。
汉语可认为是一种声调语言,根据声调的不同所表达的意思很可能完全不一样,汉语共有阴平、阳平、上声及去声四种声调。
而声调的变化可以看成浊音周期的变化。
声调曲线从韵母起始点至韵母的终止点。
1.2 语音信号的数学模型语音的产生是因为声道激励发生共振,因为发声过程中声道是振动的,所以能够用一个时变线性系统来描述。
可以用如图1所示描述语音生成模型。
由图1可知一个完整的语音信号模型由激励模型、声道模型、及辐射模型三个子模型串联而成。
语音识别中的语音信号预处理与特征提取优化

语音识别是人工智能领域的一个重要应用,它涉及到对语音信号的预处理和特征提取。
预处理和特征提取是语音识别中的关键步骤,它们的质量直接影响着语音识别的准确性和性能。
以下是关于语音识别中的语音信号预处理和特征提取优化的几点建议:一、语音信号预处理1. 信号采集:使用高质量的麦克风或者语音拾取设备进行语音采集,保证信号的纯净性和稳定性。
2. 噪声消除:对于来自环境或其他设备的噪声,需要进行适当的噪声消除处理。
可以使用数字滤波器、噪声掩蔽等技术进行噪声消除。
3. 采样率转换:对于不同采样率的数据,需要进行采样率转换,以保证数据的统一性和可处理性。
4. 增益控制:对语音信号的增益进行适当的控制,以保证信号的动态范围,避免过载或不足。
二、特征提取优化1. 短时傅里叶变换(STFT):STFT是一种常用的语音特征提取方法,可以将时域的语音信号转换为频域的特征向量。
通过调整窗口大小和重叠长度,可以提高特征的准确性和鲁棒性。
2. 梅尔频率倒谱系数(MFCC):MFCC是一种基于人类听觉特性的特征提取方法,它可以反映语音的纹理和情感。
通过优化MFCC的计算方法,可以提高特征的稳定性和准确性。
3. 深度学习特征:近年来,深度学习技术在语音识别领域得到了广泛应用。
通过使用深度学习模型(如卷积神经网络)对语音信号进行特征提取,可以获得更加复杂和有效的特征向量。
这些特征向量可以更好地捕捉语音的内部结构和模式。
4. 特征选择和优化:选择适合特定应用场景的特征组合,可以提高特征的准确性和性能。
同时,对特征进行适当的归一化、平滑等处理,可以提高特征的可解释性和稳定性。
三、优化流程1. 实验验证:通过实验验证不同的预处理和特征提取方法的效果,选择最适合特定应用场景的方法。
2. 参数调整:根据实验结果,对预处理和特征提取过程中的参数进行适当的调整,以提高性能。
3. 评估指标:使用准确率、召回率、F1得分等评估指标来评估语音识别的性能,并根据评估结果进行优化。
C语言音频识别音频特征提取和语音识别的方法

C语言音频识别音频特征提取和语音识别的方法C语言是一种广泛应用于计算机编程的程序设计语言,其功能强大且灵活。
在音频处理领域,C语言也被广泛用于音频特征提取和语音识别。
本文将介绍C语言中实现音频识别的方法,包括音频特征提取和语音识别。
一、音频特征提取音频特征提取是音频识别的重要一步,它将原始音频数据转换为数值特征,以供后续的语音识别算法使用。
以下是几种常用的音频特征提取方法:1. 傅里叶变换(Fourier Transform):傅里叶变换可以将时域信号转换为频域信号,通过分析不同频率的分量来提取音频特征。
在C语言中,可以使用FFT算法实现傅里叶变换。
2. 短时傅里叶变换(Short-Time Fourier Transform,STFT):STFT 是一种将音频信号分割为小片段来进行频谱分析的方法。
通过对每个时间段应用傅里叶变换,可以得到时频谱图。
C语言中可以使用窗函数来实现STFT算法。
3. Mel频率倒谱系数(Mel Frequency Cepstral Coefficients,MFCC):MFCC是一种用于音频和语音识别的特征表示方法。
它首先将音频信号应用STFT,然后对每个频率带的能量进行取对数并进行离散余弦变换,最后选择得分最高的几个系数作为特征向量。
二、语音识别在得到音频数据的特征向量后,可以使用各种机器学习算法来进行语音识别。
以下是几种常用的语音识别方法:1. 隐马尔可夫模型(Hidden Markov Model,HMM):HMM是一种常用的语音识别算法,它将语音信号视为一系列状态的序列,并通过观察发射概率和状态转移概率来计算最可能的状态序列。
在C语言中,可以使用HMM库来实现HMM算法。
2. 高斯混合模型(Gaussian Mixture Model,GMM):GMM是另一种用于语音识别的统计建模方法,它假设每个状态的概率密度函数由多个高斯分布组成。
通过最大似然估计,可以得到每个状态的高斯参数。
语音特征参数MFCC计算过程

语⾳特征参数MFCC计算过程语⾳信号为从声道输⼊的速度波(输⼊信号),与声道形状(系统)卷积得到的声压波。
语⾳信号的特征参数的提取正是对语⾳信号进⾏时域和频域的处理分离出声道形状(系统)的过程。
声道形状(系统)也正是⽆论任何语⾳信号,只要每个字母或数字相同(它的发⾳就相同),它就在⼀定程度上相同的特征参量(频域共振峰(震荡的顶点)的包络)。
过程称为倒谱分析:(频域时对信号进⾏取对数处理)时域:卷积性;->fft频域:乘积性->梅尔滤波器组->频域取对数:乘积性—>加性;频率域幅度取对数->取逆变换(傅⾥叶变换),经低通滤波器取出包络可分离出系统,取出其中2到13个参量(⼀般)作为特征向量——共振峰的包络。
见:总体过程1.信号的预处理,包括预加重(Preemphasis),分帧(Frame Blocking),加窗(Windowing)。
假设语⾳信号的采样频率fs=8KHz.由于语⾳信号在10-30ms认为是稳定的,则可设置帧长为80~240点。
帧移可以设置为帧长的1/2.2.对每⼀帧进⾏FFT变换,求频谱,进⽽求得幅度谱。
3.对幅度谱加Mel滤波器组(Mel滤波器组设计问题)。
4.对所有的滤波器输出做对数运算(Logarlithm),再进⼀步做离散余弦变换DCT可得MFCC。
⼀、预处理通信知识之预加重与去加重.预加重(Pre-emphasis):发送端对输⼊信号⾼频分量的提升。
去加重(De-emphasis) :解调后对⾼频分量的压低。
⼝唇辐射:声压波/速度波帧长:⼀帧所具有的采样点数。
帧与帧的⾮重叠部分称为帧移1.预加重:研究表明,⼝唇辐射在⾼频段⽐较明显,在低频段影响较⼩,辐射引起的能量损耗正⽐于辐射阻抗的实部,所以辐射模型R(z)应是⼀阶类⾼通滤波的形式,可以表⽰为:R(z) = R0(1-z^-1),它是⼀阶后向差分。
在语⾳合成时,再进⾏“去加重”处理,就可以恢复原来的语⾳。
mfcc 离散余弦变换

mfcc 离散余弦变换
MFCC,即Mel频率倒谱系数,是一种语音特征参数,常用于语音识别和语音编码等领域。
而离散余弦变换(DCT)是一种常用的信号处理技术,用于对信号进行有损数据压缩。
在语音信号处理中,DCT可以用于提取MFCC特征参数。
具体的实现过程是:首先对语音信号进行预加重和分帧处理,然后进行加窗操作,接着计算每个帧的离散余弦变换,得到DCT系数,最后对这些系数进行取对数、离散化和归一化处理,得到MFCC特征参数。
MFCC特征参数具有较好的稳定性和鲁棒性,能够有效地描述语音信号的韵律和音色等特征,因此在语音识别、语音合成、说话人识别等领域得到了广泛应用。
而离散余弦变换作为一种高效的信号处理技术,也广泛应用于信号压缩和特征提取等领域。
MFCC(Mel频率倒谱系数)和DCT(离散余弦变换)是两种不同的语音特征提取方法,它们在语音处理领域中都有应用。
MFCC主要用于语音识别和语音编码,通过将语音信号转化为频谱图,提取出与人类语音感知相关的特征参数,如音高、音强、共振峰等。
MFCC的优点在于能够有效地描述语音信号的韵律和音色等特征,并且在处理过程中相对稳定,抗干扰能力强。
DCT则是一种用于信号压缩和特征提取的常用技术,通过将信号从时域变换到频域,提取出信号中的主要成分和能量,从而实现数据压缩。
在语音处理中,DCT可以用于提取语音信号中的频率特征,如共振峰等。
DCT的优点在于其算法简单、快速,且在数据压缩方面效果较好。
总之,MFCC和DCT是两种不同的语音特征提取方法,MFCC 更适用于语音识别和语音编码,而DCT更适用于信号压缩和特征提取。
在实际应用中,可以根据具体需求选择合适的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语音特征参数MFCC的提取及识别耳蜗实质上相当于一个滤波器组,耳蜗的滤波作用是在对数频率尺度上进行的,在1000HZ下,人耳的感知能力与频率成线性关系;而在1000HZ以上,人耳的感知能力与频率不构成线性关系,而更偏向于对数关系,这就使得人耳对低频信号比高频信号更敏感。
Mel频率的提出是为了方便人耳对不同频率语音的感知特性的研究。
频率与Mel频率的转换公式为:MFCC在一定程度上模拟了人耳对语音的处理特点,应用了人耳听觉感知方面的研究成果,采用这种技术语音识别系统的性能有一定提高。
MFCC参数的提取1、预加重处理预加重处理其实是一个高通滤波器,该高通滤波顺的传递函数为:其中的取值为0.97,该高通滤波器作用是滤去低频,使语音信号的高频特性更加突现。
2、分帧及加窗处理由于语音信号只在较短的时间内呈现平稳性(一般认为10-30ms),因此将语音信号划分为一个一个的短时段即一帧。
同时为避免丢失语音信号的动态信息,相邻帧之间要有一段重叠区域,重叠区域一段为帧长的1/2或1/3。
然后再将每帧乘上窗函数,以增加每帧左端和右端的连续性。
3、各帧信号的FFT变换对分帧加窗后的各帧信号进行FFT变换得到各帧的频谱。
并对语音信号的频谱取模平方得到语音信号的功率谱。
4、三角滤波器系数的求取定义若干个带通三角滤波器(k),0<=m<=M,M为滤波器个数,其中心频率为f(m),每个带通三角滤波器的频率响应为且满足Mel(f(m))-Mel(f(m-1))=Mel(f(m+1))-Mel(f(m))求得滤波系数为m(i),i=1,…,p,p为滤波器阶数5、三角滤波并进行离散余弦变换DCTC(i)即为所要求提取的特征参数。
特征参数的识别特征参数的识别主要采用BP神经网络算法进行预测,而在预测前需要用一定数量的样本对网络进行训练,使网络具有联想记忆和预测能力。
网络训练步骤如下:(1)网络初始化。
确定网络输入层、隐层、输出层数目,输出层到隐层的连接权值及隐层到输出层的连接权值,同时初始化隐层阈值a和输出层阈值b;(2)隐层的输出计算。
隐层输出式中,l为隐含层节点数;f为隐含层激励函数,本实验选取函数为:(3)输出层输出计算。
根据隐含层输出H,连接权值和阈值b,计算BP神经网络预测输出O.(4)误差计算。
根据网络预测输出O和期望输出Y,计算网络预测误差e.(5)权值更新。
根据网络预测误差e更新网络连接权值,其中,为学习速率。
(6)阈值更新。
根据网络预测误差e更新网络节点阈值a,b. (7)判断算法迭代是否结束,若没有结束,返回步骤(2)。
BP神经网络分类用训练好的BP神经网络分类语音特征信号,根据分类结果分析BP神经网络分类能力。
将四种音乐风格的数据各1500组共6000组MEL特征数据随机抽取4000组进行训练网络,剩下的2000组特征向量进行辨识,得到各类风格的正确率如下:rightridio =1.00000.92610.91290.8399下图为BP网络误差:MATLAB程序如下:clear;clc;%%%%%%%%采集的四种音乐各500000个数据%%%%%%%%%%%%%%%%%%%%%load f:\课程\voice_reco\c1 x1load f:\课程\voice_reco\c2 x2load f:\课程\voice_reco\c3 x3load f:\课程\voice_reco\c4 x4%%%%%%%%%%%%%%%对语音信号进行预加重处理%%%%%%%%%%%%%%%%%%len=length(x1);heigt=0.98;for i=2:lenx1(i)=x1(i)-heigt*x1(i-1); endfor i=2:lenx2(i)=x2(i)-heigt*x2(i-1); endfor i=2:lenx3(i)=x3(i)-heigt*x3(i-1);endfor i=2:lenx4(i)=x4(i)-heigt*x4(i-1);end%%%%%%%%%%%%%%MEL三角滤波参数%%%%%%%%%%%%%%%%%%%%%%%%%%%fh=20000;melf=2595*log(1+fh/700);M=24;i=0:25;f=700*(exp(melf/2595*i/(M+1))-1);N=256;for m=1:24fork=1:256x=fh*k/N;if (f(m)<=x)&&(x<=f(m+1))F(m,k)=(x-f(m))/(f(m+1)-f(m));else if (f(m+1)<=x)&&(x<=f(m+2))F(m,k)=(f(m+2)-x)/(f(m+2)-f(m+1)); elseF(m,k)=0;endendendendm=N/2;for k=1:12n=0:23;dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));endcount=floor(length(x1)/m);%%%%%%%%%%%%%%%四种语音的特征参数的求取%%%%%%%%%%%c1=zeros(count,12);for i=1:count-2x_frame=x1(m*(i-1)+1:m*(i-1)+N);Fx=abs(fft(x_frame));s=log(Fx.^2*F');c1(i,:)=s*dctcoef';endc1=zeros(count,12);for i=1:count-2x_frame=x2(m*(i-1)+1:m*(i-1)+N); Fx=abs(fft(x_frame));s=log(Fx.^2*F');c2(i,:)=s*dctcoef';endc3=zeros(count,12);for i=1:count-2x_frame=x3(m*(i-1)+1:m*(i-1)+N); Fx=abs(fft(x_frame));s=log(Fx.^2*F');c3(i,:)=s*dctcoef';endc4=zeros(count,12);for i=1:count-2x_frame=x4(m*(i-1)+1:m*(i-1)+N); Fx=abs(fft(x_frame));s=log(Fx.^2*F');c4(i,:)=s*dctcoef';end%save c1 c1%save c2 c2%save c3 c3%save c4 c5%四个特征信号矩阵合成一个矩阵data(1:1500,:)=c1(1:1500,:);data(1501:3000,:)=c2(1:1500,:);data(3001:4500,:)=c3(1:1500,:);data(4501:6000,:)=c4(1:1500,:);%%%%%%%%%%%特征信号第一列为所属类别%%%%%%%%%%%%%%for i=1:6000if(i>=1)&&(i<=1500)data(i,1)=1;elseif(i>=501)&&(i<=3000)data(i,1)=2;else if (i>=1001)&&(i<=4500) data(i,1)=3;elsedata(i,1)=4;endendendend%从1到2000间随机排序k=rand(1,6000);[m,n]=sort(k);%输入输出数据input=data(:,2:12);output1 =data(:,1);%把输出从1维变成4维for i=1:6000switchoutput1(i)case 1output(i,:)=[1 0 0 0]; case 2output(i,:)=[0 1 0 0];case 3output(i,:)=[0 0 1 0];case 4output(i,:)=[0 0 0 1];endend%随机提取1500个样本为训练样本,500个样本为预测样本input_train=input(n(1:4000),:)';output_train=output(n(1:4000),:)';input_test=input(n(4001:6000),:)';output_test=output(n(4001:6000),:)';%输入数据归一化[inputn,inputps]=mapminmax(input_train); %% 网络结构初始化innum=11;midnum=12;outnum=4;%权值初始化w1=rands(midnum,innum); b1=rands(midnum,1);w2=rands(midnum,outnum); b2=rands(outnum,1);w2_1=w2;w2_2=w2_1;w1_1=w1;w1_2=w1_1;b1_1=b1;b1_2=b1_1;b2_1=b2;b2_2=b2_1;%学习率xite=0.1;alfa=0.01;%% 网络训练for ii=1:10E(ii)=0;fori=1:1:4000%% 网络预测输出x=inputn(:,i);% 隐含层输出for j=1:1:midnumI(j)=inputn(:,i)'*w1(j,:)'+b1(j); Iout(j)=1/(1+exp(-I(j)));end% 输出层输出yn=w2'*Iout'+b2;%% 权值阀值修正%计算误差e=output_train(:,i)-yn; E(ii)=E(ii)+sum(abs(e)); %计算权值变化率dw2=e*Iout;db2=e';for j=1:1:midnum S=1/(1+exp(-I(j))); FI(j)=S*(1-S); endfor k=1:1:innum for j=1:1:midnumdw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+ e(4)*w2(j,4));db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2 (j,4));endendw1=w1_1+xite*dw1';b1=b1_1+xite*db1';w2=w2_1+xite*dw2'; b2=b2_1+xite*db2';w1_2=w1_1;w1_1=w1; w2_2=w2_1;w2_1=w2; b1_2=b1_1;b1_1=b1; b2_2=b2_1;b2_1=b2;endend%% 语音特征信号分类inputn_test=mapminmax('apply',input_test,inputps); for ii=1:1fori=1:200000%隐含层输出for j=1:1:midnumI(j)=inputn_test(:,i)'*w1(j,:)'+b1(j); Iout(j)=1/(1+exp(-I(j)));endfore(:,i)=w2'*Iout'+b2;endend%% 结果分析%根据网络输出找出数据属于哪类for i=1:2000output_fore(i)=find(fore(:,i)==max(fore(:,i))); end%BP网络预测误差error=output_fore-output1(n(4001:6000))';%画出预测语音种类和实际语音种类的分类图figure(1)plot(output_fore,'r')hold onplot(output1(n(4001:6000))','b') legend('预测语音类别','实际语音类别') %画出误差图figure(2)plot(error)title('BP网络分类误差','fontsize',12) xlabel('语音信号','fontsize',12)ylabel('分类误差','fontsize',12)%print -dtiff -r600 1-4k=zeros(1,4);%找出判断错误的分类属于哪一类for i=1:2000iferror(i)~=0[b,c]=max(output_test(:,i));switch ccase 1k(1)=k(1)+1;case 2k(2)=k(2)+1; case 3k(3)=k(3)+1; case 4k(4)=k(4)+1; endendend%找出每类的个体和kk=zeros(1,4);for i=1:2000[b,c]=max(output_test(:,i));switchccase 1kk(1)=kk(1)+1;case 2kk(2)=kk(2)+1; case 3kk(3)=kk(3)+1; case 4kk(4)=kk(4)+1;endend%正确率rightridio=(kk-k)./kk。