Kaip atlikti kalbos atpažinimą. Geriausia rusų kalbos atpažinimo programa

„SendPulse“ paslauga yra rinkodaros įrankis, skirtas sukurti prenumeratos bazę ir atsitiktinius svetainės lankytojus paversti įprastais. „SendPulse“ sujungia svarbiausias klientų pritraukimo ir išlaikymo funkcijas vienoje platformoje:
● naujienlaiškius el. paštu,
● žiniatinklio stūmimas,
● SMS laiškai,
● SMTP,
● laiškai per Viber,
● siųsti žinutes į facebook messenger.

Naujienlaiškiai el. paštu

Naujienlaiškių siuntimui el. paštu galite taikyti įvairius tarifus, įskaitant ir nemokamus. Nemokamas planas turi apribojimų: prenumeratos bazė yra ne didesnė kaip 2500.
Pirmas dalykas, nuo kurio reikia pradėti dirbant su el. pašto siuntimo paslauga, yra sukurti savo adresų knyga. Nustatykite pavadinimą ir įkelkite el. pašto adresų sąrašą.


„SendPulse“ palengvina kūrimą prenumeratos formos iššokančio lango pavidalu, įterptomis formomis, plaukiojančiomis ir fiksuotomis tam tikroje ekrano dalyje. Prenumeratos formų pagalba surinksite abonentų bazę nuo nulio arba papildysite savo bazę naujais adresais.
Formų kūrimo priemonėje galite sukurti būtent tokią prenumeratos formą, kuri geriausiai atitinka jūsų poreikius, o paslaugų patarimai padės susidoroti su šia užduotimi. Taip pat galima naudoti vieną iš turimų paruoštų formų.


Kuriant prenumeratos formas, privaloma naudoti el. paštą su įmonės domenu. Skaitykite kaip.
Pranešimų šablonai padės gražiai suprojektuoti jūsų laiškus prenumeratoriams. Specialiame konstruktoriuje galite susikurti savo laiško šabloną.


Automatiniai laiškai. Turinio valdytojai aktyviai naudoja automatinį platinimą. Tai padeda automatizuoti darbo su klientais procesą. Yra keletas būdų, kaip sukurti automatinį pašto siuntą:
Nuoseklios raidžių serijos. Tai pats paprasčiausias variantas, kai, nepaisant sąlygų, rašomi keli laiškai, kurie bus išsiųsti gavėjams tam tikra tvarka. Čia gali būti variantų - pranešimų serija(paprasta pranešimų grandinė), ypatinga data(laiškai laikomi tam tikromis datomis), paleidimo raidė- laiškas siunčiamas priklausomai nuo prenumeratoriaus veiksmų (pranešimo atidarymo ir pan.).
Automatika360– pašto siuntimas su tam tikrais filtrais ir sąlygomis, taip pat atsižvelgiant į konversijas.
Baigtos grandinės pagal šabloną. Galite sukurti raidžių seriją pagal pateiktą šabloną arba modifikuoti šabloną ir pritaikyti jį pagal savo poreikius.
A/B testavimas padės eksperimentuoti su įvairiomis el. laiškų siuntimo parinktimis ir nustatyti geriausią atidarymo ar perėjimo parinktį.

Push pranešimų siuntimas

Push-mailing yra prenumerata naršyklės lange, tai savotiškas rss prenumeratos pakaitalas. Interneto stūmimo technologijos sparčiai įžengė į mūsų gyvenimą ir jau dabar sunku rasti svetainę, kurioje nenaudojami tiesioginiai laiškai klientams pritraukti ir išlaikyti. Užklausos scenarijus, galite siųsti el. laiškus rankiniu būdu ir kurti automatines transliacijas kurdami el. laiškų seriją arba rinkdami duomenis iš RSS. Antroji parinktis reiškia, kad po to, kai jūsų svetainėje pasirodys naujas straipsnis, jūsų prenumeratoriams bus automatiškai išsiųstas pranešimas apie tai su trumpu pranešimu.


Nauja iš Siųstipulsas– dabar galite užsidirbti pinigų iš savo svetainės naudodami tiesioginius pranešimus, įterpdami į juos reklamą. Pasiekus 10 USD, kiekvieną pirmadienį mokėjimai atliekami į vieną iš mokėjimo sistemų – „Visa / mastercard“, „PayPal“ arba „Webmoney“.
Push žinutės paslaugoje yra visiškai nemokamos. Mokama tik už „White Label“ – laiškus nenurodant „SendPulse“ paslaugos, tačiau jei paslaugos logotipas jūsų nejaudina, tiesioginiais pranešimais galite naudotis nemokamai be apribojimų.

SMTP

SMTP funkcija apsaugo jūsų adresatų sąrašą nuo įtraukimo į juodąjį sąrašą naudojant baltus IP adresus. SendPulse laiškuose naudojamos DKIM ir SPF kriptografinio parašo technologijos padidina jūsų siunčiamų el. laiškų patikimumą, todėl jūsų el.

„Facebook Messenger“ robotai

„Facebook“ pokalbių robotas yra bandomas beta versijoje. Galite prijungti jį prie savo puslapio ir siųsti pranešimus prenumeratoriams.

SMS siuntimas

Naudojant „SendPulse“ paslaugą, lengva siųsti laiškus į telefonų numerių duomenų bazę. Pirmiausia turite sukurti adresų knygą su telefonų numerių sąrašu. Norėdami tai padaryti, pasirinkite skyrių „Adresų knyga“, sukurkite naują adresų knygą, įkelkite telefono numerius. Dabar galite sukurti šios duomenų bazės SMS adresų sąrašą. SMS siuntimo kaina skiriasi priklausomai nuo gavėjų telekomunikacijų operatorių ir vidutiniškai svyruoja nuo 1,26 iki 2,55 rublio už 1 išsiųstą SMS.

filialų programa

„SendPulse“ įgyvendina filialų programą, kurioje registruotas vartotojas, naudodamasis jūsų nuoroda ir sumokėjęs tarifą, atneš jums 4000 rublių. Pakviestas vartotojas gauna 4000 rublių nuolaidą už pirmuosius 5 naudojimosi paslauga mėnesius.

Telefono antraštė kurtiesiems ir neprigirdintiems

Paverskite ekraną nuostabia telefono antrašte. Tai visiškai automatinė, jokie girdintys mašinistai neįveda jūsų pokalbių. Rasti senelius, sunkiai girdinčius šeimą ir draugus telefonu? Įjunkite jiems Speechlogger ir nustokite rėkti telefonu. Tiesiog prijunkite telefono garso išvestį prie kompiuterio garso įvesties ir paleiskite Speechlogger. Tai taip pat naudinga bendraujant akis į akį.

Automatinė transkripcija

Ar įrašei interviu? Sutaupykite šiek tiek laiko perrašydami jį iš automatinės „Google“ kalbos į tekstą, kurį į naršyklę atneša Speechlogger. Leiskite įrašytą interviu į savo kompiuterio mikrofoną (arba liniją) ir leiskite kalbos registruotojui atlikti transkripciją. Speechlogger išsaugo teksto transkripciją kartu su data, laiku ir jūsų komentarais. Tai taip pat leidžia redaguoti tekstą. Pokalbiai telefonu gali būti perrašomi tuo pačiu būdu. Taip pat galite įrašyti garso failus tiesiai iš savo kompiuterio, kaip aprašyta toliau.

