Kaip kompiuteris išmoksta suprasti žmogaus kalbą
Kai prieš keliolika metų pirmą kartą pamačiau filmą, kuriame žmonės tiesiog kalbėjo su kompiuteriais, tai atrodė kaip gryna fantastika. Dabar kiekvieną dieną šnekuosi su savo telefonu, prašau virtualios asistentės paleisti muziką ar nustatyti priminimą. Bet kaip iš tiesų veikia ši technologija, kuri leidžia mašinoms suprasti mūsų žodžius?
Balso valdymo sistemų pagrindas – kalbos atpažinimas – tai sudėtingas procesas, kurio metu garsinis signalas paverčiamas tekstiniu įrašu. Skamba paprasta, bet tikrovėje tai vienas iš sudėtingiausių dirbtinio intelekto uždavinių. Žmogaus kalba yra neįtikėtinai įvairi – skirtingi akcentai, intonacijos, greitis, foniniai triukšmai, žargonai. O dar pridėkime prie to emocijas, kurios keičia balso toną ir intensyvumą.
Pirmieji bandymai sukurti kalbą atpažįstančias sistemas prasidėjo dar 1950-aisiais, kai mokslininkai Bell Labs sukūrė įrenginį, galintį atpažinti skaičius nuo nulio iki devynių. Tai buvo revoliucija, nors sistema veikė tik su vieno žmogaus balsu ir reikalavo labai aiškaus tarimo. Šiandien mūsų telefonai supranta milijonus žmonių, kalbančių šimtais skirtingų kalbų ir dialektų.
Garso bangos ir jų pavertimas duomenimis
Viskas prasideda nuo mikrofono. Kai kalbame, mūsų balso stygos sukuria oro virpesius – garso bangas. Mikrofonas šias mechanines bangas paverčia elektriniais signalais, kuriuos kompiuteris gali apdoroti. Čia įvyksta pirmasis svarbus žingsnis – analoginis signalas tampa skaitmeniniu.
Bet neužtenka tiesiog įrašyti garso. Sistema turi išskaidyti šį signalą į mažesnius gabalėlius – paprastai po 10-30 milisekundžių. Kiekvienas toks fragmentas analizuojamas atskirai. Įsivaizduokite, kad jūsų sakinyje „Kokia šiandien temperatūra” yra apie 100-150 tokių mažyčių fragmentų, kuriuos sistema turi apdoroti beveik akimirksniu.
Toliau vyksta tai, ką specialistai vadina požymių išskyrimu. Sistema ieško specifinių garso charakteristikų – dažnio, intensyvumo, trukmės. Čia naudojami sudėtingi matematiniai algoritmai, pavyzdžiui, Furjė transformacija, kuri garso bangą išskaido į atskirus dažnius. Tai panašu į tai, kaip prizmė išskaido baltą šviesą į vaivorykštės spalvas.
Dirbtiniai neuroniniai tinklai ir mašininis mokymasis
Šiuolaikinės kalbos atpažinimo sistemos remiasi dirbtiniais neuroniniais tinklais – programomis, kurios veikia panašiai kaip žmogaus smegenys. Šie tinklai nėra iš anksto užprogramuoti atpažinti konkrečius žodžius. Vietoj to jie mokosi iš pavyzdžių.
Įsivaizduokite, kad turite parodyti sistemai milijonus garso įrašų su atitinkamais tekstais. Sistema pradeda pastebėti dėsningumus – kokie garso požymiai atitinka kokias raides ar garsus. Pavyzdžiui, ji išmoksta, kad tam tikras dažnių derinys dažniausiai reiškia raidę „s”, o kitas – „a”. Po tūkstančių tokių pavyzdžių sistema tampa vis tikslesnė.
Ypač efektyvūs yra rekurentiniai neuroniniai tinklai (RNN) ir jų patobulintos versijos – LSTM (Long Short-Term Memory) tinklai. Jie puikiai tinka kalbos atpažinimui, nes gali „prisiminti” ankstesnius žodžius ir kontekstą. Juk sakinyje „aš noriu valgyti obuolį” žodis „obuolį” turi prasmę tik kontekste su ankstesniais žodžiais.
Naujausia karta – transformerių architektūra, kuri leidžia sistemai dar geriau suprasti kontekstą ir net nuspėti, koks žodis turėtų sekti. Būtent ši technologija padėjo pasiekti šuolį kokybėje pastaraisiais metais.
Kalbos modeliai ir žodyno svarba
Bet neužtenka tik atpažinti garsus. Sistema turi žinoti, kokie žodžiai egzistuoja kalboje ir kaip jie derinami. Čia į pagalbą ateina kalbos modeliai – didžiulės duomenų bazės, kuriose saugoma informacija apie žodžius, jų dažnumą ir įprastus derinius.
Pavyzdžiui, jei sistema girdi kažką panašaus į „aš noriu kavos”, kalbos modelis padeda suprasti, kad tai tikėtina frazė. O jei sistema netiksliai išgirdo ir manė, kad galbūt buvo pasakyta „aš noriu kafos”, kalbos modelis pasakys: „Palaukite, žodis ‘kafos’ lietuvių kalboje nėra įprastas, greičiausiai tai buvo ‘kavos’.”
Geri kalbos modeliai sukuriami analizuojant milžiniškas tekstų kolekcijas – knygas, straipsnius, pokalbius. Kuo daugiau duomenų, tuo protingesnė sistema. Todėl populiarių kalbų, tokių kaip anglų ar ispanų, atpažinimas veikia geriau nei mažiau paplitusių kalbų.
Akustiniai modeliai ir fonetika
Akustinis modelis – tai sistemos žinios apie tai, kaip skirtingi garsai skamba. Jis turi suprasti, kad raidė „a” gali būti tariama skirtingai priklausomai nuo konteksto, akcento ar net nuotaikos.
Lietuvių kalboje turime ilguosius ir trumpuosius balsius, o tai sukelia papildomų iššūkių. Sistema turi atskirti „káltas” (šaltas) nuo „kaltàs” (kaltas). Tai reikalauja labai tikslaus laiko ir intonacijos analizės.
Dar sudėtingiau tampa, kai žmonės kalba greitai, susiliedami žodžius. Vietoj „aš esu” galime pasakyti „ašsu”, ir sistema turi suprasti, kad tai du atskiri žodžiai. Arba priešingai – atpažinti, kad „gal būt” yra du žodžiai, nors skamba beveik kaip vienas.
Modernios sistemos naudoja kontekstui jautrius akustinius modelius, kurie prisitaiko prie kalbančiojo. Jei pradėjote pokalbį su stipriu žemaitišku akcentu, sistema po kelių sakinių pradeda geriau jus suprasti, nes adaptuojasi prie jūsų tarimo ypatnybių.
Triukšmų slopinimas ir signalo valymas
Realybėje retai kalbame idealiai tyloje. Fone groja muzika, ūžia eismas, loja šuo, šneka kiti žmonės. Viena didžiausių problemų – kaip išskirti norimą balsą iš viso šio chaoso.
Šiuolaikinės sistemos naudoja pažangius triukšmų slopinimo algoritmus. Jie analizuoja garso signalą ir bando atskirti, kas yra pastovus fonas (pavyzdžiui, oro kondicionieriaus ūžesys), o kas – kintantis balso signalas. Pastovūs triukšmai gali būti atimami iš bendro signalo, palikant tik balsą.
Dar efektyvesnė technika – mikrofonų masyvų naudojimas. Jūsų išmanusis garsiakalbis turi ne vieną, o kelis mikrofonus skirtingose vietose. Kai kalbate, jūsų balsas pasiekia kiekvieną mikrofoną šiek tiek skirtingu laiku. Sistema gali panaudoti šiuos laiko skirtumus, kad nustatytų, iš kurios krypties ateina balsas, ir susitelkti būtent į tą kryptį, ignoruojant garsus iš kitų pusių.
Realaus laiko apdorojimas ir debesų technologijos
Kai kalbate su savo telefonu ar išmaniuoju garsiakalbiu, dažniausiai vyksta štai kas: jūsų įrenginys įrašo garsą, suspaudžia jį ir siunčia į galingus serverius debesyje. Ten vyksta pagrindinis atpažinimas, o rezultatas – tekstas – grįžta atgal į jūsų įrenginį. Viskas vyksta per sekundes dalis.
Kodėl taip? Nes kalbos atpažinimas reikalauja milžiniškos skaičiavimo galios. Jūsų telefone tiesiog nėra tiek resursų, kad galėtų paleisti visus tuos sudėtingus neuroninius tinklus ir kalbos modelius. Be to, debesyje esantys modeliai gali būti nuolat atnaujinami ir tobulinami be jokių veiksmų iš jūsų pusės.
Tačiau yra ir trūkumų. Reikia interneto ryšio, o tai kelia privatumo klausimų – jūsų balso įrašai keliauja į kažkieno serverius. Todėl pastaraisiais metais vis populiaresnės tampa vietinio apdorojimo sistemos. Naujausi telefonai turi specialius dirbtinio intelekto procesorius, kurie gali atlikti pagrindinį kalbos atpažinimą vietoje, neišsiunčiant duomenų į internetą.
Iššūkiai ir ateities perspektyvos
Nors technologija nuėjo toli, vis dar yra nemažai problemų. Viena didžiausių – konteksto supratimas. Sistema gali puikiai atpažinti žodžius, bet nesuvokti, ką jie reiškia konkrečioje situacijoje. Jei pasakysite „Atidaryk langą”, ji turi suprasti, ar kalbate apie naršyklės langą kompiuteryje, ar norite, kad išmanusis namas atidarytų fizinį langą.
Emocijų atpažinimas – kita sritis, kur dar daug darbo. Sistema turėtų suprasti, ar kalbate rimtai, ironiškai, pykstate ar juokaujate. Tai ypač svarbu virtualių asistentų atveju, kad jie galėtų tinkamai reaguoti.
Daugiakalbystė taip pat kelia iššūkių. Daugelis žmonių kasdienėje kalboje maišo kelias kalbas – pavyzdžiui, lietuviškai kalbėdami įterpia angliškus terminus. Sistema turi mokėti sklandžiai persijunginėti tarp kalbų net vieno sakinio viduje.
Ateityje tikimasi, kad kalbos atpažinimas taps dar tikslesnis ir greitesnis. Jau dabar kuriamos sistemos, galinčios atpažinti ne tik žodžius, bet ir paralingvistinius elementus – pauzės, dvejonės, kvėpavimo garsus. Tai leistų geriau suprasti kalbančiojo būseną ir ketinimus.
Kaip visa tai veikia kartu jūsų kišenėje
Grįžkime prie praktikos. Kai sakote savo telefonui „Paskambink mamai”, vyksta maždaug štai kas per kelias sekundes:
Pirmiausia, jūsų telefonas nuolat klausosi specialaus aktyvacijos žodžio („Ok Google”, „Hey Siri” ir pan.). Šis procesas vyksta vietiniame įrenginyje naudojant labai efektyvų, bet paprastą modelį, kuris atpažįsta tik tą vieną frazę.
Kai išgirsta aktyvacijos žodį, telefonas „pabunda” ir pradeda įrašinėti viską, ką sakote. Garso signalas iškart pradedamas apdoroti – valomas nuo triukšmų, normalizuojamas garsumas.
Tada duomenys keliauja į debesis, kur galingi serveriai juos analizuoja naudodami visus tuos neuroninius tinklus, akustinius ir kalbos modelius, apie kuriuos kalbėjome. Sistema ne tik atpažįsta žodžius „paskambink mamai”, bet ir supranta, kad tai komanda, reikalaujanti veiksmo.
Toliau įsijungia natūralios kalbos supratimo sistema, kuri nustato, kad „mama” greičiausiai reiškia kontaktą jūsų telefone su tokiu vardu, ir inicijuoja skambutį. Viskas vyksta taip greitai, kad atrodo beveik momentaliai.
Įdomu tai, kad sistema mokosi iš kiekvieno tokio sąveikos atvejo. Jei dažnai prašote paskambinti mamai, ji įsimena šį dažnį ir gali net pradėti siūlyti tai kaip greitą veiksmą tam tikru paros metu.
Kalbos atpažinimo technologija jau tapo neatskiriama mūsų kasdienybės dalimi, nors dažnai to net nepastebime. Nuo paprasčiausių komandų telefone iki sudėtingų medicininių transkribavimo sistemų – ši technologija keičia tai, kaip bendraujame su mašinomis. Ir nors ji dar nėra tobula, kiekviena nauja karta tampa vis artimesnė tam momentui, kai pokalbis su kompiuteriu taps tikrai natūralus – kaip su kitu žmogumi, tik be nuovargių akių ir prašymų pakartoti.




