2010-02-16 8 views
5

Ho problemi a determinare da this research paper esattamente come è possibile riprodurre l'algoritmo di Quantizzazione vettoriale standard per determinare la lingua di un input vocale non identificato, in base a un set di dati di addestramento. Ecco alcune informazioni di base:Quantizzazione vettoriale in elaborazione vocale Spiegazione

astratta informazioni riconoscimento lingua (ad esempio giapponese, inglese, tedesco, ecc) utilizzando le funzionalità acustiche è un problema ancora difficile importante per la corrente discorso tecnologia. ... Il database vocale utilizzato in questo documento contiene 20 lingue: 16 frasi pronunciate due volte da 4 maschi e 4 femmine. La durata di ciascuna frase è di circa 8 secondi. Il primo algoritmo si basa sulla tecnica di quantizzazione vettoriale (VQ) standard. Ogni lingua è caratterizzata dallo dal proprio codice VQ, alt text.

Algoritmi di riconoscimento Il primo algoritmo si basa sulla tecnica di Vector Quantization (VQ) standard. Ogni lingua, k, è caratterizzata da un proprio codice VQ, alt text. Nella fase di riconoscimento, la voce di input viene quantizzata da alt text e viene calcolata la distorsione di quantizzazione accumulata, d_k. Il linguaggio riconosciuto come distorsione minima. Calcolando la distorsione VQ, vengono applicate diverse misure di distorsione dello spettro LPC ... in questo caso, il rapporto inferiore ponderato WLR - distanza: http://tinyurl.com/yc52gcl.

VQ algoritmo standard: un codebook, alt text http://tinyurl.com/y8csx6e, per ogni lingua viene generata utilizzando frasi di formazione. La distanza accumulata nel vettore di ingresso frase, alt text, è definito come: alt text http://tinyurl.com/ybynjc2

la distanza d può essere qualsiasi distanza che corrisponde alle caratteristiche acustiche e deve essere uguale a quello utilizzato per la generazione del vocabolario. Ogni lingua è caratterizzata dal suo codice VQ, alt text.

La mia domanda è: esattamente come lo faccio? Ho un set di 50 frasi in inglese. In MATLAB, posso facilmente calcolare il WLR per ogni dato segnale. Ma, come faccio a formulare un libro di codici, dal momento che devo usare il WLR per "generazione di codebook" per l'inglese. Sono anche curioso di come confrontare un codice VQ di dimensioni 16 (che è stato trovato per essere la dimensione migliore), per un dato segnale di input. Se qualcuno potesse aiutare a distillare questo foglio per me, lo apprezzerei molto.

Grazie!

risposta

1

La seconda domanda (confrontare il libro di codici con il segnale fornito) è più semplice: per ogni voce di libro di codici V_k_j è necessario calcolare la distanza d con il segnale di ingresso. La "j" con la più piccola distanza "d" corrisponderà alla voce di un libro di codici più adatto. Come funzione di distanza è possibile utilizzare WLR

La compilazione del codebook (trainig) è un po 'più complicata. Devi dividere le tue frasi in vettori con lunghezza N (16) e poi usare un algoritmo di clustering (come k-means) per raggruppare questi vettori. Quindi trova la media in ogni gruppo. Questo significa e sarà la voce del libro di codici. È una cosa che ti viene in mente.

Un altro algoritmo (credo, sarà migliore) può essere trovato here. Inoltre, due semplici algoritmi di addestramento sono descritti in Wikipedia