Automatinis vertėjas ir vertėjas

Susitikimas su užsienio svečiais? Atsineškite nešiojamąjį kompiuterį (ar du) su kalbų registratoriumi ir mikrofonu. Kiekviena šalis matys kitos ištartus žodžius, išverstus į jų kalbą realiu laiku. Taip pat naudinga paskambinti užsienio kalba, kad įsitikintumėte, jog visiškai suprantate kitą pusę. Prijunkite telefono garso išvestį prie kompiuterio linijos įvesties ir paleiskite Speechlogger.

Mokykitės užsienio kalbų ir tobulinkite savo tarimo įgūdžius

Speechlogger yra puiki kalbų mokymosi priemonė ir gali būti naudojama įvairiais būdais. Galite naudoti jį norėdami išmokti žodyną kalbėdami savo gimtąja kalba ir leisdami programinei įrangai jį išversti. Galite išmokti ir praktikuoti taisyklingą tarimą kalbėdami užsienio kalba ir žiūrėdami, ar Speechlogger supranta, ar ne. Jei tekstas perrašytas juodu šriftu, tai reiškia, kad jį ištarėte gerai.

Filmo subtitrų generavimas

Speechlogger gali automatiškai įrašyti filmus ar kitus garso failus. Tada paimkite failą ir automatiškai išverskite jį į bet kurią kalbą, kad sukurtumėte tarptautinius subtitrus.

Diktuokite, o ne spausdinkite

Rašau laišką? Dokumentai? Sąrašai? Santrauka? Kad ir ką jums reikia įvesti, pabandykite jį padiktuoti „Speechlogger“. Speechlogger automatiškai išsaugos jį už jus ir leis eksportuoti į dokumentą.

Linksmas žaidimas :)

Ar galite imituoti kinų kalbą? Prancūzų kalba? O kaip rusų kalba? Pabandykite mėgdžioti užsienio kalbą ir pažiūrėkite, ką ką tik pasakėte naudodami Speechlogger. Naudokite Speechlogger sinchroninį vertimą, kad suprastumėte, ką ką tik pasakėte. Pasiekite nuostabių rezultatų – tai labai smagu!

„Facebook“ mūsų paklausė:
„Norint dirbti su tekstu, man reikia perrašyti 3 valandas balso įrašo. Bandžiau įkelti garso failą su paveikslėliu į YouTube ir naudoti jų teksto transkribavimo priemonę, bet pasirodo kažkokia abrakadabra. Ar galite man pasakyti, kaip tai išspręsti techniškai? Ačiū!
Aleksandras Konovalovas »

Aleksandrai, yra paprastas techninis sprendimas – bet rezultatas priklausys tik nuo jūsų įrašo kokybės. Leiskite man paaiškinti, apie kokią kokybę aš kalbu.

Pastaraisiais metais rusų kalbos atpažinimo technologijos labai pažengė į priekį. Atpažinimo klaidų procentas sumažėjo iki tokio lygio, kad tapo lengviau „iškalbėti“ kitą tekstą specialioje mobiliojoje programėlėje ar interneto paslaugoje, rankiniu būdu taisant atskiras „klaidas“ – nei spausdinti visą tekstą klaviatūra.

Tačiau tam, kad atpažinimo sistemos dirbtinis intelektas galėtų atlikti savo darbą, vartotojas turi atlikti savo darbą. Būtent: kalbėkite į mikrofoną aiškiai ir saikingai, venkite stipraus foninio triukšmo, jei įmanoma, naudokite stereofonines ausines arba išorinį mikrofoną, pritvirtintą prie sagos skylutės (atpažinimo kokybei svarbu, kad mikrofonas visada būtų vienodu atstumu nuo lūpų , o jūs pats kalbate tuo pačiu garsu ). Natūralu, kad kuo aukštesnė garso įrenginio klasė, tuo geriau.

Šių sąlygų lengva laikytis, jei užuot tiesiogiai prisijungę prie kalbos atpažinimo interneto paslaugos, naudojate diktofoną kaip tarpinį tarpinį įrenginį. Beje, toks „asmeninis sekretorius“ yra ypač nepakeičiamas, kai neturite prieigos prie interneto. Natūralu, kad geriau naudoti bent jau nebrangų profesionalų diktofoną nei į pigų mp3 grotuvą ar išmanųjį telefoną įmontuotą įrašymo įrenginį. Tai suteiks daug daugiau galimybių gautus įrašus „pamaitinti“ kalbos atpažinimo tarnybai.

Sunku, bet įtikinti pašnekovą, kurį kalbinate, laikytis šių taisyklių (dar vienas patarimas: jei komplekte neturite išorinio mikrofono ant skalbinių segtuko, bent jau registratorių laikykite šalia pašnekovo , o ne su tavimi).

Bet „nubrėžti“ konferenciją ar seminarą reikiamu lygiu automatiniu režimu, mano nuomone, praktiškai nerealu (juk kalbėtojų kalbos ir publikos reakcijos nesuvaldysi). Nors ir gana įdomus variantas: profesionaliai įrašytų garso paskaitų ir audio knygų pavertimas tekstu (jei ant jų nebuvo uždėta foninė muzika ir triukšmai).

Tikėkimės, kad jūsų diktofono įrašo kokybė bus pakankamai aukšta, kad galėtumėte jį iššifruoti automatinis režimas.

Jei ne, galite iššifruoti beveik bet kokią įrašymo kokybę pusiau automatinis režimas.

Be to, kai kuriose situacijose daugiausiai laiko ir pastangų sutaupysite, paradoksalu, kad iššifruosite Rankinis režimas. Tiksliau, versija, kurią aš pats naudoju jau keliolika metų. 🙂

Taigi, tvarka.

1. Automatinis kalbos atpažinimas

Daugelis pataria perrašyti balso įrašus „YouTube“. Tačiau šis metodas verčia vartotoją praleisti laiką atsisiųsdamas garso failą ir fono vaizdą, o tada išvalydamas gautą tekstą iš laiko žymų. Tuo tarpu šį laiką lengva sutaupyti. 🙂

Garso įrašus galite atpažinti tiesiai iš savo kompiuterio, naudodamiesi vienos iš interneto paslaugų, kurias teikia Google atpažinimo variklis (rekomenduoju Speechpad.ru arba Speechlogger.com), galimybes. Viskas, ką jums reikia padaryti, tai padaryti nedidelę gudrybę: vietoj to, kad jūsų balsas grotų iš mikrofono, nukreipkite kompiuterio grotuvo grojamą garso srautą į paslaugą.

Šis triukas vadinamas programiniu stereomikšeriu (dažniausiai naudojamas įrašant muziką į kompiuterį arba transliuojant ją iš kompiuterio į internetą).

