2016-01-08 19 views
5

Capisco i passaggi di base della creazione di un motore di riconoscimento vocale automatico. Tuttavia, ho bisogno di una chiara idea di come viene eseguita la segmentazione e quali sono i frame e i campioni. Scriverò ciò che so e mi aspetto che la risposta mi corregga nei posti in cui ho torto e mi guidi ulteriormente.Come dividere i dati vocali sui frame e calcolare MFCC

Le operazioni di base di riconoscimento vocale come io so che sono:

(sto assumendo i dati di input è un file wav/ogg (o qualche tipo di audio))

  1. Pre- enfatizza il segnale vocale: cioè, applica un filtro che metterà l'accento sui segnali ad alta frequenza. Forse qualcosa come: y [n] = x [n] - 0,95 x [n-1]
  2. Trova il tempo da cui le espressioni iniziano e ridimensionano la clip. (Intercambiabile con il passaggio 1)
  3. Segmenta la clip in intervalli di tempo più piccoli, ogni segmento ha una lunghezza di 30msec. Inoltre, ogni segmento avrà circa 256 frame e due segmenti avranno una separazione di 100 frame? (vale a dire, 30 * 100/256 msec?)
  4. Applica finestra di Hamming a ciascun frame (1/256 ° di un segmento)? Il risultato è una serie di frame di segnali.
  5. fast Fourier del segnale di ciascun frame rappresentato da X (t)
  6. Mel Filter Bank Processing: (Non ancora andato in dettaglio)
  7. Discrete Cosine Transform: (Non ancora andato in dettaglio - ma sapere che questo mi darà una serie di MFCCs, anche chiamati vettori acustiche per ogni espressione di ingresso
  8. Delta Energy e Delta Spectrum:. So che questo viene utilizzato per calcolare delta e doppie coefficienti delta di MFCCs, non molto
  9. Dopo questo. , Penso di aver bisogno di usare HMM o RNA per classificare i Coefficienti di Cepstrum di Mel Frequency (delta e double delta) ai fonemi corrispondenti ed eseguire analisi t o abbinare i fonemi alle parole e rispettivamente le parole alle frasi.

Sebbene questi siano chiari per me, sono confuso se il passaggio 3 è corretto. Se è corretto, nei passaggi successivi 3, lo applico a ciascun fotogramma? Inoltre, dopo il punto 6, penso che ogni frame abbia il proprio set di MFCC, ho ragione?

Grazie in anticipo!

+0

come costruire mfcc da un file .wav/.mp4? –

+1

@kRazzyR Non so come rispondere in un commento, ma è necessario leggere il file audio (se necessario, decomprimerlo prima) come una serie storica. Quindi applica approssimativamente i passaggi indicati in questa domanda e risposta. – cipher

+0

Ok, lo capisco. c'è un pacchetto python chiamato librosa. Sono stato in grado di generare mfcc usando 'import librosa y, sr = librosa.load ('./ data/tring/abcd.wav') mfcc = librosa.feature.mfcc (y = y, sr = sr)' –

risposta

6

Segmenta la clip in intervalli di tempo più piccoli, ogni segmento ha una lunghezza di 30msec. Inoltre, ogni segmento avrà circa 256 frame e due segmenti avranno una separazione di 100 frame? (cioè 30 * 100/256 msec?)

Non frame, ma campioni. Ogni frame di 30 ms con una frequenza di campionamento di 8 kHz è 30/1000 * 8000 = 240 campioni. I frame sono sovrapposti e lo spostamento tra i frame è di 10ms o 80 campioni. Ecco come appare sulla foto:

Signal split on frames

Qui Q è di 80 e K è di 240 campioni.

Se è corretto, nei passaggi successivi 3, lo applico a ciascun fotogramma?

Inoltre, dopo il punto 6, penso che ogni frame ha il proprio set di MFCC, ho ragione.

Sì.