Aplicatie Desktop Bazata pe Recunoasterea Vocala

CUPRINS:

Introducere ……………………………………………………………………………… ……4

1.1.Descrierea sistemului………………………………………………………………..4

1.2.Importanța software-ului…………………………………………………………..5

1.3.Obiective…………………………………………………………………………………6

1.4.Avantaje………………………………………………………………………………….6

2. Recunoașterea vocală………………………………………………………………………….7

2.1.Categorii de sisteme…………………………………………………………………..8

3. Tehnologii utilizate……………………………………………………………………………15

3.1.Metodologie……………………………………………………………………………15

3.2.Tehnologii utilizate…………………………………………………………………..8

1. INTRODUCERE

Tehnologia de recunoaștere vocală este una dintre tehnologiile cărora li s-a acordat o deosebită importanță în decursul ultimilor ani și este o tehnologie care se află într-o perpetuă și accelerată dezvoltare. Acest lucru s-a datorat faptului că această tehnologie se poate aplica în diverse domenii care au înregistrat mari progrese de asemenea datorită beneficiilor pe care le oferă aceasta, cum ar fi în medicină, telefonie, industria constructoare de mașini, armată sau în viața de zi cu zi. Implementarea unui asemenea sistem de recunoaștere vocală în aceste domenii a avut un impact esențial asupra vieții omului.

DESCRIEREA SISTEMULUI

Recunoașterea vocală este o tehnologie care îi permite unui computer să execute anumite operații, în funcție de cuvintele rostite de către o persoană cu ajutorul unui microfon. Operațiile de bază efectuate de o astfel de aplicație bazată pe comenzi vocale sunt: pornirea programului de recunoaștere vocală, crearea unei gramatici ce trebuie recunoscută, încărcarea ei în program , înregistrarea unui eveniment de notificare pentru recunoașterea vocală și crearea unui handler pentru evenimentul respectiv.

În esență, sistemul de recunoaștere vocală parcurge anumiți pași. În momentul în care sistemul este pornit și percepe rostirea unor cuvinte de către o persoană, el o să analizeze mai întâi dacă vocea este una cunoscută, dacă da, ca următor pas o să recunoască ceea ce i se spune, iar ulterior să execute ceea ce i s-a spus, dar în timp real. Acest proces de recunoaștere vocală funcționează ca un tub ce convertește un impuls digital audio de la o placă de sunet într-o recunoaștere vocală.

Această interacțiune a utilizatorului cu un computer se realizează prin intermediul unei interfețe. Această interfață are, de cele mai multe ori, un design simplu, cu componente vizuale cât mai detaliate, tocmai pentru a eficientiza utilizarea aplicației de către diferite categorii de utilizatori. Această preocupare a apărut ulterior în momentul în care s-a observat aplicabilitatea în numeroase domenii și diversitatea clienților ce utilizează astfel de aplicații.

IMPORTANȚA SOFTWARE-URULUI

Cu toate că există numeroase avantaje pe care această tehnologie inovatoare le-a adus în ultimii ani în domeniul informaticii, dar nu numai, avantajul care a amplificat succesul implementării ei a fost sprijinul esențial pe care l-a adus oamenilor cu diferite dizabilități. Conform statisticilor, aproape 20% din populația lumii suferă de cel puțin o dizabilitate, dintre care cei mai mulți suferă de un handicap locomotor sau întâmpină probleme de vedere. Sistemul de recunoaștere vocală a avut un aport semnificativ în acest caz, el fiind un instrument ce îi poate ajuta pe oamenii aflați în imposibilitatea de a întreprinde anumite acțiuni prin operarea unui computer prin intermediu vocii. Astfel, oamenii afectați de aceste dizabilități ce le limitează viață, pot astfel comunica mai ușor cu alte persoane prin simpla rostire a unor cuvintelor.

Succesul pe care l-a înregistrat implementarea acestei tehnologii s-a datorat progresului uluitor al industriei tehnologice ce a adoptat o varietate de metode pentru aprofundarea proiectării și implementării sistemelor de recunoaștere vocală. Acest sistem a însemnat o evoluție remarcabilă ce a produs o reorientare a multor dezvoltatori pe acest segment de dezvoltare de noi software-uri pe bază de comenzi vocale, fapt ce a determinat o creștere a investițiilor în tehnologie. Așadar, aceste investiții ce au fost atrase au permis ca lucrurile să evolueze într-un ritm alert, acest sistem reprezentând fundamentul pe baza căruia au apărut numeroase aplicații ce caută să ofere soluții pentru cât mai multe probleme întâmpinate de om. Cu trecerea timpului, după ce această tehnologie a fost implementată de către numeroși programatori, accentul s-a pus pe perfecționarea noilor software-uri astfel încât sa fie diminuate costurile și timpul, dar și alte resurse de care dispune omul într-un mod limitat, dar acordându-se totodata o mare importanță calității. Marii dezvoltatori de pe piață precum Google, Microsoft, Apple, IBM, Amazon etc. au implementat această tehnologie, reușind astfel sa dezvolte propriile aplicații ce au revoluționat lumea.

Aplicația bazată pe comenzi vocale poate recunoaște o voce anume și poate executa comenzi de deschidere și închidere a fișierelor, comenzi ce se regăsesc într-o listă specificată de către programator. De asemenea, aceasta poate ajuta utilizatorul să deschidă diverse software-uri de sistem precum computerul, calendarul, notepad-ul etc.

1.3. OBIECTIVE

Principalele obiective ale lucrării sunt:

înțelegerea tehnologiei de recunoaștere vocală și a fundamentelor acesteia

înțelegerea utilității acestei tehnologii si aplicabilitatea ei în diverse domenii

implementarea tehnologiei ca o aplicație desktop

dezvoltarea de software-uri care pot fi utilizate în principal pentru recunoașterea vocală

1.4. AVANTAJE

Se poate afirma că un beneficiu remarcabil pe care îl deține un sistem bazat pe comenzi vocale este utilizarea acestuia fără a conecta ceva la computer și fără a necesita ca utilizatorul să-și folosească mâinile. Acest lucru a avut o deosebită importanță deoarece a constituit un mare progres al tehnologiei ce a schimbat viziunea dezvoltatorilor asupra lucrurilor. Acest lucru a favorizat apariția și extinderea tehnologiei informatice în numeroase domenii. Pe lângă aceste realizări deosebite, domeniul informaticii a declanșat astfel un interes aparte pentru mulți programatori în ceea ce privește varietatea aplicabilității unui asemenea sistem și astfel s-a înregistrat o creștere substanțială a numărului de software-uri dezvoltate în ultimii ani.

RECUNOAȘTEREA VOCALĂ

Progresul semnificativ pe care l-a făcut tehnologia în ultimii ani a lărgit orizontul programatorilor care, datorită inventivități lor, au dezvoltat software-uri care au reușit să faciliteze viața oamenilor. Din punct de vedere tehnologic, sistemele bazate pe comenzi vocale au o lungă istorie care a cuprins o serie de inovații.

O situație ideală pe care o putem întâlni în procesul de recunoaștere vocală este aceea ca instrumentul de recunoaștere vocală să înțeleagă toate cuvintele pe care le rostește o persoană, însă, această performanță depinde de anumiți factori care pot perturba această recunoaștere. Principalii factori care pot interveni în buna funcționare a unui astfel de sistem bazat pe comenzi vocale sunt: dicționarul implementat sistemului care are în componența sa un număr limitat de cuvinte, pentru a nu crea confuzii sistemului la rostirea anumitor cuvinte (în special a omonimelor). Astfel, performanța sistemului este în relație invers proporțională cu numărul de cuvinte existente în dicționar și numărul mare de utilizatori a căror voci trebuie recunoscute de către sistem. Cel mai important factor este mediul zgomotos care poate afecta într-o măsură considerabilă execuția corectă a sistemului de recunoaștere vocală. Așadar, acești cei trei factori extrem de importanți, reprezintă regulile de bază de care trebuie să se țină cont atunci când se dorește utilizarea unui sistem bazat pe comenzi vocale într-un mod eficient.