Stereofoninis maišytuvas buvo „Windows XP“ dalis, tačiau kūrėjai jį pašalino iš vėlesnių šios operacinės sistemos versijų (sakoma, kad būtų apsaugotos autorių teisės: kad žaidėjai nepavogtų muzikos iš žaidimų ir pan.). Tačiau neretai stereofoninis maišytuvas komplektuojamas su garso plokščių tvarkyklėmis (pavyzdžiui, pagrindinėje plokštėje įmontuotomis Realtec kortelėmis). Jei nerandate stereofoninio maišytuvo kompiuteryje naudodami toliau pateiktas ekrano kopijas, pabandykite iš naujo įdiegti garso tvarkykles iš kompaktinio disko, kurį gavote su pagrindine plokšte, arba iš pagrindinės plokštės gamintojo svetainės.

Jei tai nepadeda, kompiuteryje įdiekite kitą programą. Pavyzdžiui – nemokamas VB-CABLE virtualus garso įrenginys : ja naudotis rekomenduoja jau minėtos Speechpad.ru paslaugos savininkas.

Pirmas žingsnis turite išjungti mikrofoną, skirtą naudoti įrašymo režimu, ir įjungti stereofoninį maišytuvą (arba virtualų VB-KABELIĄ).

Norėdami tai padaryti, spustelėkite garsiakalbio piktogramą apatiniame dešiniajame kampe (šalia laikrodžio) arba pasirinkite skyrių „Garsas“ „Valdymo skydelyje“. Atsidariusio lango skirtuke „Įrašyti“ dešiniuoju pelės mygtuku spustelėkite ir pažymėkite langelius šalia elementų „Rodyti atjungtus įrenginius“ ir „Rodyti atjungtus įrenginius“. Dešiniuoju pelės mygtuku spustelėkite mikrofono piktogramą ir pasirinkite "Nutildyti" (bendrai, išjunkite visus įrenginius, pažymėtus žalia piktograma).

Dešiniuoju pelės mygtuku spustelėkite stereofoninio maišytuvo piktogramą ir pasirinkite „Įjungti“. Piktogramoje pasirodys žalia piktograma, nurodanti, kad stereofoninis maišytuvas tapo numatytuoju įrenginiu.

Jei nuspręsite naudoti VB-CABLE, įjunkite jį tokiu pačiu būdu skirtuke „Įrašyti“.

Ir taip pat - skirtuke "Atkūrimas".

Antras žingsnis.Įjunkite garso įrašymą bet kuriame grotuve (jei reikia iššifruoti vaizdo įrašo garso takelį, taip pat galite paleisti vaizdo įrašų grotuvą). Tuo pačiu metu įkelkite Speechpad.ru paslaugą į „Chrome“ naršyklę ir spustelėkite joje esantį mygtuką „Įgalinti įrašymą“. Jei įrašas pakankamai kokybiškas, prieš jūsų akis pamatysite, kaip paslauga kalbą paverčia prasminga ir artima originaliam tekstui. Tiesa, be skyrybos ženklų, kuriuos teks susitvarkyti patiems.

Kaip garso grotuvą patariu naudoti AIMP, apie kurį plačiau bus kalbama trečiame poskyryje. Dabar tik pažymėsiu, kad šis grotuvas leidžia sulėtinti įrašymą be kalbos iškraipymo, taip pat ištaisyti kai kurias kitas klaidas. Tai gali šiek tiek pagerinti ne itin aukštos kokybės įrašų atpažinimą. (Kartais netgi patariama blogus įrašus iš anksto apdoroti profesionaliomis garso redagavimo programomis. Tačiau, mano nuomone, tai per daug varginantis darbas daugumai vartotojų, kurie daug greičiau suves tekstą ranka. :))

2. Pusiau automatinis kalbos atpažinimas

Čia viskas paprasta. Jei įrašas nekokybiškas ir atpažinimas „užspringsta“ arba paslauga sukuria per daug klaidų, padėkite priežastį patys, „įterpdami“ į grandinę: „Garso grotuvas - Diktorius - Atpažinimo sistema“.

Jūsų užduotis – klausytis įrašytos kalbos per ausines ir vienu metu padiktuoti ją per mikrofoną interneto atpažinimo tarnybai. (Žinoma, įrašymo įrenginių sąraše nereikia perjungti mikrofono prie stereo maišytuvo ar virtualaus kabelio, kaip ir ankstesniame skyriuje). O kaip alternatyvą aukščiau paminėtoms interneto paslaugoms galite naudoti tokias išmaniųjų telefonų programas kaip nemokama Yandex.Dictation arba diktavimo funkcija iPhone su iOS 8 ir naujesne versija.

Atkreipiu dėmesį, kad pusiau automatiniame režime turite galimybę iš karto padiktuoti skyrybos ženklus, kurių paslaugos dar nepajėgios įjungti automatinio režimo.

Jei pavyks diktuoti sinchroniškai su įrašo atkūrimu grotuve, preliminari transkripcija užtruks beveik tiek pat laiko, kiek ir pats įrašas (neskaičiuojant vėlesnio laiko, praleisto taisant rašybos ir gramatines klaidas). Tačiau net ir dirbdami pagal schemą: „klausykite frazės – diktuokite – klausykite frazės – diktuokite“ galite sutaupyti laiko, palyginti su tradiciniu spausdinimu.

Kaip garso grotuvą rekomenduoju naudoti tą patį AIMP. Pirma, galite jį naudoti norėdami sulėtinti atkūrimą iki jums patogios sinchroninio diktavimo greičio. Antra, šis grotuvas gali grąžinti įrašą tam tikrą sekundžių skaičių: kartais tai būtina norint geriau išgirsti nesuprantamą frazę.

3. Diktofono transkripcija rankiniu būdu

Praktikoje galite pastebėti, kad per greitai pavargstate nuo pusiau automatinio diktavimo. Arba darote per daug klaidų naudodamiesi paslauga. Arba dėl greito spausdinimo įgūdžių daug lengviau sukurti paruoštą pataisytą tekstą klaviatūra nei naudojant diktantą. Arba jūsų diktofonas, stereo ausinių mikrofonas, garso plokštė nesuteikia paslaugai priimtinos garso kokybės. O gal tiesiog neturite galimybės garsiai diktuoti darbo ar namų biure.

Visais šiais atvejais jums padės mano patentuotas rankinio dekodavimo metodas (klausykite įrašo AIMP - įveskite Word). Su juo galite paversti užrašą tekstu greičiau nei gali daugelis profesionalių žurnalistų, kurių spausdinimo greitis yra panašus į jūsų! Tuo pačiu išleisite daug mažiau energijos ir nervų nei jie. 🙂

Kokia pagrindinė priežastis, dėl kurios eikvojama energija ir laikas atliekant garso įrašų transkripciją tradiciniu būdu? Dėl to, kad vartotojas atlieka daug nereikalingų judesių.

Vartotojas nuolat ištiesia ranką prie diktofono, paskui į kompiuterio klaviatūrą. Sustabdžiau atkūrimą – įvedžiau klausytą ištrauką teksto rengyklėje – vėl įjungiau atkūrimą – atsuku neįskaitomą įrašą atgal – t.t. ir t.t.

