有許多現有的實施例如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