Conceptul de recunoaștere vocală a apărut inițial în anul 1940, însă cei care au construit primul sistem de recunoaștere a unei cifre cu un singur vorbitor au fost cei de la Bell Labs, în anul 1952. Sistemul acestora era capabil să recunoască formanții în spectrul de putere a fiecărei rostiri de către o persoană. Tehnologia era însă limitată, dicționarul acelui sistem conținând doar zece cuvinte. Așadar, perioada dintre anii 1940-1950 a însemnat o perioadă decisivă în care s-a încercat realizarea prototipurilor elementare ale recunoașterii vocale, adică de automatizare și informare a modelelor teoretice.

În anii 1960 s-a dezvoltat un sistem care era bazat pe simplele proprietăți acustic-fonetice ale sunetelor vorbirii și care avea în dicționarul său maxim o sută de cuvinte, însă acestea erau recunoscute doar dacă erau rostite separat . În această decadă au fost dezvoltate astfel niște tehnologii cheie care au reușit să dividă semnalul procesat de un sistem în mai multe componente ce reprezentau fiecare câte o frecvență a semnalului inițial.

În anul 1970 au apărut sisteme ale căror dicționare conțineau între 100-1000 de cuvinte, sisteme ce se bazau pe șabloane simple ce puteau fi recunoscute, iar în anul 1980 au fost dezvoltate sisteme al căror dicționar conținea minimum 1000 de cuvinte, fiind rezolvate astfel probleme de recunoaștere vocală bazate pe statistică.

Invențiile cheie de care s-a bucurat această eră au fost Modelele Markov Ascunse (Hidden Markov Models) și modelul de limbă stocastică. Aceste două elemente au constituit împreună o puternică gamă de metode pentru manipularea problemelor de recunoaștere vocală continuă, capabilă să ofere un nivel mare de performanță și eficiență unui sistem bazat pe comenzi vocale.

Înțelegerea metodelor limbii stocastice , învățarea din punct de vedere statistic a modelelor acustice si lingvistice și a metodelor de implementare a unui sistem cu un dicționar vast au constituit tehnologiile cheie pentru perioada anilor 1990-2000, apărând astfel tehnologia de recunoaștere vocală pentru prima dată pe piață în anul 2000.

Așadar, sistemele de recunoaștere vocală se pot împărți în funcție de abilitatea de recunoaștere a lor a cuvintelor sau a listelor de cuvinte pe care le au implementate în dicționarul său.

CATEGORII DE SISTEME

Astfel, putem distinge cinci categorii de sisteme:

1. Cuvinte izolate: adică sistemul poate procesa comenzi ce pot conține ori un cuvânt ori o frază. În acest mod pot fi procesate recurent seturi de comenzi ce sunt delimitate prin pauze de vorbire.

2. Cuvinte conectate: acest sistem nu diferă foarte mult de cel bazat pe cuvinte izolate, e oferind în plus posibilitatea de a procesa comenzi ce conține mai multe enunțuri ce trebuie delimitate printr-o mică pauză de vorbire.

3. Vorbire continuă: prin acest sistem ii este permis utilizatorului să ii dicteze practic computerului, adică să se adreseze într-un mod cât mai natural acestuia.

4.Vorbire spontana: datorită acestui sistem, care la nivel de bază presupune o rostire a cuvintelor ce sună natural și nu ca un o secvență de sunete repetate, se pot procesa vaste tipuri de vorbire naturală, putând fi recunoscute chiar și cuvinte ce sunt rostite cu accent, sau care sunt delimitate de vorbe pronunțate nedeslușit sau de interjecții.

5.Verificarea vocii: aceste sistemele permit aplicației să recunoască mai mulți utilizatori.

O altă clasificare a sistemelor de recunoaștere vocală se poate face în funcție de modul de funcționare în mod dependent sau nu de utilizator. Așadar, putem distinge două categorii de sisteme: independente de utilizator, adică indiferent de utilizatorul care vorbește, aplicația este capabilă să recunoască cuvintele spuse de acesta, fără să fie necesară o exersare în prelabil, iar cea de-a doua categorie este cea a sistemelor dependente de utilizator care reprezintă opusul celor dependente de utilizator, adică utilizatorul trebuie să exerseze în prealabil pentru ca aplicația să îl recunoască.

În figura următoare se poate observa procesul urmat de un sistem bazat pe comenzi vocale:

sunet

Fig. 2.1 Procesul de recunoaștere vocală

Astfel, la rostirea unor cuvinte de către utilizator, sistemul recepționează sunetul cu ajutorul unui microfon, iar placa de sunet a computerului crează reprezentarea digitală a sunetului primit.

Ca următor pas, se convertește semnalul analog în semnal digital. Acest procedeu implică procese de cuantizare și eșantionare. Procesul de cuantizare reprezintă procedeul prin care se aproximează un set continuu de valori. Eșantionarea semnifică convertirea unui semnal continuu într-un semnal discret.

Modelul acustic este alcătuit din înregistrări audio ale vorbirii și transcrierea acestora textuală, iar software-ul va fi utilizat pentru a realizare o reprezentare statistică a sunetelor ce compun fiecare cuvânt în parte. Mai exact, modelul acustic este folosit de motorul de recunoaștere vocală pentru a recunoaște vorbirea în sine, adică el divide cuvintele în foneme, adică în cea mai mică unitate fonică a limbii pentru a putea distinge fiecare cuvânt în parte și pentru a determina formele gramaticale ale acestuia.

Modelul lingvistic este utilizat de către sistemul de recunoaștere vocală pentru a încerca să fie surprinse proprietățile unei limbi și pentru a putea anticipa următorul cuvânt ce ar putea urma în enunț. Acest software compară practic fonemele cu propriile cuvinte construite în dicționarul său.

Odata ce sunetul este transformat în formatul corect pentru a fi prelucrat ulterior, se caută cea mai apropiată formă a acestuia din lista de cuvinte pe care acesta o are. În momentul în care software-ul găsește forma căutată, el returnează textul sau șirul de caractere corespunzător semnalului recunoscut.

Aplicațiile bazate pe recunoașterea vocală se pot împărți în două categorii în funcție de scopul său, distingându-se astfel aplicații ce urmăresc traducerea unor cuvinte rostite într-un text și aplicații prin intermediul cărora un utilizator poate controla un computer, putând efectua numeroase comenzi prin simpla rostire a unor cuvinte cheie ce pot fi recunoscute.

Prima categorie de aplicații ce implică practic dictarea unui computer, este foarte utilă utilizatorilor a căror muncă presupune scrierea de texte. Astfel, această categorie de utilizatori pot beneficia de avantajele oferite de o aplicație bazată pe comenzi vocale, putând astfel economisi timp, resursă foarte importantă de care nu se prea dispune, dar mai ales este diminuat efortul utilizatorului. Astfel, cu aceste avantaje bine definite vorbim despre o creștere a performanței a celor din industria care dezvoltă aplicații bazate pe comenzi vocale. Un exemplu concludent îl reprezintă redacțiile, acolo unde jurnaliștii trebuie să scrie în mod constant articole pentru reviste sau ziare. În mod clar munca unui jurnalist care scrie cu ajutorul tastaturii un articol implică un consum de resurse mult mai mare decât a unui jurnalist care utilizează un software ce transforma cuvintele rostite de acesta în text.

Cea de-a doua categorie de aplicații ce presupun controlul unui utilizator asupra unui computer a condus la dezvoltarea numeroaselor software-uri cu aplicabilitate în diverse domenii care îi oferă posibilitatea utilizatorului să efectueze comenzi mai complicate.