Kompiuteryje naudojant įprastą programinės įrangos grotuvą procesas tampa šiek tiek lengvesnis: vartotojas turi nuolat mažinti / išplėsti Word, sustabdyti / paleisti grotuvą ir netgi šliaužti pirmyn ir atgal grotuvo slankikliu, kad surastų neįskaitomą fragmentą, o tada grįžti. iki paskutinės klausytos įrašo vietos.

Siekdamos sumažinti šiuos ir kitus laiko nuostolius, specializuotos IT įmonės kuria programinės ir techninės įrangos transkribavimo priemones. Tai gana brangūs sprendimai profesionalams – tiems patiems žurnalistams, teismo stenografams, tyrėjams ir t.t. Tačiau iš tikrųjų mūsų tikslams reikalingos tik dvi funkcijos:

  • galimybė sulėtinti balso įrašo atkūrimą jo neiškraipant ir nesumažinant tono (daugelis grotuvų leidžia sulėtinti atkūrimo greitį, bet, deja, tuo pačiu metu žmogaus balsas virsta siaubingu roboto balsu, kuris yra ilgą laiką sunku girdėti);
  • galimybė sustabdyti įrašymą arba atsukti jį atgal nurodytam sekundžių skaičiui ir grąžinti atgal nenutraukiant spausdinimo ir nesumažinant teksto rengyklės lango.

Per savo laiką išbandžiau dešimtis garso programų ir radau tik dvi įperkamas mokamas programas, atitinkančias šiuos reikalavimus. Gavau vieną iš jų. Dar šiek tiek paieškojau savo brangių skaitytojų 🙂 - ir radau nuostabų nemokamą sprendimą - AIMP grotuvą, kurį iki šiol naudoju pats.

„Įvedę AIMP nustatymus raskite skyrių „Global Keys“ ir iš naujo sukonfigūruokite „Stop/Start“ į „Escape“ (Esc) klavišą. Patikėkite, tai patogiausia, nes nereikia apie tai galvoti ir pirštas netyčia nenukris ant kitų klavišų. Atitinkamai nustatykite elementus „Judėti šiek tiek atgal“ ir „Judėti pirmyn“ atitinkamai į Ctrl + atgal / pirmyn (turite keturis klaviatūros rodyklių klavišus - pasirinkite du iš jų). Ši funkcija reikalinga norint iš naujo klausytis paskutinio fragmento arba šiek tiek pereiti į priekį.

Tada, iškvietę EQ, galite sumažinti greičio ir tempo reikšmes ir padidinti Pitch reikšmę. Tokiu atveju pastebėsite, kad atkūrimo greitis sulėtės, tačiau balso aukštis (jei gerai pasirinksite „Pitch“ reikšmę) nepasikeis. Pasirinkite šiuos du parametrus, kad turėtumėte laiko rašyti beveik vienu metu, tik retkarčiais jį sustabdydami.

Kai viskas bus nustatyta, spausdinimas užtruks mažiau laiko, o rankos mažiau pavargs. Garso įrašą galėsite perrašyti ramiai ir patogiai, praktiškai nepakeldami pirštų nuo spausdinimo klaviatūra.“

Prie to, kas pasakyta, galiu tik papildyti, kad jei įrašas nėra labai kokybiškas, galite pabandyti pagerinti jo atkūrimą eksperimentuodami su kitais AIMP garso efektų tvarkyklės nustatymais.

Ir sekundžių skaičius, kurį jums bus patogiausia judėti atgal arba pirmyn per įrašą naudojant karštuosius klavišus - nustatykite lango „Nustatymai“ skiltyje „Leistuvė“ (kurį galima iškviesti paspaudus sparčiuosius klavišus „Ctrl + P“).

Linkiu jums sutaupyti daugiau laiko atliekant įprastines užduotis – ir vaisingai panaudoti jį pagrindiniams dalykams! 🙂 Ir nepamirškite įjungti mikrofono įrašymo įrenginių sąraše, kai ketinate kalbėtis per Skype! 😉

3 balso įrašo perrašymo būdai: kalbos atpažinimas, diktavimas, rankinis režimas

Atnaujinta: pirmadienį, 2017 m. liepos 31 d

Ką pusiau fantastiška pokalbio su kompiuteriu idėja turi bendro su profesionalia fotografija? Beveik nėra, jei nesate idėjos apie begalinį visos techninės žmogaus aplinkos vystymąsi gerbėjas. Akimirką įsivaizduokite, kad duodate balso nurodymus fotoaparatui pakeisti židinio nuotolį ir padidinti ekspozicijos kompensavimą puse žingsnio. Nuotolinis kameros valdymas jau įdiegtas, bet ten reikia tyliai spausti mygtukus, o štai klausos fotikas!

Jau tapo tradicija kaip žmogaus balso komunikacijos su kompiuteriu pavyzdį paminėti kokį nors fantastinį filmą, na, bent jau Stanley Kubricko režisuotą „Kosminę odisėją 2001“. Ten borto kompiuteris ne tik veda prasmingą dialogą su astronautais, bet gali skaityti iš lūpų kaip kurčias. Kitaip tariant, mašina išmoko atpažinti žmogaus kalbą be klaidų. Galbūt kam nors bus nereikalingas nuotolinis kameros valdymas balsu, tačiau daugeliui patiktų ši frazė „Paimk mus, mažyte“ ir visos šeimos paveikslas palmės fone yra paruoštas.

Na, čia aš atidaviau duoklę tradicijoms, šiek tiek pafantazavau. Bet, kalbant iš visos širdies, šį straipsnį buvo sunku parašyti, o viskas prasidėjo nuo dovanos išmaniojo telefono su Android 4 OS forma. Šis modelis HUAWEI U8815 turi nedidelį keturių colių jutiklinį ekraną ir ekraninę klaviatūrą. Ant jo rašyti šiek tiek neįprasta, tačiau pasirodė, kad tai nėra ypač reikalinga. (vaizdas01)

1. Balso atpažinimas išmaniajame telefone su Android OS

Bandydamas naują žaislą, paieškos juostoje pastebėjau mikrofono grafiką. Google ir klaviatūroje užrašuose. Anksčiau nesidomėjau, ką reiškia šis simbolis. Turėjau pokalbių Skype ir įvedė raides klaviatūra. Taip elgiasi dauguma interneto vartotojų. Bet kaip jie vėliau man paaiškino, paieškos sistemoje Google buvo pridėta paieška balsu rusų kalba ir atsirado programos, leidžiančios diktuoti trumpąsias žinutes naudojantis naršykle Chrome.

Pasakiau trijų žodžių frazę, programa juos atpažino ir parodė langelyje mėlyname fone. Stebėtis buvo kuo, nes visi žodžiai buvo parašyti taisyklingai. Jei spustelėsite šį langelį, frazė pasirodys „Android“ užrašų knygelės teksto lauke. Tad pasakė porą frazių ir SMS žinute nusiuntė asistentei žinutę.


2. Trumpa balso atpažinimo programų istorija.

