Esistono molte implementazioni esistenti, ad esempio Tensorflow Implementation, Kaldi-focused implementation with all the scripts, è meglio verificarle prima.
Theano è troppo basso, si potrebbe provare con keras invece, come descritto in tutorial. È possibile eseguire il tutorial "così com'è" per capire come vanno le cose.
Quindi, è necessario preparare un set di dati. È necessario convertire i dati in sequenze di frame di dati e per ogni frame di dati in sequenza è necessario assegnare un'etichetta di output.
Keras supporta due tipi di RNN: i livelli restituiscono sequenze e livelli restituiscono valori semplici. Puoi provare con entrambi, nel codice devi semplicemente usare return_sequences=True
o return_sequences=False
Per allenarti con sequenze puoi assegnare un'etichetta fittizia per tutti i fotogrammi eccetto l'ultima in cui puoi assegnare l'etichetta della parola che vuoi riconoscere. È necessario posizionare le etichette di input e output sugli array. Così sarà:
X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]
Y = [[0,0,...,1], [0,0,....,2]]
In X ogni elemento è un vettore di 13 galleggianti. In Y ogni elemento è solo un numero - 0 per i fotogrammi intermedi e l'ID parola per il fotogramma finale.
Per addestrare con solo etichette è necessario posizionare le etichette di input e output sugli array e l'array di output è più semplice. Quindi, i dati saranno:
X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]
Y = [[0,0,1], [0,1,0]]
Nota che la produzione è vettorializzare (np_utils.to_categorical) per trasformarlo a vettori, invece di solo numeri.
Quindi si crea l'architettura di rete. Puoi avere 13 float per l'input, un vettore per l'output. Nel mezzo potresti avere uno strato completamente connesso seguito da un livello lstm. Non usare strati troppo grandi, inizia con quelli piccoli.
Quindi si alimenta questo set di dati in model.fit
e si allena il modello. È possibile stimare la qualità del modello sul set di prova dopo l'allenamento.
Avrete un problema con la convergenza dato che avete solo 20 esempi. Avete bisogno di ulteriori esempi, preferibilmente di migliaia per addestrare LSTM, sarete in grado di utilizzare solo modelli molto piccoli.
Ehi, grazie per la guida. Conosci un set di dati che ha come 100 saluti e registrati? –
Qui puoi scaricare un database di cifre isolate: http://www.ece.ucsb.edu/Faculty/Rabiner/ece259/speech%20recognition%20course.html, ci sono circa 200 campioni per ogni cifra –
Quindi se lo sono andando ad applicare questo metodo per i numeri (non binari) possiamo chiamarlo riconoscimento vocale? – udani