Așa cum s-a menționat anterior, aceste software-uri sunt foarte utile oamenilor cu dizabilități sau care întâmpină dificultăți în a-și folosi mâinile pentru operarea unui computer. Mai mult de atât, această tehnologie a fost implementată și în segmentul de telefoane mobile inovând astfel acest domeniu și conducând la apariția diverselor aplicații ce ajută o persoană cu handicap sa utilizeze un astfel de gadget. Cu toate că o aplicație de recunoaștere vocală în domeniul acesta este mai puțin eficientă decât o aplicație desktop și este limitată din cauza spațiului mic de stocare pe care îl are un dispozitiv, a slabelor performanțe pe care le înregistrează un procesor, oferă totuși soluții la problemelele de comunicare pe care le au oamenii cu dizabilități. De exemplu, prin intermediul unei asemenea aplicații ei pot comunica prin mesaje, pot apela un contact din agendă, pot trimite e-mail-uri sau pot căuta pe informații pe internet, toate acestea datorită tehnologiei de recunoaștere vocală care este capabilă să transforme cuvintele rostite în text.

Avantajele nu se opresc însă aici. Numeroase aplicații care au la bază această tehnologie au fost dezvoltate în ultimii anii tocmai pentru a spori utilitatea acestora putând fi folosite și în cazul persoanelor cu handicap. Însumând aceste lucruri, se poate deduce utilitatea din punct de vedere educațional pe care o poate avea o aplicație mobilă sau desktop pentru copiii care, de exemplu, suferă de un handicap locomotor și nu-și pot mișca mâinile sau au un deficit de auz.

Un domeniu care a fost revoluționat de apariția acestei tehnologii este industria constructoare de mașini. Acest sector a atras investiții importante în ultimii ani, fiind de altfel un domeniu în plină dezvoltare, investiții care au făcut posibilă dezvoltarea de software-uri bazate pe comenzi vocale pentru mașini. Astfel, atenția utilizatorului nu va mai fi distrasă de un computer de bord care necesită o utilizare manuală, ci efectiv utilizatorul va putea realiza anumite activități prin rostirea anumit comenzi vocale pe care software-ul le va recunoaște. Mai mult decât atât, aceste software-uri pot permite conectarea unui telefon mobil pe care utilizatorul îl poate folosi fără ajutorul mâinilor. De exemplu, utilizatorul poate solicita ca un contact să fie apelat din agenda sa, fără a atinge măcar telefonul.

Putem vorbi de asemenea despre o inovație și în domeniul militar, unde sistemele bazate pe recunoașterea vocală au îmbunătățit într-o măsură considerabilă acest sector și au constituit o soluție solidă pentru diverse situații posibile. Software-urile dezvoltate pe baza acestei tehnologii au reușit să reducă substanțial volumul de muncă al piloților cărora li se oferă posibilitatea de a pilota un avion sau un elicopter mult mai ușor. Pe lângă toate acestea, s-au dezvoltat și software-uri prin care se poate stabili strategii de luptă, cu posibilitatea ca un utilizator să poată schimba oricând pașii strategiei sau intreaga strategie prin intermediul comenzilor vocale. O altă funcționalitate a acestor sisteme este aceea de antrenare a controlorilor de trafic aerian, simulându-se astfel diferite situații reale , caz în care sistemul își îndeplinește rolul de copilot care execută comenzile primite. Aceste sisteme ce sintetizeaza tehnici și oferă posibilitatea de a fi coordonate cu ajutorul tehnicii de recunoaștere vocală au făcut să fie diminuată necesitatea de personal pentru aceste antrenamente de control al traficului aerian.

Însumând toate aceste avantaje pe care sistemele de recunoaștere vocală le aduc în numeroase domenii, se poate spune că acestea au o deosebită importanță, schimbând astfel radical modul de funcționare al fiecărui sector. Aceste beneficii vizează atât creșterea calității serviciilor oferite prin reducerea resurselor și a efortului cât și creșterea cantității tocmai datorită reducerii resurselor importante.

Această tehnologie de recunoaștere vocală poate viza și alte domenii precum sectorul economic, unde agenții economici pot beneficia de avantajele oferite pentru a-și dezvolta și îmbunătăți activitea economică întreprinsă.

De asemenea, utilitatea acestei tehnologii se poate regăsi la orice utilizator care deține un computer. În acest caz se menționează aplicațiile ce au fost dezvoltate deja de marii dezvoltatori de software-uri precum Microsoft și se pot utiliza contra cost sau gratuit, conținând un set de comenzi de bază.

Trebuie menționat faptul că, deși această tehnologie inovatoare a avut un potențial mare de dezvoltare în toate domeniile menționate anterior si nu numai, până în momentul de față nu s-a dezvoltat niciun sistem perfect de recunoaștere vocală. Acest lucru este împiedicat de o serie de factori care influențează într-o proporție destul de mare buna funționare a unui astfel de sistem. De-a lungul anilor se poate sesiza progresul pe care l-a înregistrat această tehnologie și adaptabilitatea pe care a dezvoltat-o, aflându-se într-o continuă dezvoltare. Așa cum s-a menționat, apariția acestei tehnologii a fost un imbold pentru programatorii creativi ce au avut astfel la dispoziție un instrument inovator pe care l-au utilizat într-un mod cât mai practiv în cât mai multe domenii.

Procesul de recunoaștere vocală nu reprezintă pentru om o sarcină care ar putea ridica probleme, însă pentru un computer înseamnă o sarcină destul de complicat de îndeplinit. Dacă pentru om este natural să ai capacitatea de a vorbi, a scrie, a reacționa sau de a gândi, în cazul unui computer lucrurile sunt extrem de dificile, pornind, în primul rând, de la faptul că este dificil ca el să înțeleagă sensul cuvintelor pe care utilizatorul i le adresează. În al doilea rând, poate fi ușor perturbat de zgomotul ambiental sau poate fi indus în eroare de pauzele pe care utilizatorul le face pentru e delimita comenzile. În timp ce un om este capabil să filtreze zgomotul de vorbirea în sine fără a întâmpina prea multe probleme, un computer necesită ajutor pentru a separa sunetele și pentru a funcționa la standardele propuse.

Alte provocări mai mari pe care le întâmpină un sistem în procesul de recunoaștere vocală sunt acelea de a alege corect forma cuvintelor care sunt identice din punct de vedere al ortografiei și al pronunției, dar au un înțeles cu totul diferit, adică a omonimelor și de a distinge vocile a mai mulți utilizatori ce vorbesc simultan. Pentru sistem reprezintă o adevărată provocare să separe cuvinte diferite, rostite simultan de mai multi utilizatori, mai ales că suprapunerea lor ar putea dezorienta sistemul, iar acesta nu ar mai putea fi capabil să recunoască corect pauzele efectuate în vorbire, iar rezultatul ar fi cu totul diferit față de cel așteptat. Aceeași problemă se poate întâmpina și în cazul recunoașterii corecte a omonimelor, adică există o probabilitate destul de mare ca rezultatul așteptat nu fie unul corect, iar execuția sistemului să fie una greșită.

Software-urile bazate pe recunoașterea vocală utilizatorul să rostească cuvintele clar și distrinct, iar ambientul să fie unul liniștit. Dacă aceste cerințe nu sunt îndeplinite întocmai, pot interveni sunete subsidiare care vor produce interferențe, iar sistemul va deveni confuz și va amesteca cuvintele.

În ceea ce privește viitorul acestei tehnologii, precizia unui astfel de sistem va deveni din ce în ce mai bună și tot mai multe software-uri performante vor fi dezvoltate pe bază de recunoaștere vocală. Performanța se măsoară în acest caz în precizie si viteză. Precizia este dată de trei mărimi: de rata de eroare a unui cuvânt(WER), rata de eroare a unui singur cuvânt(SWER) și rata de succes a unei comenzi(CSR), iar viteza este dată de timpul real de execuție. Extinderea numărului de utilizatori care folosesc un asemenea software este favorizată și de prețul acestei tehnologii care tinde să scadă treptat, devenind astfel accesibil pentru cât mai multe categorii de utilizatori.

