====== Appunti su Sphinx2 ====== ==== Descrizione ==== Sphinx2 non è un programma immediatamente utilizzabile, ma un insieme di funzioni che permettono di realizzare sistemi di riconoscimento vocale. Ogni programma che utilizza le librerie Sphinx2 all'avvio deve ottenere alcune informazioni: * un Dizionario delle parole (file.dic): ad ogni parola corrisponde una sequenza di fonemi. * un Modello Acustico (MA) (es: tipo semicontinuo) generato dal trainer per ogni lingua, contiene le statistiche dei fonemi di ogni lingua ed è costituito da alcuni(?) dei seguenti tipi di file: .vec .var .ccode .d2code .p3code .xcode .chmm * il trainer genera un MA in formato Sphinx3 che deve essere convertito per Sphinx2 * un Modello di Lingua (ML) (file.lm): combina (di solito) tre fonemi alla volta (trigrammi) a formare le stesse parole del Dizionario. Il vocabolario delle parole riconoscibili è dato dall'intersezione del Dizionario e del Modello di Lingua. Ogni pronuncia (parola o frase) può durare solo 60 sec. Sphinx2 può essere usato in 2 modalità: * batch-mode * live-mode Ognuna delle quali può decodificare con due tecniche * time-aling (disponibile solo in batch mode) * allphone (disponibile solo per file audio?) ==== Il comando (live-mode) ==== questo comando funziona ma riconosce solo il 10% delle parole sphinx2-demo questo non funziona bene sphinx2-continuous \ -dictfn model/lm/turtle/turtle.dic \ -lmfn model/lm/turtle/turtle.lm \ -cbdir model/hmm/6k \ -hmmdir model/hmm/6k \ -hmmdirlist model/hmm/6k \ -ndictfn model/hmm/6k/noisedict \ -phnfn model/hmm/6k/phone \ -mapfn model/hmm/6k/map -live \ -agcemax TRUE \ -normmean FALSE \ -topsenfrm 4 \ -topsenthresh -80000 \ -fwdflat FALSE \ -bestpath FALSE \ -top 1 \ -fillpen 1e-10 \ -nwpen 0.01 \ -silpen 0.005 \ -inspen 0.65 \ -langwt 6.5 \ -ugwt 0.7 \ -rescorelw 9.5 \ -kbdumpdir /usr/share/sphinx2/model/lm/turtle \ -oovdictfn /usr/share/sphinx2/model/lm/turtle/turtle.handdict \ -oovugprob -4.5 \ -8bsen TRUE \ -sendumpfn /usr/share/sphinx2/model/hmm/6k/sendump ==== Le API ==== Ci sono 3 tipi di API, ogni tipo possiede un diverso livello di astrazione: * per l'accesso diretto all'hardware (raw audio access) * per l'ascolto continuo filtrato dai silenzi (continuous listening/silence filtering) * il programma decoder (the core decoder itself) * fbs_init() specifica i modelli e gli argomenti necessari all'inizializzazione del decoder * fbs_end() chiude l'aplicazione e ripulisce