基于TensorFlow的RNN语音识别
我还没有成功地使用TensorFlow训练RNN解决语音到文本的问题。我已决定使用纯FFT(即频谱图)作为训练数据,以再现中所述方法的结果,并用300个LSTM单元对3层双向RNN进行编码。我想描述一下从预处理音频信号到解码logits的步骤 预处理:基于TensorFlow的RNN语音识别,tensorflow,speech-recognition,speech-to-text,lstm,recurrent-neural-network,Tensorflow,Speech Recognition,Speech To Text,Lstm,Recurrent Neural Network,我还没有成功地使用TensorFlow训练RNN解决语音到文本的问题。我已决定使用纯FFT(即频谱图)作为训练数据,以再现中所述方法的结果,并用300个LSTM单元对3层双向RNN进行编码。我想描述一下从预处理音频信号到解码logits的步骤 预处理: 使用来自的specgram函数将时域中的每个音频信号分割为20ms的帧,NFFT=(fs/1000*20个采样)长度,并以7ms的重叠执行加窗和FFT 我最初尝试计算功率谱ps | fft | ^2,并通过10*log10(ps)计算dB,但Te
ps | fft | ^2
,并通过10*log10(ps)
计算dB,但TensorFlow CTC损耗函数产生nan值,并且优化器进一步将所有参数更新为nan,因此我没有进一步使用该函数形状[max_time,batch,NFFT]
的小批次
隐藏大小500
tf.nn.bidirectional\u dynamic\u rnn
不包括输出层sigmoid或softmax
,因此我执行一个线性回归,其外部权重将为shape=[隐藏的大小,n个字符]
tf.nn.ctc\u loss
,它最初返回650或700这样的大值,经过几百个时代后,最大值下降到500softmax或sigmoid
层生成的logits中找到最佳路径感谢您的时间和支持。如果您想尝试此功能,最好复制
如果您仍然需要tensorflow,可以在中找到完整的。有许多参数可供使用。我发现具有高动量(大于
0.99
)的momentum
优化器往往工作得很好。其他人发现,批处理会导致问题,应该使用较小的批处理大小
无论哪种方式,这些模型的收敛都需要很长时间。您可以在以下位置看到TensorFlow的工作示例(使用玩具数据集):
请随意使用 我使用的是小批量:100,总共有47K个音频剪辑,我需要训练。在这种情况下,您会推荐什么样的最小批量?您必须进行实验。有些人发誓你应该使用1号批次,否则梯度会被搞混。其他的使用接近64-128。一般来说,批量大小的二次幂导致计算速度稍快(但这与您的问题无关)。由于您没有太多的数据,我建议使用Momentum或RMSProp优化器,将Momentum参数在0.9、0.95、0.99之间更改,然后尝试批量大小为1、8、64和128。非常感谢您提供代码链接。我会马上研究它。我相信我们有几乎相同的代码,但收敛速度太慢,尤其是47K数据。链接:请看你是否也能回答这个问题。非常感谢。