Man nebuvo atradimas, kad šiuolaikiniai pasiekimai valdymo balsu srityje leidžia duoti komandas buitinei technikai, automobiliui, robotui. Komandų režimas buvo įdiegtas ankstesnėse Windows, OS/2 ir Mac OS versijose. Esu matęs talkerių programas, bet kokia jų nauda? Galbūt tai yra mano ypatumas, kad man lengviau kalbėti nei spausdinti klaviatūra, o mobiliuoju telefonu aš išvis nieko negaliu įvesti. Turite įrašyti kontaktus į nešiojamąjį kompiuterį su įprasta klaviatūra ir perkelti per USB kabelį. Bet tiesiog kalbėti į mikrofoną, o pats kompiuteris įvedė tekstą be klaidų - tai buvo mano svajonė. Beviltiškumo atmosferą palaikė diskusijos forumuose. Visur jiems kilo tokia liūdna mintis:

„Tačiau praktikoje iki šiol realios kalbos atpažinimo programos (ir net rusų kalba) praktiškai neegzistuoja ir, aišku, greitai nebus sukurtos. Be to, iki galo neišspręsta net atvirkštinė atpažinimo užduotis – kalbos sintezė, kuri, atrodytų, daug paprastesnė už atpažinimą. (ComputerPress №12, 2004)

„Įprastų kalbos atpažinimo programų (ne tik rusiškų) iki šiol nėra, nes kompiuteriui užduotis gana sunki. O baisiausia, kad žmogaus žodžio atpažinimo mechanizmas nėra įsisąmonintas, todėl nėra kuo remtis kuriant atpažinimo programas. (Kita diskusija forume).

Tuo pačiu metu anglų kalbos teksto įvesties programų apžvalgos parodė akivaizdžią sėkmę. Pavyzdžiui, IBM ViaVoice 98 Executive Edition turėjo pagrindinį 64 000 žodžių žodyną ir galimybę pridėti tiek pat savo žodžių. Žodžių atpažinimo procentas be mokymo programos buvo apie 80%, o vėliau dirbant su konkrečiu vartotoju, jis pasiekė 95%.

Iš rusų kalbos atpažinimo programų verta paminėti „Gorynych“ - anglų kalbos „Dragon Dictate 2.5“ papildymą. Apie paieškas, o paskui „mūšį su penkiais Gorynychais“ papasakosiu antroje apžvalgos dalyje. Pirmiausia radau „Anglų drakoną“.

3. Nepertraukiamos kalbos atpažinimo programa „Dragon Naturally Speaking“

Šiuolaikinė įmonės programos versija Niuansas pasirodė su mano senu draugu iš Minsko užsienio kalbų instituto. Ji parsivežė iš kelionės į užsienį ir nusipirko, manydama, kad galėtų būti „kompiuterio sekretore“. Tačiau kažkas neveikė, o programa liko beveik pamiršta nešiojamajame kompiuteryje. Nesant jokios suprantamos patirties, teko pačiam vykti pas draugą. Visa ši ilga įžanga būtina, kad būtų galima tinkamai suprasti mano padarytas išvadas.

Visas mano pirmojo drakono vardas buvo: . Programa yra anglų kalba ir viskas joje aišku net be vadovo. Pirmiausia reikia sukurti konkretaus vartotojo profilį, kad būtų galima nustatyti žodžių skambesio ypatybes jo pasirodyme. Ką ir padariau – svarbu kalbančiojo amžius, šalis, tarimo ypatumai. Mano pasirinkimas: amžius 22-54, anglų kalba JK, standartinis tarimas. Toliau pasirodo keli langai, kuriuose nustatote mikrofoną. (vaizdas04)

Kitas rimtų kalbos atpažinimo programų etapas yra konkretaus konkretaus žmogaus tarimo mokymas. Kviečiame rinktis teksto pobūdį: mano pasirinkimas – trumpa diktanto instrukcija, bet galima „užsisakyti“ ir humoristinį pasakojimą.

Šio darbo su programa etapo esmė itin paprasta – tekstas rodomas lange, virš jo yra geltona rodyklė. Taisyklingai tariant, rodyklė juda per frazes, o apačioje yra treniruočių eigos juosta. Anglų kalbos pokalbį buvau gana pamiršęs, todėl sunkiai judau. Laikas taip pat buvo ribotas – juk kompiuteris buvo ne mano ir teko nutraukti treniruotę. Tačiau draugė sakė, kad testą atliko greičiau nei per pusvalandį. (vaizdas05)

Atsisakęs pritaikyti programą prie savo tarimo, nuėjau į pagrindinį langą ir paleidau įmontuotą teksto rengyklę. Jis pasakė atskirus žodžius iš kai kurių tekstų, kuriuos rado kompiuteryje. Tie žodžiai, kuriuos jis pasakė teisingai, programa išspausdinta, tie, kuriuos pasakė blogai, buvo pakeisti kažkuo „angliškai“. Aiškiai angliškai ištarusi komandą „ištrinti eilutę“, programa ją įvykdė. Tai reiškia, kad aš teisingai perskaičiau komandas, o programa jas atpažįsta be išankstinio mokymo.

Bet man buvo svarbu, kaip šis „drakonas“ rašo rusiškai. Kaip supratote iš ankstesnio aprašymo, mokydami programą galite pasirinkti tik anglišką tekstą, rusiško teksto ten tiesiog nėra. Akivaizdu, kad lavinti rusiškos kalbos atpažinimą nepavyks. Kitoje nuotraukoje matosi, kokią frazę programa įvedė tardama rusišką žodį „Labas“. (vaizdas06)

Bendravimo su pirmuoju drakonu rezultatas pasirodė šiek tiek komiškas. Jei atidžiai perskaitysite tekstą oficialioje svetainėje, pamatysite šio programinės įrangos produkto anglišką „specializaciją“. Be to, kraunant skaitome programos lange „anglų kalba“. Tai kam viso to reikėjo? Akivaizdu, kad kalti forumai ir gandai ...

Tačiau yra ir naudingos patirties. Mano draugas paprašė pamatyti savo nešiojamojo kompiuterio būklę. Kažkaip lėtai jis pradėjo dirbti. Tai nenuostabu - sistemos skaidinyje buvo tik 5% laisvos vietos. Trindamas nereikalingas programas pamačiau, kad oficiali versija užima daugiau nei 2,3 GB. Šio numerio mums prireiks vėliau. (07 vaizdas)



Rusų kalbos atpažinimas, kaip paaiškėjo, nebuvo menka užduotis. Minske man pavyko rasti „Gorynych“ pas draugą. Disko jis ilgai ieškojo savo senose griuvėsiuose ir, anot jo, tai yra oficialus leidinys. Programa įdiegta akimirksniu, ir aš sužinojau, kad jos žodyne yra 5000 rusiškų žodžių plius 100 komandų ir 600 angliškų žodžių plius 31 komanda.

Pirmiausia turite nustatyti mikrofoną, ką aš padariau. Tada atsidariau žodyną ir pridėjau žodį "egzaminas" nes to nebuvo programos žodyne. Stengiausi kalbėti aiškiai, monotoniškai. Galiausiai atidariau Gorynych Pro 3.0 programą, įjungiau diktavimo režimą ir gavau šį sąrašą „panašiai skambančių žodžių“. (09 vaizdas)