Astfel, din ce în ce mai multe sisteme avansate vor implementa această tehnologie și vor putea fi adaptate în așa fel încât să fie capabile să intuiască ceea ce ar fi vrut sa spună utilizatorul, chiar dacă acesta face greșeli în mod neintenționat atunci când solicită o comandă, așa cum se și întâmplă în viața reală.

Pe lângă îmbunătățirile la care se lucrează pe partea de software pentru astfel de sisteme, nu trebuie să fie omise progresele efectuate pe partea de hardware. Așadar, microfoanele și sistemele audio vor fi proiectate în așa fel încât să se poată adapta mult mai bine atunci când vor apărea zgomote de fundal sau mediul în care funcționează este schimbat. Se dorește astfel eliminarea factorilor externi ce pot diminua performanța sistemelor de recunoaștere vocală.

În altă ordine de idei, s-a observat faptul că funcționalitățile tehnologiei de recunoaștere vocală sunt numeroase. Însă, pe lângă îmbunătățirile dorite și menționate anterior, se depun mari eforturi în momentul actual pentru dezvoltarea performanțelor sistemelor care, în plus, pot răspunde utilizatorului tot prin voce. Cu alte cuvinte, accentul s-a pus pe dezvoltarea sistemelor capabile să poarte un dialog cu utilizator, pe lângă posibilitatea de a executa anumite comenzi. Această idee a avut drept scop ca acele persoane care nu au sau nu doresc sa aibă acces la un ecran sau la o tastatură să poată totuși accesa informațiile disponibile de pe internet.

Apariția software-urilor bazate pe comenzi vocale ce pot răspunde utilizatorului prin cuvinte a întărit și mai mult ideea că se pot crea roboți care să aibă trasături din ce în ce mai omenești. Robotica a reușit astfel să realizeze mari progrese datorită evoluției tehnologiilor, iar scopul acesteia fost de a proiecta roboți care să fie capabili să întreprindă cât mai multe acțiuni omenești. Idealul de a crea însă un robot care să poată realiza tot ceea ce face o ființă umană este înca un subiect controversat.

La momentul actual, există pe piață multe software-uri bacate pe comenzi vocale foarte utile, însă cu anumite limitări. Așadar, aceast fapt a determinat ca multi programatori sa-si dezvolte propriile software-uri pe care să le adapteze la propriile necesități.

Această lucrare își dorește să aducă în prim plan un software ușor de utilizat si practic. Datorită faptului că numărul persoanelor care dețin cel puțin un computer a crescut considerabil în ultimii ani, informatica a fost un domeniu care a atras tot mai mulți programatori care au dezvoltat diferite software-uri pe care mulți oameni le folosesc în viața de zi cu zi.

În România, peste jumătate din populație dețin cel puțin un computer acasă sau utilizează unul la locul de muncă, cei mai mulți utilizatori fiind în mediul urban La nivel global, peste 22% din populație au acces la computer, iar peste 40% dintre aceștia( peste 3 miliarde de utilizatori) au acces și la internet. Așadar, numărul potențialilor utilizatori este foarte mare și este într-o creștere accelerată.

Așadar, utilitatea unui software care ajută orice persoană care are acces la un computer să opereze pe acesta într-un mod eficient este mare. Avantajul este că acest software poate fi adaptat în funcție de necesitățile fiecărui utilizator, adică prezintă un important benefiu care înseamnă posibilitatea personalizării produsului de către utilizator.

Astfel, timpul în care un utilizator îl consumă pentru a executa anumite comenzi pe un computer și efortul pe care îl depune pot fi diminuate considerabil prin utilizarea acestui software ce implementeaza tehnologia de recunoaștere vocală. Acesta permite închiderea sau deschiderea anumitor aplicații doar cu ajutorul comenzilor vocale, iar în acest timp utilizatorul poate întreprinde alte activități.

Acest sistem, chiar și la un nivel mai puțin avansat, oferă un grad de practicabilitate destul de mare pentru utilizatori prin faptul că ajută îl ajută să economisească resurse materiale și timp, dar oferă și posibilitatea de upgrade și update.

3. TEHNOLOGII ȘI ALGORITMI UTILIZAȚI

3.1. METODOLOGIE

Ca orice tehnologie emergentă, tehnologia de recunoaștere vocală nu a devenit foarte familiară multor dezvoltatori. Cu toate că funcțiile de bază ale recunoașterii vocale și ale sintetizării vocale pot fi întelese într-un timp scurt, există capacități subtile și puternice oferite de vorbirea computerizată pe care dezvoltatorii vor să o înțeleagă, să o stăpânească cât mai bine și sa o utilizeze în diferite scopuri.

Cu toate că s-a investit foarte mult în această tehnologie și s-a reușit atingerea anumitor performanțe, încă există restricții în tehnologiile de sintetizare și recunoaștere vocală. Cea mai importantă barieră care a limitat această tehnologie este aceea că tehnologia de recunoaștere vocală nu corespunde de cele mai multe ori cu așteptările utilizatorilor care sunt familiari cu modul natural de vorbire al omului.

Înțelegerea punctelor forte și slabe ale unui sistem de recunoaștere vocală este foarte importantă pentru dezvoltatori. Având în vedere toate aceste lucruri, un programator va fi astfel capabil să ia o decizie cu privire la posibilitatea dezvoltării unui software personalizat care va beneficia de datele de intrare și de ieșire ale vorbirii.

3.2. TEHNOLOGII UTILIZATE

Atât modelul acustic cât și cel lingvistic sunt componente importante ale algoritmilor implementați de recunoașterea vocală, care sunt bazați pe statistică.

Sistemele de recunoștere vocală se pot împărți în două mari categorii. Prima categorie cuprinde sistemele de recunoaștere a modelelor (patterns) care compară șabloanele sale cu cele antrenate și cunoscute de utilizator, pentru a găsi o asemănare. În cea de-a doua categorie se includ sistemele fonetice acustice care utilizează preia caracteristicile unui om de a vorbi și de a auzi și compară sunetele vocale.

Cea mai des întâlnită abordare în ceea ce privește construirea sistemelor de recunoaștere vocală este cea care vizează folosirea tehnicii de recunoaștere a modelelor. Scopul acestui model de recunoaștere este de a clasifica obiectele de interes în clase sau categorii. Obiectele de interes sunt denumite generic modele(patterns), în acest caz ele sunt reprezentate de secvențele vectorului(modelului) acustic extrase prin intermediul tehnicilor specificate anterior. Tehnicile de asemănare utilizate în recunoașterea vocală sunt următoarele: Colmatarea dinamică a timpului (DTW), Modelele Markov ascunse(HMM), Cuantificarea vectorială (VQ), Analiza de frecvențe și Analiza diferențială.

Sistemele de recunoaștere vocală de uz general se bazează pe Modelele Markov ascunse. Acestea sunt modele statistice care produc o secvență de simboluri sau cantități. Sistemele folosesc astfel de modele pentru că fac posibilă tratarea unui semnal ca parte a unui semnal staționar sau ca semnal staționar de scurtă durată.

Un model Markov poate fi utilizat pentru a modela procese necunoscute care produc secvențe de rezultate observabile la intervale discrete, unde rezultatele sunt membri ai unui alfabet finit. Despre acest proces nu se știe decât că la un anumit interval se transmite un membru ales din alfabet. Modelele Markov sunt utilizate pe scară largă în domeniul științei, ingineriei și în multe alte domenii(recunoașterea vocală, economie, finanțe, bioinformatică, științe sociale etc.).

