Sunteți pe pagina 1din 10

Prelucrarea digitală a semnalelor

UNIVERSITATE A NAȚIONALĂ DIN ȘTIINȚĂ ȘI


TEHNOLOGIE POLITEHNICA BUCUREȘTI

Departamentul Telecomenzi și Electronică în


Transporturi

Recunoașterea vocală

Studenți
Mihai- Adrian COSTICĂ,
Mihai- Andrei DEACU
Prelucrarea digitală a semnalelor

Cuprins

Prezentare generală ....................................................................................................... 3


Scurt Istoric ................................................................................................................. 4
Mod de funcționare ........................................................................................................ 4
Raspberry Pi................................................................................................................... 5
Google Web Speech API............................................................................................... 6
Cod Python ..................................................................................................................... 6
Explicare cod .................................................................................................................. 7
Bibliografie ................................................................................................................... 10
Prelucrarea digitală a semnalelor

Prezentare generală

Recunoașterea vocală este o ramură interdisciplinară a informaticii și lingvisticii


computaționale care dezvoltă metodologii și tehnologii ce permit recunoașterea și traducerea
limbajului vorbit în text de către computere. Este cunoscută și sub denumirea de recunoaștere
automată a vorbirii (ASR), recunoaștere vocală de calculator sau conversie vorbire-text (STT).
Aceasta integrează cunoștințe și cercetări în domeniile informaticii, lingvisticii și ingineriei
calculatoarelor. Procesul invers este sinteza vocii.
Unele sisteme de recunoaștere vocală necesită "înscriere" (numită și "înrolare"), în care un
vorbitor citește un text sau vocabular izolat în sistem. Sistemul analizează vocea specifică a
persoanei și o utilizează pentru a ajusta recunoașterea vorbirii acelei persoane, rezultând o creștere
a preciziei. Sistemele care nu folosesc antrenament sunt denumite sisteme "independente de
vorbitor". Sistemele care folosesc antrenament sunt denumite "dependente de vorbitor".
Aplicațiile de recunoaștere vocală includ interfețe vocale pentru utilizatori, cum ar fi
compunerea vocală (de exemplu, "apelează acasă"), rutarea apelurilor (de exemplu, "aș dori să fac
un apel cu taxă inversă"), controlul electrocasnicelor în casă, căutarea cuvintelor cheie (de
exemplu, găsirea unui podcast în care au fost rostite anumite cuvinte), introducerea simplă de date
(de exemplu, introducerea unui număr de card de credit), pregătirea de documente structurate (de
exemplu, un raport de radiologie), determinarea caracteristicilor vorbitorului, procesarea vorbire-
text (de exemplu, procesatoare de texte sau e-mailuri) și în aeronautică (de obicei denumită intrare
vocală directă).
Termenul de recunoaștere a vocii sau identificare a vorbitorului se referă la identificarea
vorbitorului, în loc de ceea ce spun ei. Recunoașterea vorbitorului poate simplifica sarcina de a
traduce vorbirea în sisteme care au fost antrenate pe vocea unei persoane specifice, sau poate fi
folosită pentru autentificarea sau verificarea identității unui vorbitor în cadrul unui proces de
securitate.
Din perspectiva tehnologică, recunoașterea vocală are o istorie lungă, cu mai multe valuri
de inovații majore. Recent, domeniul a beneficiat de avansuri în învățarea profundă și prelucrarea
de date voluminoase. Progresele sunt evidențiate nu numai de creșterea numărului de lucrări
academice publicate în domeniu, ci mai ales de adoptarea la nivel mondial a diverse metode de
învățare profundă în proiectarea și implementarea sistemelor de recunoaștere vocală.
Prelucrarea digitală a semnalelor

Scurt Istoric

