Python实现BP网络并进行语音识别(四)

针对BP网络模型只适合固定大小的输入,我们对音频信号的MFCC系数进行二次特征提取,即从数百帧MFCC中提取出特征最大值,作为输入BP网络的信号。
由于简单三层网络,可能会存在学习能力不强的情况。一开始我设计了一个20,100,3的网络,保证对MFCC系数的充分学习。模型在训练了200轮后顺利达到了$\left(0.99,0.99\right)$,训练集和验证集为$\left(0.8,0.2\right)$,总样本数量为697。训练结果说明MFCC可以提供独特的特征进行人声识别。但是在训练的过程中,我发现,训练结果准确率在195轮到200轮之间有一个飞速上涨的过程,平均每轮上涨8%。我怀疑是数据分布太相似,导致准确率最后才上升。
为了验证我的假设,我训练了多组模型,发现准确率到达95%的轮次和隐藏层节点的个数成正比,与数据分布比例成反比。
由分析可以知道,MFCC系数对音频特征的表征能力非常强,仅需要利用简单BP网络在极少次的训练下就可以取得非常好的效果。
综上所述,在提取音频MFCC特征最大值系数后,BP网络仅需要$\left(20,3,3\right)$三层网络结构实现通过音频信号实现三个人的识别。
代码Demo已经上传Github,欢迎大家指点批评

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,