Există diferite abordări în șablonul de asemănare, cum ar fi, de exemplu, utilizarea modelelor de bază în care sunt extrase secvențe de timp ale caracteristicilor fonetice dintr-o undă de vorbire. S-au încercat diverse abordări, însă modelele care implică diagramele de stare au fost considerate cele mai bune din punct de vedere al performanței. Modelele cele mai frecvent utilizate în acest domeniu sunt Modelele Markov ascunse(HMM).

Cu ajutorul modelelor Markov se poate modela orice unitate de vorbire, dar și toate sursele de cunoștințe pot fi modelate, care la rândul lor pot fi incluse într-un singur model care este integrat. S-a încercat implementarea mai multor variante ale Modelelor Markov și au fost obținute rezultate diferite. O clasificare a Modelelor Markov se poate realiza în funcție de cantitatea modelată, fapt ce împarte aceste modele în două categorii.

Prima categorie implică modelele care presupun modelarea fiecărui cuvânt din dicționarul. A doua categorie surprinde acele modele care pot modela fiecare unitate a cuvântului. Cea din urmă categorie de modele a beneficiat de un succes mai mare decât cele care modelează fiecare cuvânt în parte. Acest lucru s-a datorat faptului că spațiul de stocare necesar și timpul de procesare pentru recunoașterea vocală sunt funcții ale numărului de unități din inventar.

Un alt aspect important care trebuie luat în considerare atunci când se preferă modelarea la nivel de unitate a cuvântului este faptul că aceasta oferă posibilitatea de modelare a diferențelor contextuale. Avantajele nu se opresc însă aici. Aceste modele pot oferi cu ușurință posibilitatea de instruire a sistemelor corespunzătoare.

Această lucrare prezintă o aplicație desktop care implementează sistemul de recunoaștere vocală care folosește Modelele Markov ascunse discrete ce se bazează pe sistemul de cuvinte izolate. Mai exact, fiecare cuvânt din dicționarul sistemului este reprezentat printr-un Model Markov individual, fiecare avânt același număr de stări. Aceste cuvinte pot fi modelate ca o succesiune de silabe, foneme, sau sunete vocale care au o interpretare atemporală și pot fi modelate cu usurință cu Modelele Markov a căror stare reprezintă sunetele vocale. Durata unui fonem este dată de posibilitatea de a avea o stare de tranziție ce revine la aceeași stare. Astfel, la un moment dat, o stare poate reveni la ea însăși, implicând astfel un ciclu ce se poate repeta de atâtea ori cât este necesar pentru a modela corect durata unui fonem în cuvânt.

În figura următoare este prezentat Modelul Markov ascuns utilizat în această aplicație desktop bazat pe recunoașterea vocală:

Fig. 3.1. Generarea Modelului Markov.Sursa http://www.ee.columbia.edu/ln/LabROSA/doc/HTKBook21/node5.html

Se poate observa cum secvența vectorilor de vorbire observați corespunzătoare fiecărui cuvânt este generată de Modelul Markov. Acest model este o mașinărie de stări finite care își schimbă starea o dată la fiecare unitate de timp și de fiecare dată când o stare j este introdusă, este generat un vector de vorbire din densitatea de probabilitatea .

În plus, tranziția de starea i la starea j este de asemenea un fenom probabilistic, fiind dat de probabilitatea discretă .

Astfel, X=1,2,2,3,4,4,5,6 reprezintă secvențele de stări prin care trece modelul, pentru a genera secvențele de observații de la la . Se poate observa din figură faptul că stările de intrare și de ieșire nu sunt emițătoare.

Probabilitatea comună ca o secvență O să fie generată de modelul M, trecând prin secvența de stări X este calculată ca fiind produsul ale probabilităților de tranziție și probabilitățile rezultate. Mai exact, avem formula:

P(O, X|M)=*****…

În practică, doar secvența de observații O este cunoscută, iar secvența de stare de bază X ascunsă. De aceea acest model se numește Modelul Markov ascuns.

Excepție fac însă stările de început și sfârșit, care reprezintă tranziții în interiorul și în exteriorul unui cuvânt, iar în rest fiecare stare are o tranziție la ea însăși. În acest caz particular, unda vocii este codată într-un șir de vectori spectrali, iar cuantizarea fiecărui vector transformă în continuare fiecare vector spectral într-o singură valoare care indexează un vector reprezentativ în lista de coduri.

Fiecare cuvânt din dicționarul sistemului poate fi antrenat printr-o serie de repetiții realizate de unul sau mai mulți vorbitori. Așadar, probabilitățile de tranziție și cele de ieșire ale Modelelor Markov ascunse ale unui cuvânt sunt adaptate să adaptate să primească ultima repetiție făcută de către utilizator a cuvântului în model.

În timpul acestui antrenament, codul este iterat cu obiectivul de a obține unul care este optim pentru dicționarul definit. În momentul în care este rostit un cuvânt care nu se regăsește în dicționarul sistemului, acesta este transformat într-un șir de indici de cod. Ca un următor pas, acel șir este considerat de către sistem o secvență de observații ale Modelelor Markov ascunse care calculează, pentru fiecare model de cuvânt din dicționar, probabilitatea ca acele modele să fi generat aceste observații. Astfel, cuvântul care are cea mai mare probabilitate, adică corespunde într-o proporție cât mai mare cu modelul de cuvânt, este selectat ca fiind cel recunoscut.

Sistemele de recunoaștere vocală bazate pe cuvinte izolate necesită, nu numai în acest caz particular, ci în general, ca mediul în care este utilizat software-ul să nu fie perturbat și să fie eliminat zgomotul ambiental. Dacă alte semnale audio străine interferează cu sunetele rostite de către utilizator, atunci pot exista probleme în recunoașterea acestora. Aceste sisteme sunt sensibile la zgomotele auxiliare, iar perfomanța nu este una foarte dezvoltată și atunci este necesar ca anumite reguli să fie respectate întocmai pentru buna funcționare a acelui sistem. Acest lucru nu presupune însă să fie pronunțat un singur cuvânt de către utilizator, dar este necesar să se execute câte o singură rostire pentru a putea fi procesată comanda.

Scopul parametrilor Modelelor Markov ascunse nu este acela de a estima parametrii care au cea mai mare probabilitate de a genera formarea de date, ci de a modifica parametrii modelelor în așa fel încât ipotezele generate de sistem în pregătirea datelor să fie foarte aproape de forma corectă a unor secvențe de cuvinte, în timp ce generarea datelor de test este ascunsă. O abordare a acestor modele ar fi aceea de a minimiza în mod explicit eroarea de clasificare a datelor pregătite.

Înainte a folosi Modelele Markov ascunse trebuie mai întâi înțeleși trei algoritmi: clasificarea unei secvențe de observații(recunoașterea), instruirea modelelor din setul de date pregătit și evaluarea probabilității unei secvențe de observații.

Clasificarea reprezintă identificarea secvențelor de observații necunoscute prin alegerea celui mai bun rezultat pe care l-a produs secvența de observații. Pentru a îmbunătăți acest proces de identificare trebuie calculată probabilitatea pentru model și , ulterior, să fie ales cea mai apropiată formă a sa.

Instruiea modelelor presupune estimarea parametrior modelului dintr-un set de date format și cunoscut(secvențe de observații).

Evaluarea probabilității unei secvențe de observații dată de un model reprezintă un calcul critic folosit atât în instruire cât și în clasificare. Acest proces este vital pentru recunoașterea vocală și necesită calcule cât mai precise.

Sistemul bazat pe cuvinte izolate care a fost implementat în soluția aplicației de față este explicat în urmăroare figură:

Fig 3.2. Algoritmul cuvintelor izolate. Sursa: http://www.ee.columbia.edu/ln/LabROSA/doc/HTKBook21/node5.html

Problema de recunoaștere a cuvintelor izolate se poate calcula prin formula:

arg , unde O=, este vectorul de secvențe de observații , iar este cuvântul de pe poziția i din dicționarul definit în sistem.

Această probabilitate nu este însp calculată direct, ci cu ajutorul Regulii lui Bayes care are următoarea formulă:

Astfel, pentru un set dat de probabilități, cea mai mare probabilitate pe care o poate avea un cuvânt rostit este dată de probabilitatea .

Pentru o mai bună întelegere a funcționalității Modelelor Markov ascunse utilizate pentru instruirea cuvintelor din software-ul de recunoaștere a cuvintelor izolate vom avea următoarea figură:

Fig. 3.2. Instruirea cuvintelor din softwar. Sursa http://www.ee.columbia.edu/ln/LabROSA/doc/HTKBook21/node5.html

În acestă figură, la punctul a) se poate observa procesul de antrenare al vorbirii. Dicționarul conține, în exemplul prezentat, trei cuvinte: “one”,”two” și ”three” pentru care se estimează câte un Model Markov ascuns, , și .

La punctul b), se vrea recunoașterea unui cuvânt necunoscut și este calculată probabilitatea de generare de către model a fiecărui cuvânt. Astfel este ales cel mai probabil model care identifică cuvântul.

4. ARHITECTURA SOLUȚIEI

Pentru dezvoltarea acestei aplicații s-a utilizat limbajul C#, cu ajutorul instrumentului Visual Studio 2013 . Această aplicație beneficiază de o interfață grafică care este creată in Windows Forms. Datele stocate necesere se vor reține într-o bază de date de tip Microsoft Acces. În figura următoare este prezentată structura proiectului ce va fi explicată imediat:

Fig. 4.1 Structura aplicației

4.1. PRINCIPALELE MODULE ALE APLICAȚIEI

Principalele module ale aplicației sunt următoarele:

Modulul de recunoaștere vocală după un lexicon

Modulul de comandă și control

Modulul de emulare recunoaștere vocală

Modulul de dictare

Modulul de implementare a comenzilor proprii

Modulul de opțiuni (personalizarea parametrică a aplicației)

Modulul de sintetizare

Aplicația are astfel următoarele funcții principale:

Recunoaștere vocală

Comandă și control

Emulare comenzi vocale

Dictare

Din punct de vedere arhitectural, proiectul a fost împărțit astfel în trei layere logice:

1) PresentationLayer

2) BusinessLayer

3) DatabaseLogic

Structura acestor trei nivele se poate urmări cu ușuriță în partea dreaptă a proiectului, în Solution Explorer.

Fiecare layer în parte are rolul de a separa codul în funcție de scopul acestuia. Astfel, aplicația este structurată într-un mod logic, la nivel de funcționalitate.

Primul layer, denumit în proiect “PresentationLayer”, se vor păstra doar acele elementele care constituie partea de interfață grafică. Interfața grafică va gestiona ferestre care vor conține componente vizuale prin care utilizatorul va gestiona aplicația.

Structura acestor ferestre este următoarea:

-Interfața grafică de configurare oferită de Visual Studio;

-Fișierul de resurse : “.resx”;

-Fișierul de design : “.Designer.cs”;

-Fișierul în care se vor scrie liniile de cod : “.cs”;

Fig. 4.2 Descrierea interfeței aplicației

Într-adevăr acest layer este cel care va realiza interacțiunea cu utilizatorul, însă , în spatele ferestrelor se va încerca să se folosească cât mai puțină logică. Singura logică care se va implementa în spatele arhitecturii va fi logica de fereastră care se ocupă cu partea grafică si nu cu manipularea datelor în sine.

Cel de-al doilea layer-ul, denumit “BusinessLogic”, are rolul de a implementa întreaga logică de funcționare a programului. Cu alte cuvinte, el poate fi considerat “creierul” software-ului, având desigur, cel mai important rol pentru aplicație. În acest layer se vor găsi clasele care au rolul de a prelucra datele si de a lua diverse decizii.

4.2. FUNCȚIILE APLICAȚIEI

Principalele funcții ale acestui layer sunt includ următoarele operații:

-Analiză caracteristicilor

-Analiză voce

-Decodare cuvinte

-Analiză sintactică

-Recunoaștere cuvinte

-Deschidere fișier

Așadar, acest layer reprezintă zona în care se regăsește întreg algoritmul de funcționare al sistemului.

Ultimul layer, “DatabaseLogic”, reprezintă interfața prin care se gestionează baza de date. Singurul lui rol este acela de a păstra clasele care au drept scop citirea și scrierea datelor din baza de date sau din fișierul xml implementate.

În continuare se va realiza o scurtă descriere a aplicației. Sistemul de recunoaștere vocală este bazat pe un dicționar care este stocat într-un fisier extern ce poate fi personalizat de către utilizator. Această personalizare permite operații de adăugare a unor noi reguli gramaticale la momentul execuției aplicației.

Sistemul necesită susținerea unei sesiuni de instruire a computerului pentru recunoașterea particularităților vocale ale utilizatorului. Acest lucru este prioritar și se realizează, așadar, înainte de a avea loc etapa de recunoaște a comenzilor vocale.
Informația audio este apoi preluată de la microfonul șii convertită analogic-digital , ea fiind apoi transmisă unității de analiză a caracteristicilor vocale. Aceste caracteristici vocale reprezintă caracteristicile stocate la rularea sesiunii de instruire a computerului. Informația este apoi preluată de motorul de recunoaștere vocală ales (împărțit sau dedicat). Această aplicație folosește unul dedicat. Obiectivul unității de potrivire este de a transcrie fluxul de date de ieșire din modulul de condare spectrală într-o secvență de unități de vorbire. Funcția acestui modul se regăsește sub denumirea de analiză caracteristică, decodare fonetică sau segmentare fonetică.

Ca o următoare etapă, motorul de recunoaștere vocală emite o ipoteză de recunoaștere pe baza dicționarului de cuvinte stocat intern (acesta fiind, de fapt, etapa de decodare lexicală), iar rezultatul ipotezei este injectat unității de analiză sintactică. Analizele care urmează după decodarea lexicală au ca scop eliminarea celor mai slabi candidați trimiși de-a lungul modulului de decodare lexicală înainte ca să se realizeze selecția de cuvinte optime.

Informațiile acustice precum stresul, intonația, schimbarea amplitudinii etc. , obținute din forma de undă pot fi percepute de asemeanea, dar mai pot fi utilizate și surse de informații din afara formei de undă. Aceste informații se împart în trei categorii : informații sintactice, semantice și pragmatice.

Analiza sintactică se bazează pe regulile gramaticale definite in fișierul extern xml de gramatică. Ultima etapă în procesarea cuvântului recunoscut este luarea deciziei de către unitatea de model de sarcină. Aici se implementează instrucțiunile hotărâte de programator (comanda, control, dictare, etc).

În figura următoare sunt prezentate dependențele care există între componentele software care alcătuiesc sistemul informatic:

Fig. 4.3 Diagrama de componente

Pentru o mai bună înțelegere a algoritmului de funcționare al aplicației s-a realizat o diagramă de flux cu ajutorul instrumentului Visual Paradigm 12.0. Următoarea diagramă descrie activitatea de deschidere și închidere a fișierelor de către aplicație:

Fig. 4.4 Diagrama de flux

Această diagrama de flux descrie activitatea aplicației în esență, fiind urmăriți pașii principali ai unui sistem dezvoltat pe bază de recunoaștere vocală și care implementează Modelele Markov ascunse.

Întreg algoritmul este ascuns utilizatorului, oferindu-i, în schimb, o interfață prin care acesta poate gestiona propriile comenzi vocale.

5. IMPLEMENTAREA SOLUȚIEI

Modulul de recunoaștere vocală are la bază biblioteca “System.Speech”. Pentru a putea fi folosită această bibliotecă trebuie ca Microsoft .NET Framework 4 să fie instalat pe computerul pe care se realizează dezvoltarea. Pentru a putea fi folosită în proiect trebuie să existe o referință către această. Această referință se realizează astfel:

-în Solution Explorer si se apasa click dreapta de structura “References”:

Fig. 5.1. Structură proiect

-în “Reference Manager” ->Assemblies->Framework se va selecta librăria ”System.Speech”

Fig. 5.2. Includerea librăriei ‘’System.Speech’’

Această setare se realizează, după cum este prezentată și în figura de mai sus, pentru layer-ul “BussinesLogic”, deoarece în acest layer se vor folosi toate clasele responsabile cu prelucrarea vocală.

Versiunile de Windows pe care această opțiune funcționează sunt urmatoarele:

Windows 8

Windows Server 2012

Windows 7

Windows Vista SP2

Windows Server 2008 (Server Core Role not supported)

Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported).

Windows Vista SP1 or later

Windows Server 2008 (Server Core not supported)

Windows Server 2008 R2 (Server Core supported with SP1 or later)

Windows Server 2003 SP2

Windows XP SP2

Windows Server 2008 R2

Windows Server 2008

Windows Server 2003 

Windows 98, Windows Server 2000 SP4

Windows CE

Windows Millennium Edition

Windows Mobile for Pocket PC

Windows Mobile for Smartphone

Windows XP Media Center Edition

Windows XP Professional x64 Edition

Windows XP SP2

Windows XP Starter Edition

Pentru a putea utiliza clasele ce sunt folosite pentru recunoaștere vocală, este necesară crearea unei referințe către acestea în fiecare fișier în care sunt utilizate.

Declararea acestora în pachet este următoarea:

-using System.Speech.Recognition;

-using System.Speech.Synthesis;

Obiectele care vor stoca sunetele sunt gestionate astfel:

-SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine();

Pentru a folosi modul de recunoaștere gramaticală necesar pentru recunoașterea frazelor se folosește metoda “LoadGrammar”. Structura acesteia este următoarea:

_recognizer.LoadGrammar(new Grammar(new GrammarBuilder(“test”)){Name=”testGRammar});

În acest caz, se introduce un nou dicționar în obiectul _recognizer, care are fraza “test” cu numele “testGrammar”.

Un alt mod de implementare al metodei, care este de asemenea mai ușor ar fi următorul:

– Grammar gram = new Grammar(new GrammarBuilde(“test”));

– gram.Name =”testGrammar”;

– _recognizer.loadGrammar(gram);

Există, de asemenea, posibilitatea de adăugare a unei fraze care să nu conțină un atribut “nume”. Atunci, codul s-ar scrie fără adăugarea acestuia astfel:

_recognizer.LoadGrammar(new Grammar(new GrammarBuilder(“test”)));

Adăugarea acestui nume este necesară numai în cazul în care se dorește înlăturarea frazei din obiect.

Se mai poate folosi, de asemenea, și încărcarea asincronă. Pentru a se realiza acest lucru, trebuie să se folosească acțiunea “LoadGrammarAsync”. Un exemplu de de implementare a metodei este:

void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)

{

if (e.Result.Text == "test")

{

Console.WriteLine("The test was successful!");

}

}

După cum se poate observa, codul de mai sus verifică asincron dacă rezultatul este cuvântul “test”.

Selectarea intrării audio se va realiza prin implementarea următoarei metode:

-_recognizer.SetInputToDefaultAudioDevice();

Setarea modului asincron se face in felul următor:

-_recognizer.RecognizeAsync(RecognizeMode.Multiple);

Astfel, întregul cod va avea următoarea structură:

static void Main(string[] args)

{

_completed = new ManualResetEvent(false);

SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine();

_recognizer.LoadGrammar(new Grammar(new GrammarBuilder("test")) Name = { "testGrammar" });

_recognizer.LoadGrammar(new Grammar(new GrammarBuilder("exit")) Name = { "exitGrammar" });

_recognizer.SpeechRecognized += _recognizer_SpeechRecognized;

_recognizer.SetInputToDefaultAudioDevice(); _recognizer.RecognizeAsync(RecognizeMode.Multiple);

_completed.WaitOne();

_recognizer.Dispose();

}

void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)

{

if (e.Result.Text == "test")

{

Console.WriteLine("The test was successful!");

}

else if (e.Result.Text == "exit")

{

_completed.Set();

}

}

Așadar, se poate observa în codul de mai sus cum a fost implementat modul asincron de recunoaștere vocală. Cele doua fraze pe care acest cod le poate recunoaște sunt “test” și “exit”.

Pentru a putea elimina un element din recunoașterea vocală, se va folosi metoda “UnloadGrammar” astfel:

foreach (Grammar gr in _recognizer.Grammars)

{

if (gr.Name == "testGrammar")

{

_recognizer.UnloadGrammar(gr); break; }

}

Un alt exemplu de funcție a sistemului, care este foarte utilă, îl reprezintă verificarea interpretabilității vocii primită ca input. Acest lucru, în general, se face astfel:

static void _recognizer_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)

{

if (e.Result.Alternates.Count == 0)

{

Console.WriteLine("Cuvant respins.");

return;

}

foreach (RecognizedPhrase r in e.Result.Alternates)

{

Console.WriteLine(" " + r.Text);

}

}

De asemenea, este posibilă și dictarea către computer. Acest lucru se realizează prin utilizarea “Windows Desktop Speech ”. Acest sistem poate suporta cu ușurință dictarea. In prima faza se configureaza dictionarul iar in faza a doua se verifica cuvintele rostite. Toate cuvintele ce se găsesc in dicționar și sunt rostite, se vor stoca in string-ul “data”.

Interfața grafică cu utilizatorul a aplicației este împărțită în trei module principale:

1) Fereastra principală;

2) Fereastra responsabilă cu comanda vocală;

3) Fereastra responsabilă cu modul de dictare;

Fereastra principală, care apare atunci când este rulată aplicație, are următorul design:

5.3. Fereastra principală a aplicației

În prima secțiune există două câmpuri, “Cuvânt” și “ID”. Completând aceste două câmpuri, se adaugă în dicționar un nou cuvânt. Interfața oferă astfel și posibilitatea vizualizării tuturor cuvintelor din dicționar ce au fost adăugate de către utilizator. Dicționarul introdus se poate salva, la rândul său, în format XML sau într-o bază de date, prin simpla apăsare a unuia dintre cele două butoane “Salveaza dicționarul într-o bază de date” sau “Salveaza dicționarul în XML”. Încărcarea acestuia se poate realiza prin apăsarea unuia dintre cele două butoane, “Incarcă dicționarul din ACCESS” sau “Incarcă dicționarul din XML”.

Programul permite accesarea a doua moduri de comunicare vocală:

-Modul dictare;

-Modul comanda;

Interfața grafică pentru modul dictare este următoarea:

Fig 5.4. Fereastra ‘’Mod Dictare’’ a aplicației

Pentru a putea fi folosit acest mod, trebuie, mai întâi, să se introducă dicționarul de cuvinte. În momentul în care se apasă butonul “Incepe Dictarea”, se va putea incepe dictarea. Cuvintele găsite in dicționar se vor adăuga in textbox-ul de jos.

Interfața grafică pentru “Modul Comandă” se va deschide urmatoarea fereastra:

Fig 5.4. Fereastra ‘’Mod Comandă’’ a aplicației

Pentru ca utilizatorul să aibă posibilitatea de a realiza o comandă, trebuie activat modul comandă. Acest lucru se realizează prin accesarea butonului “Pornește Modul comandă”. De exemplu, dacă se rostește “Comanda 11”, se va accesa comanda numărul 11.

Toate elementele de comandă din interfața grafică au câte un eveniment propriu. Spre exemplu, evenimentele ferestrei principale sunt următoarele:

private void btAdauga_Click(object sender, EventArgs e)

{

}