Până în începutul anilor 2010, recunoașterea vocală, numită și recunoașterea vocii, era clar
diferențiată de recunoașterea vorbitorului, iar independența de vorbitor era considerată o avansare
majoră. Până atunci, sistemele necesitau o perioadă de "antrenament". În 1987, o reclamă pentru
o păpușă avea sloganul "În sfârșit, păpușa care te înțelege" - în ciuda faptului că era descrisă ca
"pe care copiii o puteau antrena să răspundă la vocea lor".
În 2017, cercetătorii de la Microsoft au atins un moment istoric de paritate umană prin
transcrierea discursului telefonic conversațional în cadrul sarcinii larg recunoscute Switchboard.
Mai multe modele de învățare profundă au fost utilizate pentru optimizarea exactității recunoașterii
vocale. Rata de eroare a cuvintelor în recunoașterea vorbirii a fost raportată să fie la fel de scăzută
ca a patru transcrieri umane profesioniste care lucrau împreună pe aceeași sarcină de referință,
finanțată de echipa de vorbire IBM Watson pentru aceeași sarcină.

Mod de funcționare

Software-ul de recunoaștere vocală pe calculatoare necesită conversia semnalului audio


analogic în semnale digitale, cunoscută sub denumirea de conversie analog-digital (A/D). Pentru
ca un computer să descifreze un semnal, trebuie să aibă o bază de date digitală de cuvinte sau
silabe, precum și un proces rapid pentru a compara aceste date cu semnalele. Modelele de vorbire
sunt stocate pe hard disk și încărcate în memorie când programul este în funcțiune. Un comparator
verifică aceste modele stocate în raport cu ieșirea convertorului A/D - o acțiune numită
recunoaștere de tipar.
În practică, dimensiunea vocabularului eficient al unui program de recunoaștere vocală este
direct legată de capacitatea RAM a computerului în care este instalat. Un program de recunoaștere
vocală rulează mult mai rapid dacă întregul vocabular poate fi încărcat în RAM în loc să căute pe
hard disk pentru unele potriviri. Viteza de procesare este crucială, deoarece afectează cât de rapid
poate căuta computerul în RAM pentru potriviri.
Sistemele de recunoaștere vocală analizează vorbirea printr-unul dintre cele două modele:
modelul Markov ascuns și rețelele neurale. Modelul Markov ascuns descompune cuvintele rostite
în fonemele lor, în timp ce rețelele neurale recurente utilizează ieșirea din pașii anteriori pentru a
influența intrarea în pasul curent.
Prelucrarea digitală a semnalelor

Figura 1. Schema de functionare a recunoasterii vocale

Raspberry Pi

Vom folosi o plăcuță Raspberry Pi pentru implementarea codului ce va fi prezentat în


capitolul următor, aplicația pe care o vom prezenta fiind următoarea: o recunoaștere vocală prin
detectarea și activarea unui microfon, ulterior ascultarea unei singure fraze și încercarea de
recunoaștere a cuvintelor spuse cu ajutorul Google Web Speech API, în final afișându-se sub formă
de text rezultatul.

Figura 2. Pinii RaspberryPi 4


Prelucrarea digitală a semnalelor

Google Web Speech API

API-ul Google Web Speech este o interfata de programare a aplicațiilor (API) oferită de
Google, care permite dezvoltatorilor să integreze tehnologia de recunoaștere vocală în aplicațiile
și serviciile lor online. Acest API face parte din setul mai larg de servicii oferite de Google Cloud.
Prin intermediul Google Web Speech API, dezvoltatorii pot beneficia de capacitățile
avansate de recunoaștere vocală oferite de Google. API-ul permite transformarea vorbirii umane
în text și poate fi utilizat într-o varietate de aplicații, cum ar fi asistenții vocali, transcrierea
automată a discuțiilor sau alte servicii care implică interacțiunea vocală cu utilizatorii.

Cod Python

import speech_recognition as sr

recognizer = sr.Recognizer()

def recognize_speech_from_mic(recognizer, microphone):


if not isinstance(recognizer, sr.Recognizer):
raise TypeError("`recognizer` must be `Recognizer` instance")
if not isinstance(microphone, sr.Microphone):
raise TypeError("`microphone` must be `Microphone` instance")

with microphone as source:


recognizer.adjust_for_ambient_noise(source)
print("Se ascultă…")
audio = recognizer.listen(source)
response = {
"success": True,
"error": None,
"transcription": None
}
try:
Prelucrarea digitală a semnalelor