Rezultatas mane suglumino, nes jis aiškiai skyrėsi nuo „Android“ išmaniojo telefono darbo, todėl nusprendžiau išbandyti kitas programas iš „ „Google Chrome“ internetinė parduotuvė“. Ir jis atidėjo reikalus su „gorynych gyvatėmis“ vėlesniam laikui. Aš pagalvojau tai atidėjimas veiksmas originalia rusiška dvasia

5. Google balso galimybės

Norėdami dirbti su balsu įprastame kompiuteryje su OS Windows, turėsite įdiegti naršyklę Google Chrome. Jei joje dirbate internete, apačioje dešinėje galite spustelėti programinės įrangos parduotuvės nuorodą. Ten nemokamai radau dvi programas ir du plėtinius, skirtus balso teksto įvedimui. Programos vadinamos "Balso užrašų knygelė" ir „Voysnot – balsas į tekstą“. Įdiegę juos galite rasti skirtuke "Programos" savo naršyklę "chromas". (10 pav.)

Plėtiniai vadinami „Google Voice Search Hotword (beta) 0.1.0.5“ ir „Balso įvesties tekstas – Speechpad.ru 5.4“. Įdiegę juos galima išjungti arba ištrinti skirtuke "Plėtiniai".(11 pav.)

Balso pastaba. „Chrome“ naršyklės programos skirtuke dukart spustelėkite programos piktogramą. Atsidarys dialogo langas, kaip parodyta paveikslėlyje žemiau. Spustelėję mikrofono piktogramą, į mikrofoną kalbate trumpas frazes. Programa siunčia jūsų žodžius į kalbos atpažinimo serverį ir įveda tekstą lange. Visi iliustracijoje parodyti žodžiai ir frazės buvo įvesti pirmuoju bandymu. Akivaizdu, kad šis metodas veikia tik esant aktyviam interneto ryšiui. (12 pav.)

Balso bloknotas. Jei paleisite programą programų skirtuke, atsidarys naujas interneto puslapio skirtukas Speechpad.ru. Yra išsami instrukcija, kaip naudotis šia paslauga, ir kompaktiška forma. Pastarasis parodytas toliau esančioje iliustracijoje. (13 pav.)

Balso įvestis tekstas leidžia balsu užpildyti interneto puslapių teksto laukus. Pavyzdžiui, aš nuėjau į savo puslapį Google+. Naujo pranešimo įvesties lauke dešiniuoju pelės mygtuku spustelėkite ir pasirinkite "Speechpad". Rožinės spalvos įvesties laukelyje rašoma, kad galite diktuoti tekstą. (14 pav.)

„Google“ paieška balsu leidžia ieškoti balsu. Kai įdiegiate ir suaktyvinate šį plėtinį, paieškos juostoje pasirodo mikrofono simbolis. Kai paspausite, simbolis pasirodys dideliame raudoname apskritime. Tiesiog pasakykite paieškos frazę ir ji bus rodoma paieškos rezultatuose. (15 pav.)

Svarbi pastaba: kad mikrofonas veiktų su „Chrome“ plėtiniais, naršyklės nustatymuose turite leisti prieigą prie mikrofono. Pagal numatytuosius nustatymus jis išjungtas saugumo sumetimais. Įeiti Parametrai → Asmeniniai duomenys → Turinio parametrai. (Jei norite pasiekti visus sąrašo pabaigoje esančius nustatymus, spustelėkite Rodyti išplėstinius nustatymus). Atsidarys dialogo langas Puslapio turinio nustatymai. Sąraše pasirinkite elementą Multimedija → mikrofonas.

6. Darbo su rusiškomis kalbos atpažinimo programomis rezultatai

Nedidelė patirtis naudojant teksto įvesties programas balsu parodė puikų šios funkcijos įdiegimą interneto įmonės serveriuose Google. Be jokio išankstinio mokymo, žodžiai atpažįstami teisingai. Tai rodo, kad rusų kalbos atpažinimo problema išspręsta.

Dabar galime sakyti, kad vystymosi rezultatas Google bus naujas kitų gamintojų produktų vertinimo kriterijus. Norėčiau, kad atpažinimo sistema veiktų neprisijungus be kontakto su įmonės serveriais – taip patogiau ir greičiau. Tačiau kada bus išleista nepriklausoma programa, skirta dirbti su nuolatiniu rusų kalbos srautu, nežinoma. Tačiau verta manyti, kad su galimybe išmokyti šį „kūrinį“ bus tikras proveržis.

Rusijos kūrėjų programos "Gorynych", "Diktografas" ir "Kova" Išsamiau aptarsiu antroje šios apžvalgos dalyje. Šis straipsnis buvo parašytas labai lėtai, nes dabar sunku ieškoti originalių diskų. Šiuo metu jau turiu visas rusiškos balso į tekstą atpažinimo programinės įrangos versijas, išskyrus Combat 2.52. Nė vienas iš mano draugų ar kolegų neturi šios programos, o aš pats turiu tik keletą pagiriančių atsiliepimų forumuose. Tiesa, buvo toks keistas variantas – parsisiųsti „Combat“ per SMS, bet man tai nepatinka. (16 paveikslas)


Trumpas vaizdo klipas parodys, kaip kalbos atpažinimas veikia išmaniajame telefone su Android OS. Rinkimo balsu funkcija yra būtinybė prisijungti prie „Google“ serverių. Taigi internetas turėtų jums padėti

) apie tikrą „Hello World“ buitinės technikos valdymo pavyzdį.
Kodėl buitinė technika? Taip, nes tokio pavyzdžio dėka galima tai įvertinti greitis ir tikslumas, kurį galima pasiekti naudojant visiškai vietinis kalbos atpažinimas be tipo serverių Google ASR arba „Yandex SpeechKit“..
Prie straipsnio taip pat pridedu visus programos šaltinio kodus ir patį rinkinį, skirtą „Android“.

Kodėl staiga?

Neseniai užklydusi, paklausiau autoriaus, kodėl jis nori savo programai naudoti serverio kalbos atpažinimą (mano nuomone, tai buvo perteklinė ir sukėlė tam tikrų problemų). Į kurį gavau atsakomąjį klausimą, ar galėčiau plačiau aprašyti alternatyvių metodų taikymą projektams, kuriuose nieko nereikia atpažinti, o žodynas susideda iš baigtinio žodžių rinkinio. Be to, su praktinio pritaikymo pavyzdžiu ...

Kodėl mums reikia kažko kito, išskyrus „Yandex“ ir „Google“?

Kaip tą labai „praktišką pritaikymą“, pasirinkau temą išmaniųjų namų balso valdymas.
Kodėl toks pavyzdys? Nes jame galite pamatyti tuos kelis visiškai vietinio kalbos atpažinimo pranašumus, palyginti su atpažinimu naudojant debesies sprendimus. Būtent:
  • Greitis- mes nepriklausome nuo serverių, todėl nepriklausome nuo jų prieinamumo, pralaidumo ir pan. faktoriai
  • Tikslumas- mūsų variklis veikia tik su žodynu, kurį domina mūsų programa, taip padidindamas atpažinimo kokybę
  • Kaina- mes neturime mokėti už kiekvieną užklausą serveriui
  • Balso aktyvinimas- kaip papildoma premija prie pirmųjų taškų - galime nuolat "klausytis eterio" nešvaistydami srauto ir neapkraudami serverio