private void btSaveToAccess_Click(object sender, EventArgs e)

{

}

private void btSaveToXML_Click(object sender, EventArgs e)

{

}

private void btLoadFromACCESS_Click(object sender, EventArgs e)

{

}

private void btLoadFromXML_Click(object sender, EventArgs e)

{

}

private void btModDictare_Click(object sender, EventArgs e)

{

}

private void btModComanda_Click(object sender, EventArgs e)

{

}

În layer-ul “BusinessLogic” se vor regăsi principalele clase care au rolul de a gestiona logica de funcționare a tool-ului. Aceste clasele sunt:

-WordsDictionary – are rolul de a se ocupa cu managementul dicționarului.

-ComandaVocala – gestionează comanda vocală.

-VoiceRecognition – gestionează intreaga interacțiune cu vocea.

-ModDictare – gestionează acțiunea de dictare.

-GeneralLogic – conține metode care au rolul de a întreprinde diverse acțiuni de întreținere.

In layer-ul “DatabaseLogic” se găsesc doar elementele care au rolul de a interacționa cu baza de date sau cu fișierul XML. Aici sunt implementate două clase :

-AccessLogic – are rolul de a interacționa cu baza de date Acces.

-XML_Logic – are rolul de a interactiona cu baza de date din fișierul XML.

5.1. MODUL DE FUNCȚIONARE AL APLICAȚIEI ȘI INTERACȚIUNEA CU UTILIZATORUL

Cerințele de funcționare ale programului sunt următoarele :

-Sistemul de operare Windows XP, 7,8,8.1;

-Microfon;

-.NET Framework 4 sau o versiune mai nouă;

Intalarea programului se face prin simpla copiere a directorului ce conține fișierele software-ului în computerul pe care dorim sa rulăm aplicația. Cel mai important fișier este “VoiceRecognition.exe” care lanseaza aplciatia.

Fig. 5.5. Executabilul aplicației

Pentru a putea configura baza de date lexicală din ACCESS trebuie să avem instalat Microsoft Office. Pentru Modul Comandă și Modul Dictare este nevoie de microfon.

Această aplicație este exemplu prin care utilizatorul poate comunica vocal cu calculatorul. Cele două moduri au rolul de a arată beneficiile comunicării vocale cât și posibilitățiile viitoare prin care omul se va putea detașa de tastatură și mouse. Este mult mai ușor ca utilizatorul să poată comunica cu calculatorul. Totuși, pentru a se putea comunica cu ușurință, comenzile vocale trebuie memorate de către utilizator sau afișate de către interfața grafică ( exemplu fiind Modul Comandă).

6.CONCLUZII

Această aplicație se adresează, la acest nivel de dezvoltare, tuturor persoanelor care dețin un computer și vor să-l utilizeze într-un mod mai practic și într-un timp mai scurt prin intermediul comenzilor vocale. Astfel, prin simpla rostire a unor comenzi, utilizatorul poate deschide și închide anumire fișiere foarte repede sau poate naviga pe internet.

Există, desigur, numeroase îmbunătățiri care pot fi aduse acestei aplicații. Aceste îmbunătățiri există atât la nivel de interfață, cât și de cod. De exemplu, se poate dezvolta baza de date ce conține comenzile pe care le poate executa software-ul. Astfel, aplicabilitatea sa ar fi una sporită, iar performanțele aplicației ar crește.

O altă îmbunătățire utilă ce poate fi adusă aplicației este posibilitatea ca sistemul să răspundă la rândul său prin voce, având în spate o bază de date ce conține posibilele cuvinte sau fraze pe care acesta le poate rosti. Astfel s-ar realiza un dialog între utilizator și sistem. Ca un plus, există posibilitatea ca vocea sistemului să nu fie una predefinită, ci una înregistrată. Așadar, sistemul poate avea vocea utilizatorului sau orice altă voce se dorește a fi implementată de către utilizator.

O problemă ce poate fi cercetată amănunțit și care este foarte interesantă de altfel, este aceea de a avea un sistem ce poate conține mai multe “personalități”. În altă ordine de idei, pot fi implementați, de exemplu, doi identificatori de voce care pot executa sau nu aceleași comenzi. Pentru a nu se suprapune cele două identități, acestea se programează în așa fel încât controlul să fie preluat de unul dintre cele doi identificatori la rostirea unor cuvinte sau fraze cheie. Astfel, fiecare identitate se va activa pe rând, în momentul în care utilizatorul rostește cuvintele cheie specifice acesteia. O adevărată provocare poate fi utilizarea acestor identificatori concomitent.

Un avantaj pe care îl oferă această aplicație este oferit de posibilitatea de a personaliza aplicația. Concret, utilizatorul poate adăuga comenzi noi prin simpla adăugare a acestora în baza de date sau le poate modifica pe cele existente. Spre exemplu, software-ul poate deschide diverse fișiere prin rostirea unor cuvinte specifice, fiind specificată de altfel și calea acestora. De asemenea, deși interfața este una simplă pentru a ca aplicația să poată fi folosită cât mai ușor de cât mai multe categorii de utilizatori, aceasta poate fi oricând modificată în funcție de cerințele utilizatorului.

Toate aceste lucruri se pot realiza fie de către utilizator, dacă acesta are posibilitatea sau cunoștințele necesare în domeniu, fie de către un programator. Personalizarea unui software nu necesită un consum major de resurse (bani, timp etc.), toate acestea variind, bineînțeles, în funcție de cerințele utilizatorului.

Există, însă, și dezavantaje ale acestor aplicații bazate pe recunoașterea vocală. Unul dintre cele mai importanți factori care afectează într-o mare măsură buna funcționare a sistemului, este mediul zgomotos. În această privință, marii dezvoltatori de software-uri au descoperit multe soluții pentru rezolvarea acestei problleme, însă acest factor perturbativ nu poate fi eliminat complet.

Bibliografie

[1] Wikipedia, Speech Recognition, Disponibil: https://en.wikipedia.org/?title=Speech_recognition

[2] Wikipedia, Microsoft Speech API , Disponibil: https://en.wikipedia.org/wiki/Microsoft_Speech_API

[3] Microsoft, SpeechRecognitionEngine Class, Disponibil: https://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine(v=vs.110).aspx

[4] (IJCSIS) International Journal of Computer Science and Information Security Vol. 6, No. 3, 2009, Disponibil: http://arxiv.org/ftp/arxiv/papers/1001/1001.2267.pdf

[5] M. Gales and S. Young, “Foundations and TrendsR in Signal Processing “ Vol. 1, No. 3 (2007) 195–304 [Online] , Disponibil: http://mi.eng.cam.ac.uk/~mjfg/mjfg_NOW.pdf

[6] D.B. Paul, “Speech Recognition Using Hidden Markov Models” [Online] , Disponibil: http://www.ll.mit.edu/publications/journal/pdf/vol03_no1/3.1.3.speechrecognition.pdf

[7] L. R. Rabiner and B. Juang, “Fundamentals of Speech Recognition”, PearsonEducation (Asia) Pte. Ltd., 2004

[8] “What is the difference between a Speech Recognition Engine and a Speech Recognition System” [Online], Disponibil: http://www.voxforge.org/home/docs/faq/faq/what-is-the-difference-between-a-speech-recognition-engine-and-a-speech-recognition-system

[9] Sribd, “Technology Insight Report For SpeechRecognition Systems”, cap. 9, Disponibil:

[10] Surabhi Bansal and Ruchi Baheti “SPEECH RECOGNITION SYSTEM”, Disponibil: https://cseweb.ucsd.edu/classes/fa06/cse237a/finalproj/ruchi.pdf

[11] “Speech recognition, speech to text, text to speech, and speech synthesis in C#” [Online], Disponibil: http://www.codeproject.com/Articles/483347/Speech-recognition-speech-to-text-text-to-speech-a

Similar Posts