response["transcription"] = recognizer.recognize_google(audio, language="ro-RO")


except sr.RequestError:
response["success"] = False
response["error"] = "API indisponibil"
except sr.UnknownValueError:
response["error"] = "Nu s-a putut realiza recunoașterea.."

return response

microphone = sr.Microphone()

while True:
response = recognize_speech_from_mic(recognizer, microphone)

if response["transcription"]:
print("You said: {}".format(response["transcription"]))

#exemplu de cod pentru realizarea unei comenzi specifice utilizând recunoașterea vocală
if "lumină" in response["transcription"].lower():
print("Se aprind luminile.")
elif "închide" in response["transcription"].lower():
print("Se închid luminile.")
if response["error"]:
print("Error: {}".format(response["error"]))

Explicare cod

import speech_recognition as sr
recognizer = sr.Recognizer()
Aici se importă biblioteca SpeechRecognition sub aliasul sr și se creează o instanță a
obiectului Recognizer.

def recognize_speech_from_mic(recognizer, microphone):


# Verificare tipurilor de obiecte
Prelucrarea digitală a semnalelor

if not isinstance(recognizer, sr.Recognizer):


raise TypeError("`recognizer` must be `Recognizer` instance")
if not isinstance(microphone, sr.Microphone):
raise TypeError("`microphone` must be `Microphone` instance")

with microphone as source:


# Ajustare pentru zgomotul ambiental
recognizer.adjust_for_ambient_noise(source)
print("Se ascultă…")
# Înregistrarea sunetului de la microfon
audio = recognizer.listen(source)

Această funcție primește un obiect Recognizer și un obiect Microphone, apoi utilizează


metoda listen pentru a înregistra sunetul de la microfon după ajustarea pentru zgomotul ambiental.

response = {
"success": True,
"error": None,
"transcription": None
}

Un dicționar care va conține rezultatele procesului de recunoaștere vocală. Inițial, se


presupune că operația a fost realizată cu succes (success este True).

try:
response["transcription"] = recognizer.recognize_google(audio, language="ro-RO")
except sr.RequestError:
response["success"] = False
response["error"] = "API indisponibil"
except sr.UnknownValueError:
response["error"] = "Nu s-a putut realiza recunoașterea.."

În acest bloc, încearcă să realizeze recunoașterea vocală folosind Google Speech API. Dacă
apar erori (de exemplu, API-ul este indisponibil sau nu se poate recunoaște nimic), acestea sunt
gestionate prin capturarea excepțiilor și actualizarea dicționarului response.
Prelucrarea digitală a semnalelor

return response

Funcția recognize_speech_from_mic întoarce dicționarul response cu rezultatele


recunoașterii vocale.

microphone = sr.Microphone()

Se creează o instanță a obiectului Microphone care reprezintă dispozitivul de intrare pentru


recunoașterea vocală.

while True:
response = recognize_speech_from_mic(recognizer, microphone)

if response["transcription"]:
print("Ai spus: {}".format(response["transcription"]))

# Exemplu de comandă specifică utilizând recunoașterea vocală


if "lumină" in response["transcription"].lower():
print("Se aprind luminile.")
elif "închide" in response["transcription"].lower():
print("Se închid luminile.")

if response["error"]:
print("Eroare: {}".format(response["error"]))

În bucla while True, se apelează funcția recognize_speech_from_mic pentru a realiza


recunoașterea vocală continuă. Dacă recunoașterea a avut succes, textul transcris este afișat. De
asemenea, există un exemplu de comandă specifică ("lumină" sau "închide") care poate declanșa
acțiuni specifice. Eventualele erori sunt, de asemenea, afișate. Este important de menționat că
această buclă nu se va termina niciodată (while True), deci programul va executa recunoașterea
vocală în mod continuu până când este oprit manual.
Prelucrarea digitală a semnalelor

Bibliografie

[1]. What is Voice Recognition? | Definition from TechTarget


[2]. Speech recognition - Wikipedia
[3]. Web Speech API - Wikipedia, the free encyclopedia
[4]. How Does Speech Recognition Work? - Lexacom
[5]. How Does Speech Recognition Technology Work? (summalinguae.com)

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