Pastaba

Iš karto padarysiu išlygą, kad šie pranašumai gali būti laikomi pranašumais tik tam tikros klasės projektams, Kur mes esame mes tikrai žinome, su kokiu žodynu ir kokia gramatika vartotojas veiks. Tai yra, kai mums nereikia atpažinti savavališko teksto (pavyzdžiui, SMS žinutės ar paieškos užklausos). Priešingu atveju debesų atpažinimas yra būtinas.

Taigi „Android“ gali atpažinti kalbą be interneto!
Taip, taip... Tik JellyBean. Ir tik nuo pusės metro, ne daugiau. Ir šis pripažinimas yra tas pats diktavimas, tik naudojant daug mažesnį modelį. Taigi negalime jo valdyti ir konfigūruoti. O ką ji mums sugrąžins kitą kartą – nežinia. Nors už SMS - gerai!

Ką mes darome?

Įdiegsime balso pultelį buitinei technikai, kuris veiks tiksliai ir greitai, nuo kelių metrų ir net ant pigaus stabdžių šlamšto labai nebrangiuose Android išmaniuosiuose telefonuose, planšetiniuose kompiuteriuose ir laikrodžiuose.
Logika bus paprasta, bet labai praktiška. Įjungiame mikrofoną ir pasakome vieną ar daugiau įrenginių pavadinimų. Programa juos atpažįsta ir įjungia arba išjungia priklausomai nuo esamos būsenos. Arba jis iš jų gauna būseną ir ištaria ją maloniu moterišku balsu. Pavyzdžiui, esama kambario temperatūra.

Daug praktinių pritaikymų

Ryte, neatmerkę akių, jie pliaukštelėjo išmaniojo telefono ekraną ant naktinio staliuko ir įsakė „Labas rytas! - prasideda scenarijus, įsijungia kavos virimo aparatas ir ūžia, pasigirsta maloni muzika, užuolaidos prasislenka.
Pakabinkite pigų (2 tūkst., ne daugiau) išmanųjį telefoną kiekviename kambaryje ant sienos. Grįžtame namo po darbo ir komanduojame į tuštumą „Protingi namai! Šviesa, televizorius! – Kas bus toliau, manau, nereikia sakyti.

Transkripcijos



Gramatika aprašo ką ką gali pasakyti vartotojas. Kad Pocketsfinksas žinotų kaip jis jį ištars, reikia kiekvienam žodžiui iš gramatikos parašyti, kaip jis skamba atitinkamame kalbos modelyje. Tai yra transkripcija kiekvienas žodis. Tai vadinama žodynas.

Transkripcijos aprašomos naudojant specialią sintaksę. Pavyzdžiui:
protingas uu m n ay j namas d oo m

Iš principo nieko sudėtingo. Dvigubas balsis transkripcijoje reiškia kirtį. Dvigubas priebalsis yra švelnus priebalsis, po kurio eina balsė. Visi galimi visų rusų kalbos garsų deriniai.

Akivaizdu, kad negalime iš anksto aprašyti visų transkripcijos savo programoje, nes iš anksto nežinome pavadinimų, kuriuos vartotojas suteiks savo įrenginiams. Todėl tokias transkripcijas generuosime pagal kai kurias rusų fonetikos taisykles. Norėdami tai padaryti, galite įdiegti tokią PhonMapper klasę, kuri gali gauti eilutę kaip įvestį ir sugeneruoti teisingą jos transkripciją.

Balso aktyvinimas

Tai kalbos atpažinimo variklio galimybė visą laiką „klausytis oro“, kad reaguotų į iš anksto nustatytą frazę (ar frazes). Visi kiti garsai ir kalba bus atmesti. Tai ne tas pats, kas aprašyti gramatiką ir tiesiog įjungti mikrofoną. Čia nepateiksiu šios užduoties teorijos ir jos veikimo mechanikos. Leiskite pasakyti, kad neseniai programuotojai, dirbantys su Pocketsphinx, įdiegė tokią funkciją, o dabar ji yra prieinama API.

Vienas dalykas tikrai vertas paminėti. Aktyvinimo frazei reikia ne tik nurodyti transkripciją, bet ir pasirinkti tinkamą jautrumo slenkstinė vertė. Per maža reikšmė sukels daug klaidingų teigiamų rezultatų (tai yra tada, kai nesakėte aktyvinimo frazės, bet sistema ją atpažįsta). Ir per didelis - iki imuniteto. Todėl šis nustatymas yra ypač svarbus. Apytikslis verčių diapazonas - nuo 1e-1 iki 1e-40 priklausomai nuo aktyvinimo frazės.

Artumo aktyvinimas

Ši užduotis yra specifinė mūsų projektui ir nėra tiesiogiai susijusi su pripažinimu. Kodą galima pamatyti tiesiai pagrindinėje veikloje.
Ji suvokia SensorEventListener ir artėjimo momentu (jutiklio reikšmė mažesnė už maksimalią), paleidžia laikmatį, po tam tikro uždelsimo tikrindamas, ar jutiklis vis dar neužblokuotas. Tai daroma siekiant išvengti klaidingų teigiamų rezultatų.
Kai jutiklis vėl neužblokuojamas, sustabdome atpažinimą, gaudami rezultatą (žr. aprašymą žemiau).

Pradedame pripažinimą

„Pocketsphinx“ suteikia patogią API, skirtą atpažinimo procesui konfigūruoti ir vykdyti. Tai yra klasės SpechRecognizer ir SpeechRecognizerSetup.
Štai kaip atrodo atpažinimo konfigūracija ir paleidimas:

PhonMapper phonMapper = naujas PhonMapper(getAssets().open("dict/ru/hotwords")); Gramatika gramatika = new Grammar(vardai, phonMapper); gramatika.addWords(aktyvusis žodis); DataFiles dataFiles = new DataFiles(getPackageName(), "ru"); Failas hmmDir = naujas Failas(dataFiles.getHmm()); Failas diktas = naujas Failas(dataFiles.getDict()); Failas jsgf = naujas Failas(dataFiles.getJsgf()); copyAssets(hmmDir); saveFile(jsgf, gramatika.getJsgf()); saveFile(diktas, gramatika.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer(); mRecognizer.addKeyphraseSearch(KWS_SEARCH, aktyvusis žodis); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

Čia pirmiausia nukopijuojame visus reikalingus failus į diską (Pocketpshinx reikalingas akustinis modelis, gramatikos ir transkripcijos žodynas diske). Tada sukonfigūruojamas pats atpažinimo variklis. Nurodomi modelio ir žodyno failų keliai, taip pat kai kurie parametrai (aktyvinimo frazės jautrumo slenkstis). Tada sukonfigūruojamas kelias į gramatikos failą, taip pat aktyvinimo frazė.

Kaip matote iš šio kodo, vienas variklis sukonfigūruotas ir gramatikai, ir aktyvinimo frazei atpažinti vienu metu. Kodėl tai daroma? Kad galėtume greitai perjungti tai, ką šiuo metu turime atpažinti. Taip atrodo aktyvinimo frazės atpažinimo proceso paleidimas:

MRecognizer.startListening(KWS_SEARCH);
Ir taip - kalbos atpažinimas pagal pateiktą gramatiką:

MRecognizer.startListening(COMMAND_SEARCH, 3000);
Antrasis argumentas (neprivalomas) yra milisekundžių skaičius, po kurio atpažinimas automatiškai baigsis, jei niekas nieko nesakys.
Kaip matote, abiem problemoms išspręsti galite naudoti tik vieną variklį.

Kaip gauti atpažinimo rezultatą

Norėdami gauti atpažinimo rezultatą, taip pat turite nurodyti įvykių klausytoją, kuris įdiegia sąsają RecognitionListener.
Jis turi keletą metodų, kuriuos „ pocketsphinx“ vadina, kai įvyksta vienas iš įvykių:
  • onBeginningOfSpeech- variklis išgirdo kažkokį garsą, gal tai kalba (o gal ne)
  • onEndOfSpeech- baigėsi garsas
  • onPartialResult- yra tarpinių atpažinimo rezultatų. Aktyvinimo frazei tai reiškia, kad ji veikė. Argumentas Hipotezė
  • onResult- galutinis pripažinimo rezultatas. Šis metodas bus iškviestas po to, kai bus iškviestas metodas sustabdyti adresu Kalbos atpažinimo priemonė. Argumentas Hipotezė yra atpažinimo duomenų (eilutės ir balų)

Vienaip ar kitaip įdiegę onPartialResult ir onResult metodus, galite pakeisti atpažinimo logiką ir gauti galutinį rezultatą. Štai kaip tai daroma mūsų programai:

@Override public void onEndOfSpeech() ( Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) ( mRecognizer.stop(); ) ) @Nepaisyti viešosios void onPartialResult(thesispothes)hipomo ( if (hipotezė == null) return; String text = hypothesis.getHypstr(); if (KWS_SEARCH.equals(mRecognizer.getSearchName())) ( startRecognition(); ) else ( Log.d(TAG, text); ) ) @Override public void onResult(Hypothesis hypothesis) ( mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); Eilutės tekstas = hipotezė != null ? hypothesis.d:TAG; , "onResult" + tekstas); if (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) ( if (tekstas != null) ( Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); process(tekstas) ); ) mRecognizer.startListening(KWS_SEARCH); ) )

Kai gauname onEndOfSpeech įvykį ir tuo pat metu atpažįstame komandą, kuri turi būti vykdoma, turime sustabdyti atpažinimą, po kurio iš karto bus iškviesta onResult.
„onResult“ turite patikrinti, kas ką tik buvo atpažinta. Jei tai komanda, turite ją paleisti, kad ji būtų vykdoma, ir perjungti variklį, kad atpažintumėte aktyvinimo frazę.
OnPartialResult mus domina tik aktyvinimo frazės atpažinimas. Jei ją aptinkame, iškart pradedame komandos atpažinimo procesą. Štai kaip tai atrodo:

Privatus sinchronizuotas void startRecognition() ( if (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) return; mRecognizer.cancel(); new ToneGenerator(AudioManager.STREAM_MUSIC, ToneGenerator.MAX_VOLUME).neStartator. TONE_CDMA_PIP, 200); post(400, new Runnable() ( @Override public void run() ( mMicView.setBackgroundResource(R.drawable.background_big_mic_green); mRecognizer.startListening(COMMAND_SEARCH, 3000,); „Listend(TAG) komandos"); post(4000, mStopRecognitionCallback); ) )); )
Čia pirmiausia paleidžiame nedidelį signalą, kad vartotojas žinotų, kad jį išgirdome ir esame pasiruošę jo komandai. Per tą laiką mikrofonas turi būti išjungtas. Todėl atpažinimą pradedame po nedidelio skirtojo laiko (šiek tiek ilgesnio už signalo trukmę, kad negirdėtume jo aido). Ji taip pat pradeda giją, kuri privers atpažinimą sustabdyti, jei vartotojas kalba per ilgai. Šiuo atveju tai yra 3 sekundės.

Kaip atpažintą eilutę paversti komandomis

Na, viskas jau būdinga konkrečiai programai. Atvirame pavyzdyje mes tiesiog ištraukiame įrenginių pavadinimus iš eilutės, ieškome norimo įrenginio ir arba pakeičiame jo būseną naudodami HTTP užklausą išmaniojo namo valdikliui, arba pranešame apie esamą būseną (kaip ir termostatas). Šią logiką galima pamatyti valdiklio klasėje.

Kaip sintetinti kalbą

Kalbos sintezė yra atvirkštinė atpažinimo operacija. Čia, atvirkščiai, teksto eilutę reikia paversti kalba, kad vartotojas galėtų ją išgirsti.
Termostato atveju turime priversti „Android“ įrenginį pasakyti esamą temperatūrą. Naudojant API Iš rašto į kalbą tai padaryti gana paprasta (ačiū „Google“ už gražią moterišką TTS rusų kalba):

Privatus tuščias kalbėjimas (Eilutės tekstas) (sinchronizuotas (mSpeechQueue) (mRecognizer.stop(); mSpeechQueue.add(tekstas); HashMap params = naujas HashMap (2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUZIKA)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true"); mTextToSpeech.speak(tekstas, TextToSpeech.QUEUE_ADD, params); ) )

Turbūt sakyčiau, kad tai banalu, bet prieš sintezės procesą būtina išjungti atpažinimą. Kai kuriuose įrenginiuose (pavyzdžiui, visuose „Samsung“) paprastai neįmanoma klausytis mikrofono ir ką nors sintetinti tuo pačiu metu.
Kalbos sintezės pabaigą (ty teksto kalbėjimo sintezatoriumi proceso pabaigą) galima stebėti klausytoje:

Privatus galutinis TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() ( @Override public void onUtteranceCompleted(String telleranceId) ( sinchronizuotas (mSpeechQuech) (Listenuch. KWS_SEARCH) ; ) ) ) );

Jame tiesiog patikriname, ar sintezės eilėje yra dar kažkas, ir įjungiame aktyvinimo frazių atpažinimą, jei nieko daugiau nėra.

Ir viskas?

Taip! Kaip matote, nesunku greitai ir tiksliai atpažinti kalbą tiesiai įrenginyje, nes yra tokių nuostabių projektų kaip „Pocketsphinx“. Tai labai patogi API, kurią galima naudoti sprendžiant su balso komandų atpažinimu susijusias problemas.

Šiame pavyzdyje atpažinimą privertėme atlikti visiškai teisingą užduotį - išmaniųjų namų įrenginių valdymas balsu. Dėl vietinio atpažinimo pasiekėme labai didelį greitį ir sumažinome klaidų skaičių.
Akivaizdu, kad tą patį kodą galima naudoti ir kitoms su balsu susijusioms užduotims. Tai nebūtinai turi būti protingi namai. Pridėti žymes