有许多现有的实施例如Tensorflow Implementation,Kaldi-focused implementation with all the scripts,最好先检查它们。
Theano太低级别,您可以使用keras来代替,如tutorial中所述。您可以运行教程“按原样”来了解事情进展情况。
然后,你需要准备一个数据集。您需要将数据转换为数据帧序列,并按顺序为每个数据帧分配一个输出标签。
Keras支持两种类型的RNN--层返回序列和返回简单值的图层。您可以使用两种方法进行试验return_sequences=True
或return_sequences=False
要使用序列进行训练,您可以为除了最后一个可以分配要识别的单词的标签的最后一个帧以外的所有帧分配虚拟标签。您需要将输入和输出标签放置到数组中。所以它会是:
X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]
Y = [[0,0,...,1], [0,0,....,2]]
在X中,每个元素都是一个13个浮点数的向量。在Y中,每个元素只是一个数字 - 0表示中间帧,最后一帧表示单词ID。
要用标签进行训练,您需要将输入和输出标签放置到数组中,并且输出数组更简单。因此,该数据将是:
X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]
Y = [[0,0,1], [0,1,0]]
需要注意的是输出矢量(np_utils.to_categorical)将其变成载体,而不仅仅是数量。
然后您创建网络体系结构。你可以有13个浮点数输入,一个矢量输出。在中间你可能有一个完全连接的层,接着是一个lstm层。不要使用太多的图层,从小的图层开始。
然后,您将此数据集输入到model.fit
中,它将训练您的模型。您可以在训练结束后估算模型的质量。
由于您只有20个示例,因此您将遇到融合问题。你需要更多的示例,最好是数千个训练LSTM,你只能使用非常小的模型。
嘿,谢谢你的指导。你知道任何有100个问候和再见记录的数据集吗? –
你可以在这里下载一个隔离数字的数据库:http://www.ece.ucsb.edu/Faculty/Rabiner/ece259/speech%20recognition%20course.html,每个数字大约有200个样本 –
所以如果我是要将这种方法应用于数字(不是二进制),我们可以称之为语音识别? – udani