Sunteți pe pagina 1din 3

Scopul acestui proiect de inteligență artificială este de a vă da o idee despre elementele de bază

ale unei interfețe vocale cu utilizatorul (VUI) și de a vă învăța cum să proiectați un sistem simplu
de inteligență artificială care poate înțelege intenția utilizatorului într-o întrebare de calcul
formulată verbal și să răspundă în mod corespunzător. Un astfel de sistem de inteligență artificială
cu comandă vocală poate fi util în diverse contexte, cum ar fi proiectarea de tehnologii de
asistență pentru persoanele cu handicap vizual și pentru persoanele în vârstă. De exemplu, un
utilizator cu deficiențe de vedere poate utiliza calculatorul vocal pentru a face calcule matematice
verbal, fără a fi nevoit să tasteze toate detaliile calculului.

Interfața grafică a fost creată pentru dvs. în fișierul de pornire. Vă rugăm să modificați
proprietățile componentelor după cum doriți pentru a obține aspectul dorit. Cu toate acestea, vă
rugăm să nu redenumiți componentele, deoarece acest tutorial se va referi la numele date în
instrucțiuni.

În interfața grafică veți observa că există un buton Speak (Vorbește) pe care utilizatorul îl va
apăsa pentru a comunica verbal calculul pe care dorește să îl efectueze. Interfața va afișa apoi în
scris ceea ce a auzit Calculatorul și va răspunde, atât în scris cât și verbal, cu rezultatul calculului.
În cazul în care Calculatorul nu a putut auzi o interogare de calcul semnificativă sau nu a putut
înțelege intenția utilizatorului, va spune acest lucru.

Primul lucru pe care îl veți aborda este să extrageți numerele din propoziția rostită de utilizator.
Le veți folosi mai târziu, când veți efectua operația matematică. Pentru a face acest lucru, mai
întâi veți inițializa o variabilă globală numită numberList în care vor fi stocate numerele din
interogarea de calcul. Deoarece această variabilă va fi o listă de numere, ea va fi inițializată la o
listă goală.

Apoi veți crea o procedură numită extractNumbers care, atunci când primește o propoziție de
intrare, va extrage valorile numerice din acea propoziție și le va stoca în variabila globală
numberList. Pentru a face acest lucru:

1. alegeți o procedură și numiți-o extractNumbers.

2. utilizați unelte de reglare pentru a adăuga un parametru de intrare și numiți-o propoziție

3. setează variabila globală numberList la lista goală. Trebuie să reinitializați variabila de fiecare
dată când apelați această procedură, deoarece fiecare calcul inițiat de utilizator va utiliza o nouă
pereche de numere.

4. utilizați blocul de text "split at spaces" pentru a împărți propoziția de intrare într-o listă de
cuvinte și utilizați blocul "for each word in list" pentru a verifica dacă unul dintre cuvinte este un
număr.

5. dacă un cuvânt este un număr, se adaugă la variabila globală numberList

Deoarece există mai multe modalități prin care un utilizator poate indica faptul că dorește să
efectueze o operațiune de înmulțire, este esențial să se identifice toate aceste abordări diferite ca
fiind o intenție de înmulțire. De exemplu, toate afirmațiile următoare sunt moduri diferite de
exprimare a aceleiași intenții de înmulțire:
ce este 73*51 ?

cât face 73x51 ?

calculați 73X51 ?

care este produsul dintre 73 și 51 ?

care este rezultatul când înmulțești 73 cu 51 ?

ce înseamnă 73 ori 51 ?

Rețineți că cuvintele/simbolurile/numerele cheie de culoare verde definesc intenția de înmulțire,


în timp ce cuvintele/simbolurile de culoare roșie pot fi ignorate.

Acum veți crea o variabilă globală multiplicationIntents, care va fi o listă cu toate modalitățile
obișnuite de comunicare a intenției de înmulțire prin simboluri și cuvinte:

Acum veți scrie codul pentru a da funcționalitate butonului Vorbește. Atunci când se face clic pe
butonul Speak:

ștergeți UserTextLabel și CalculatorTextLabel.

apelați SpeechRecognizer pentru a obține textul pe care l-a rostit utilizatorul.

Atunci când SpeechRecognizer își îndeplinește sarcina și se întoarce cu un rezultat text:

1. setați UserTextLabel la acest rezultat text. Acesta indică ceea ce a auzit Calculatorul.
2. se extrag numerele din rezultatul textului pentru a le stoca în variabila globală numberList
utilizând procedura extractNumbers.
3. setează CalculatorTextLabel la o declarație implicită care indică faptul că Calculatorul nu
a putut înțelege ceea ce a cerut utilizatorul și îl invită să pună o întrebare clară de calcul.
De exemplu: "Nu am putut înțelege. Vă rog să-mi puneți o întrebare de înmulțire sau de
adunare sau de scădere sau de împărțire de genul: "Nu am înțeles: Cât face 123 ori 85?"
4. verifică dacă au fost extrase exact două numere din propoziția rostită de utilizator și, în caz
afirmativ, determină
 dacă intenția a fost de înmulțire, setează CalculatorTextLabel la produsul celor
două numere.
5. să utilizeze componenta TextToSpeech pentru ca Calculator să citească verbal conținutul
CalculatorTextLabel.

În acest moment, calculatorul funcționează foarte asemănător cu modul în care un începător care
învață o limbă străină ar putea încerca să funcționeze într-o țară străină atunci când ascultă un
vorbitor nativ: câteva cuvinte cheie cunoscute sunt folosite pentru a identifica intenția vorbitorului
nativ, iar restul cuvintelor sunt complet ignorate în speranța că sunt irelevante și, prin urmare, nu
contează cu adevărat. De exemplu, în următoarea propoziție, toate cuvintele în roșu sunt
irelevante și pot fi ignorate, în timp ce cuvintele în verde sunt foarte relevante pentru a defini
intenția vorbitorului:

S-ar putea să vă placă și