self.train_ler_op =tf.summary.scalar("train_label_error_rate", self.ler_placeholder) self.dev_ler_op =tf.summary.scalar("validation_label_error_rate", self.ler_placeholder) self.test_ler_op =tf.summary.scalar("test_label_error_rate", self.ler_placeholder) 如何改进 RNN 现在我们构建了一个简单的 LSTM RNN 网络,下一个问题是:如何继续改进它?幸运的是,在开源社区里,很多大公司都开源了自己的最新语音识别模型。在 2016 年 9 月,微软的论文《The Microsoft 2016 Conversational Speech Recognition System》展示了在 NIST 200 Switchboard 数据中单系统残差网络错误率 6.9% 的新方式。他们在卷积+循环神经网络上使用了几种不同的声学和语言模型。微软的团队和其他研究人员在过去 4 年中做出的主要改进包括: 在基于字符的 RNN 上使用语言模型 使用卷积神经网络(CNN)从音频中获取特征 使用多个 RNN 模型组合 值得注意的是,在过去几十年里传统语音识别模型获得的研究成果,在目前的深度学习语音识别模型中仍然扮演着自己的角色。 修改自: A Historical Perspective of Speech Recognition, Xuedong Huang, James Baker, Raj Reddy Communications of the ACM, Vol. 57 No. 1, Pages 94-103, 2014 训练你的第一个 RNN 模型 在本教程的 Github 里,作者提供了一些介绍以帮助读者在 TensorFlow 中使用 RNN 和 CTC 损失函数训练端到端语音识别系统。大部分事例数据来自 LibriVox。数据被分别存放于以下文件夹中: Train: train-clean-100-wav (5 examples) Test: test-clean-wav (2 examples) Dev: dev-clean-wav (2 examples) 当训练这些示例数据时,你会很快注意到训练数据的词错率(WER)会产生过拟合,而在测试和开发集中词错率则有 85% 左右。词错率不是 100% 的原因在于每个字母有 29 种可能性(a-z、逗号、空格和空白),神经网络很快就能学会: 某些字符(e,a,空格,r,atv直播,s,t)比其他的更常见 辅音-元音-辅音是英文的构词特征 MFCC 输入声音信号振幅特征的增加只与字母 a-z 有关 使用 Github 中默认设置的训练结果如下: 如果你想训练一个更强大的模型,你可以添加额外的.wav 和.txt 文件到这些文件夹里,或创建一个新的文件夹,并更新 configs / neural_network.ini 的文件夹位置。注意:几百小时的音频也需要大量时间来进行训练,即使你有一块强大的 GPU。 原文链接:https://svds.com/tensorflow-rnn-tutorial/ 本文为机器之心编译,转载请联系本公众号获得授权。 ?------------------------------------------------ 加入机器之心(全职记者/实习生):[email protected] 投稿或寻求报道:[email protected] 广告&商务合作:[email protected] (责任编辑:本港台直播) |