针对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,欢迎大家指点批评
Python实现BP网络并进行语音识别(四)
文章作者:Ltengy
发布时间:2019年06月09日 - 20时45分
最后更新:2019年07月10日 - 10时39分
原始链接:https://ltengy.github.io/2019/06/09/Python实现BP网络并进行语音识别(四)/
许可协议: "署名-非商用-相同方式共享 3.0" 转载请保留原文链接及作者。
Python实现BP网络并进行语音识别(一)
Python实现BP网络并进行语音识别(三)
>