cerinţe
echipament
Sfinxul este o aplicație foarte intensivă și necesită hardware modern și destul de productiv. Pentru a funcționa în mod satisfăcător, aplicația necesită o mulțime de memorie RAM, deci este recomandat să rulați Sphinx pe un PC cu un procesor nu mai mic decât Intel® Pentium® 4 și cel puțin 1 GB de RAM. În același timp, procesarea textului este mult mai puțin intensivă pentru resurse, astfel încât să puteți rula în condiții de siguranță în paralel cu recunoașterea vorbirii pe același PC fără a pierde performanța pentru acesta din urmă.
software-ul
Aplicațiile care vor fi create în timpul acestui articol pot fi executate pe platforme Linux® sau Microsoft® Windows®. Pentru Sphinx-4, aveți nevoie de cea mai recentă versiune a JDK și Apache Ant pentru a crea un handler de gramatică personalizat. Veți avea nevoie, de asemenea, Perl și modulele de căutare corespunzătoare (alese la discreția dvs.). Pentru linkuri către informații suplimentare despre pachetele software menționate, precum și linkuri pentru descărcarea acestor pachete, consultați Resurse.
Instalarea Sphinx-4
În cadrul proiectului Sphinx, sunt create diferite pachete pentru diverse sarcini de recunoaștere a vorbirii. Acest articol utilizează pachetul Sphinx-4, cel mai convenabil dintre cele mai recente versiuni pentru utilizatori și dezvoltatori. Instalarea Sphinx-4 poate părea un pic complicată, deci iată pașii de bază ai ghidului de instalare.
- Descărcați și dezarhivați Apache Ant.
- Descărcați și dezarhivați Sun JDK (la data acestei scrieri, cea mai recentă versiune a fost 1.6.0_02).
- Descărcați și dezarhivați pachetul cu codul sursă Sphinx-4, deoarece vom modifica unul dintre programele demo pentru a se potrivi obiectivelor noastre.
- Setați variabilele de mediu cu următoarele comenzi:
În Windows, este posibil să fie necesar să setați variabile de mediu în Panoul de control> Sistem> Instrumente avansate> Variabile de mediu. - Accesați directorul "sphinx4-beta", apoi în subdirectorul "lib".
- Activați licența binară JSAPI executând scriptul shell jsapi.sh. Sphinx-4 suportă JSAPI cu licență binară, deci va trebui să acceptați acordul de licență.
- Este posibil să fie necesar să instalați uudecode pentru a decomprima componentele necesare pentru JSAPI. Cele mai multe distribuții Linux includ un pachet care conține uudecode oricum, așa că verificați mai întâi pachetele disponibile dacă este necesar uudecode. În Windows, faceți dublu clic pe fișierul jsapi.exe și acceptați acordul de licență.
- Reveniți la directorul rădăcină al Sphinx4.
- Rulați comanda ant. procesul de asamblare ar trebui să înceapă.
Mesajul de stare "BUILD SUCCESSFUL" indică faptul că mediul a fost configurat cu succes și puteți trece la etapele de modificare. Dacă este afișat un alt mesaj, verificați setările directorului de asamblare și variabilele de mediu sau consultați manualele Apache Ant și Sphinx-4 pentru instrucțiuni detaliate de instalare pentru mediul dvs.
Strategia de recunoaștere a literelor și a numerelor, independentă de vorbitor în discurs
Se pare întotdeauna că tehnologia de recunoaștere a vocii este lăsată de la 2 la 10 ani la o recunoaștere de succes vorbitor independent un discurs de vocabular mare. Adnotați o conversație cu o mulțime de voturi, cu discursul simultană, accente diferite și numeroase expresii tehnice și colocviale - o problemă aproape de nerezolvat pentru orice clasă de consum software disponibil pe piață. Cu toate acestea, saci Sphinx, și, în special, Sphinx-4 oferă toate opțiunile necesare pentru a detecta în mod fiabil de vocabular mic (dar încă util), fără a face referire la difuzor.
Am definit deja vocabularul nostru limitat: literele alfabetului englez A-Z și numerele 0-9. Strategia noastră este doar de a evidenția zonele în care aceste litere sau numere au fost pronunțate. Denumirea generală pentru această abordare este alegerea cuvintelor. Deși Sphinx-4 în prezent nu acceptă evidențierea cuvintelor, putem obține în continuare rezultate utile prin verificarea fiecărei combinații pronunțate pentru a se potrivi cel puțin un cuvânt din gramatică. Apoi, având o listă cu cele mai potrivite litere și numere, putem aplica instrumente standard de procesare a textului și ghiduri de informații pentru a extrage informații utile.
Dicționarul utilizatorului, modificarea exemplului "Hello World"
Crearea unui fișier de dicționar
La primul pas al creării mecanismului de "evidențiere a cuvintelor" vom crea un fișier cu dicționarul specificat. În arborele de directoare Sphinx-4 au un director numit BLD / modele / edu / UMC / Sphinx / modelul / acustică / WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz / dict /. Acesta conține fișiere cu dicționare numite alpha.dict și digit.dict. La prima vedere se pare că combinația acestor două dicționare va da fișierul dorit. Nu e deloc așa. Trebuie să creăm fișierele dicționarului din fișierul cmudict.0.6d din același director.
Du-te la directorul Bld / modele / edu / UMC / Sphinx / modelul / acustică / WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz / dict / și de a folosi următoarea comandă pentru a crea fișierul de dicționar dorit:
În lista 1 se afișează fișierul alN.dict creat, conținutul căruia sunt doar litere și numere.
Listarea 1. O parte a alN.dict
Modificări la exemplul "Hello World"
Sphinx-4 oferă o varietate de setări pentru a satisface practic orice cerință în domeniul recunoașterii vorbirii. În cazul nostru, abordarea cea mai eficientă ar fi modificarea exemplului existent "Hello World". În directorul rădăcină al Sphinx-4 mergeți la directorul demo / sphinx / helloworld și editați fișierul helloworld.config.xml. Lista 2 arată singurul șir pe care doriți să îl modificați pentru a utiliza fișierul alN.dict pe care l-am creat.
Listing 2. Modificări ale fișierului helloworld.config.xml
De asemenea, trebuie să schimbați fișierul cu gramatica hello.gram din același director. Listarea 3 arată schimbările care trebuie făcute pentru a colecta numai literele și numerele din fișierul dictionarului nostru.
Listă 3. Modificări ale fișierului hello.gram
De asemenea, trebuie să facem modificări minore în fișierul HelloWorld.java, după cum se arată mai jos:
4. Modificări la fișierul HelloWorld.java
Procesarea textelor
Poate că aveți chiar o întrebare plină: ce împiedică utilizarea unui dicționar de mii de mii pentru a procesa cele mai incorecte cazuri recunoscute? În final, în Sfinx-4, sunt disponibile modele de limbă și baze de vocabular mare. De ce nu configurați demo-ul pentru a recunoaște restul propoziției: "Numărul de telefon pentru suport tehnic este" și orice alte cuvinte care pot fi rostite?
Răspuns: Sfinx-4 este o aplicație bună, dar nu perfectă. Extinderea dicționarului fișierului de recunoaștere a sute de mii de cuvinte pentru a reduce dramatic eficiența recunoașterii literelor individuale și numere. Puteți verifica acest lucru citind celelalte programe într-un demo subdirector Sphinx-4 pachet sau modificarea exemplelor existente, configurarea acestora de a utiliza fișiere dicționar de mari dimensiuni și liste de gramatică avansate. După cum se dovedește, prelucrarea ulterioară a textului, constând numai din litere și cifre, pentru datele de căutare a unui nivel mai ridicat - o metodă mult mai simplă pentru construirea unui sistem de adnotare funcțional și util bazate pe sistemele disponibile cu open source.
Lista 5. annotateAcrNum.pl partea 1 - principala logică a programului
Logica principală de mai sus a programului caută secvențe de litere și numere care corespund criteriilor noastre simple. Pentru fiecare linie de text cu rezultate de recunoaștere vocală a codului modificat "Hello World", programul construiește separat o serie de litere și numere. Căutarea unei serii de litere este efectuată de subroutina acronymSearch, pe care o vom discuta mai jos. Rețineți că matricea literelor este mutată după fiecare abreviere care trebuie găsită, astfel încât să se găsească linia "i b m x" și "ibm" și "bmx". În matricea de cifre, nu efectuăm o astfel de schimbare, în schimb luăm numere lungi pe care programul le poate găsi și poate efectua o căutare pe Internet.
Listing 6. annotateAcrNum.pl partea 2 - acronymSearch program
Subrutina acronymSearch utilizează modulul Net :: Dict util. Am setat pur și simplu serverul de dicționar și cererea de căutare într-o varietate de baze de date disponibile. Expresia regulată / (wn | vera | gazetteer | foldoc) limitează ieșirea acelor baze de date care oferă descrieri relativ scurte. Poate că veți găsi că agregatul dvs. de abrevieri este mai bine reprezentat în alte baze de date ale site-ului dict.org - atunci această restricție va trebui eliminată din expresia regulată.
Listing 7. annotateAcrNum.pl partea 3 - phoneNmSearch
Acum, când avem motorul de recunoaștere a vorbirii Sphinx-4 și programul annotateAcrNum Perl, putem începe să adnotăm conversațiile conversaționale. Rulați annotatorul cu comanda $ JAVA_HOME / bin / java -mx312m -jar bin / HelloWorld.jar | perl annotateAcrNum.pl (pentru Linux). Pentru Windows, comanda arată astfel: java -mx312m -jar bin / HelloWorld.jar | perl annotateAcrNum.pl.