Conversatie formala cu o masina de calcul

Appletul de la aceasta pagina demonstreaza posibilitatea intretinerii unui dialog formal intre un subiect uman si un calculator, sau masina de calcul cu suport Java. Aplicatia a fost programata integral in Java, si reprezinta o portare pe WEB a unui sistem ce combina doua module (disponibile free pe internet): un sistem text-to-speech (FreeTTS) si un sistem de recunoastere vocala (Sphinx4). Pe scurt, calculatorul simuleaza un partener de discutii: asculta ce ii se spune, analizeaza expresiile si in functie de ele incearca sa dea un raspuns (vocal).


Functionare

Dupa ce appletul se downloadeaza si se incarca in memeorie, un buton start apare in partea de sus a paginii web, indicand ca robot este gata de discutii. Daca totul a fost incarcat si configurat cu succes, robotul ar trebui sa se comporte in felul urmator: dupa apasarea butonului de start, dureaza cateva secunde pentru incarcarea in memorie a engine-ului de recunoastere vocala. Dupa incarcarea completa, robotul intra in starea de ascultare, si asteapta sa ii se spuna ceva conform cu baza sa de cunostiinte. Imediat dupa faza e ascultare incepe faza de analiza, cand robotul cauta in baza sa de cunostiinte un raspuns adecvat intrebarii primite. Dupa gasirea raspunsului, in faza de pronuntie se furnizeaza raspunsul.

Mai jos este prezentata scurta baza de cunostiinte a robotului (demonstrativ):

(Good morning | Hello | How are you | What is | Who is) (Computer | Today | Your name | Your master)

Se pot concatena cuvinte din primul grup cu cuvinte din al doilea grup; exemple de expresii acceptate de robot:

“Good morning computer”
“What is your name”
“How are you today”


Cerinte minime de sistem

– Placa audio standard, cu boxe si microfon atasate

– 512 MB de memorie RAM

– Browser WEB (Internet Explorer, Mozilla)

– Masina virtuala Java – JRE (vezi mai jos)


Rulare applet

Daca appletul nu s-a incarcat complet, asteapta pana se incarca. Daca esti sigur ca s-a incarcat complet si ca exista un JRE activ in sistemul tau, si totusi appletul nu functioneaza, este posibil ca appletul sa nu aiba suficienta memorie pentru rulare. Limita implicita de 64MB de memorie disponibila pentru appleturi Java este insuficienta pentru rularea din browser a unui engine de TTS si speech-recognition. Verifica sectiunea Configurare (pasul 3) de mai jos pentru incrementarea limitei de memorie; o valoare de 384MB este suficienta (chiar si 256 MB in unele browsere)

Daca appletul ruleaza si este afisat in timp real jurnalul robotului, dar nu se aude nimic in boxe, este posibil sa nu fi setat inca cerintele de securitate pentru applet in JRE-ul curent. Sintetizatorul vocal FreeTTS are nevoie de accesarea unor fisiere de pe disc, precum si de acces la placa audio, accesul fiind interzis implicit de catre sistem pentru appleturi. Pentru a rezolva acest lucru, trebuie editat fisierul de configurare securitate al masinii Java (vezi sectiunea Configurare, pasul 2). Daca si dupa configurare inca nu se aude nimic in boxe, verifica urmatoarele:

– verifica sunetul sistemului, volumul pe fiecare canal, daca driverele audio sunt instalate etc.

– verifica daca sunt pozitionate corect cablurile de audio output si microfon

– seteaza linia de microfon ca linie activa de inregistrare


Configurare

1. Asigura-te ca exista o masina virtuala Java (Java Runtime Environement JRE) instalata in sistemul tau. Poti verifica existenta unui JRE activ la acest link. Daca un JRE e instalat in sistem, vor fi afisate cateva informatii. Verifica si retine numarul de versiune (java version). Pentru o performanta buna recomand ultima versiune de JRE (disponibila aici).

2. Setare cerinte de securitate Java

2.1 Descarca fisierul talkRobot.policy si copiaza-l undeva, de exemplu in C:

2.2 Aplica fisierul de securitate JRE-ului activ. Mergi in dosarul radacina al JRE-ului (JAVA_HOME) de obicei aflat in interiorul dosarului C:Program FilesJava sub Windows; mergi la calea [java_home]libsecurity (de exemplu C:Program FilesJavajre1.6.0libsecurity). Deschide fisierul java.security folosind un editor de texte (ex. Notepad) si localizeaza liniile de text ce incep cu “policy.url”. Fiecare din acestea contin un numar, in genul urmator:

policy.url.1=[some dir]
policy.url.2=[some dir]

Dupa ultima din aceste linii, adauga linia urmatoare:

policy.url.3=file:/C:/talkRobot.policy


presupunand ca in C: ai copiat fisierul de la pasul 2.1. Salveaza modificarile si inchide fisierul java.security. In momentul acesta appletul are privilegiile necesare rularii pe sistemul tau.

3. Incrementeaza memoria heap pentru JRE. Deoarece appletul foloseste sisteme puternice si mari consumatoare de memorie, cum sunt sistemul de recunoastere vocala si sistemul de voce sintetizata, este nevoie de alocarea unei zone de memorie mai mari decat cea implicita.

Pentru incrementarea memoriei, merci in panoul de control al sistemului (Control Panel), optiunea Java. Selecteaza tab-ul Java si apoi apasa butonul View din cadrul Java Applet Runtime Settings. O noua fereastra se va deschide, unde sunt afisate toate mediile JRE instalate in sistem. Localizeaza JRE-ul activ (vezi pasul 1) – de exemplu 1.6.0 – si editeaza campul Java Runtime Parameters; tasteaza -Xmx384m ,salveaza si inchide fereastra. Ai alocat in acest moment un maxim de memorie de 384MB RAM, suficient pentru applet. Tutorialul de la acest link ar putea fi de ajutor, deasmenea.

4. Selecteaza microfonul ca linie principala de inregistrare. Mergi la Control Panel > Sounds and Audio Devices. Apasa butonul Advanced din cadrul tab-ului Volume. Audio mixerul se lanseaza in acest moment. Selecteaza Options>Properties , apoi Adjust Volume for Recording si apsa OK. Activeaza checkbox-ul Select de sub coloana Microphone. Deasemenea seteaza volumul de inregistrare al microfonului la un nivel ridicat, pentru o acuratete buna a inregistrarii. Pentru a activa mixerul de Playback, urmeaza aceiasi pasi: click la Options>Properties si apoi Adjust Volume for Playback.

In momentul acesta robotul este configurat si gata de utilizare. Enjoy!

Post navigation

2 comments for “Conversatie formala cu o masina de calcul

  1. December 25, 2015 at 12:24

    I had the same issue. It was a simple mtksaie. If you are copying the entire line (like I did) Then you will have a space at the start of the command line. This space needs to be removed for it to work correctly. This is due to Linux sensitivity.

Leave a Reply