基于神经网络的实时语音激活(二)(附四层神经网络源码,识别率0.96左右)

由于大部分的音频数据库采用的是16000的采样率,因此以下的所有方法均针对16000的采样率,这里推荐一位前辈的博客,实测效果不错,连数据集都已经准备好了
[python+keras实现语音识别]
直接导入16000个点(数据库里面本身就是一秒的音频,非常方便,而且也没有0之内的)
效果还不错,但是作者应该是没有使用MFCC的特征表达,就是做了一些正数化的预处理。
本人使用的平台是RK3399pro,所以还是得用pb模型,就用tensorflow重新写了一遍(这里我还是抱有怀疑,毕竟参数越多,过拟合越严重,这个模型的效果拿到别的地方去很有可能非常差,仅仅是本文作者的猜测)
附上链接如下,包括测试,直接在github里面下载即可(使用的还是那个数据库)
[[python+tensorflow四层网络语音识别]]
但是,既然音频的长度为16000,就意味着不是实时的了,对音频的处理最多不可以超过200ms,除去杂七杂八的运行时间,那么每段输入音频的时间就只剩下50ms左右,50ms左右的特征点就不是很足了,要在多种噪音环境下把人声给识别出来,得另外想一个办法,比如MFCC和他的一阶差分二阶差分。
或者我可以试试其他的网络来解决这个问题(http://colah.github.io/posts/2015-08-Understanding-LSTMs/),从两个方向去研究
我到现在还有些概念没有弄清楚,特在此留下笔记:
batchsize:中文翻译为批大小(批尺寸)。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
iteration:中文翻译为迭代,1个iteration等于使用batchsize个样本训练一次;
一个迭代 = 一个正向通过+一个反向通过
epoch:迭代次数,1个epoch等于使用训练集中的全部样本训练一次;
一个epoch = 所有训练样本的一个正向传递和一个反向传递
举个例子,训练集有1000个样本,batchsize=10,那么:
训练完整个样本集需要:
100次iteration,1次epoch。

你可能感兴趣的:(随笔流水账)