O mai bună recunoaștere a vorbirii. Cum să transformi șirul recunoscut în comenzi. Generarea de subtitrări pentru filme

„Aș dori să spun imediat că este prima dată când mă ocup de servicii de recunoaștere. Și, prin urmare, vă voi spune despre servicii dintr-un punct de vedere neprofesionist”, a remarcat expertul nostru, „pentru a testa recunoașterea, am folosit trei instrucțiuni: Google, Yandex și Azure”.

Google

Cunoscuta corporație IT se oferă să-și testeze produsul Google Cloud Platform online. Oricine poate încerca serviciul gratuit. Produsul în sine este convenabil și ușor de utilizat.

Pro:

  • suport pentru mai mult de 80 de limbi;
  • procesare rapidă a numelor;
  • recunoaștere de înaltă calitate în condiții de comunicare slabă și în prezența sunetelor străine.

Minusuri:

  • există dificultăți în recunoașterea mesajelor cu accent și pronunție slabă, ceea ce face ca sistemul să fie dificil de utilizat de către oricine, altul decât vorbitorii nativi;
  • lipsa suportului tehnic clar pentru serviciu.

Yandex

Recunoașterea vorbirii de la Yandex este disponibilă în mai multe opțiuni:

  • Nor
  • Bibliotecă pentru acces din aplicații mobile
  • Versiunea „cutie”.
  • API JavaScript

Dar să fim obiectivi. Ne interesează în primul rând nu varietatea posibilităților de utilizare, ci calitatea recunoașterii vorbirii. Prin urmare, am folosit versiunea de încercare a SpeechKit.

Pro:

  • ușurință în utilizare și configurare;
  • recunoaștere bună a textului în rusă;
  • sistemul oferă mai multe opțiuni de răspuns și, prin intermediul rețelelor neuronale, încearcă să găsească opțiunea care seamănă cel mai mult cu adevărul.

Minusuri:

  • În timpul procesării fluxului, unele cuvinte pot fi determinate incorect.

Azur

Azure este dezvoltat de Microsoft. Se remarcă față de analogii prin prețul său. Dar, fiți pregătiți să faceți față unor dificultăți. Instrucțiunile prezentate pe site-ul oficial sunt fie incomplete, fie depășite. Nu am putut lansa serviciul în mod adecvat, așa că a trebuit să folosim o fereastră de lansare terță parte. Cu toate acestea, chiar și aici veți avea nevoie de o cheie de serviciu Azure pentru testare.

Pro:

  • În comparație cu alte servicii, Azure procesează mesajele foarte rapid în timp real.

Minusuri:

  • sistemul este foarte sensibil la accent și are dificultăți în recunoașterea vorbirii de la vorbitori non-nativi;
  • Sistemul funcționează numai în limba engleză.

Examinați rezultatele:

După ce am cântărit toate argumentele pro și contra, ne-am stabilit pe Yandex. SpeechKit este mai scump decât Azure, dar mai ieftin decât Google Cloud Platform. Programul Google a înregistrat o îmbunătățire constantă a calității și acurateței recunoașterii. Serviciul se îmbunătățește folosind tehnologii de învățare automată. Cu toate acestea, recunoașterea de către Yandex a cuvintelor și expresiilor rusești este un nivel mai înalt.

Cum să folosești recunoașterea vocii în afaceri?

Există o mulțime de opțiuni pentru utilizarea recunoașterii, dar vă vom concentra atenția asupra celei care va afecta în primul rând vânzările companiei dvs. Pentru claritate, să ne uităm la procesul de recunoaștere folosind un exemplu real.

Nu cu mult timp în urmă, un serviciu SaaS binecunoscut a devenit clientul nostru (la solicitarea companiei, numele serviciului nu a fost dezvăluit). Cu ajutorul F1Golos, au înregistrat două videoclipuri audio, dintre care unul era menit să prelungească viața clienților caldi, celălalt - să proceseze cererile clienților.

Cum să prelungești viața clientului folosind recunoașterea vocală?

Adesea, serviciile SaaS funcționează cu o taxă lunară de abonament. Mai devreme sau mai târziu, perioada de utilizare de probă sau de trafic plătit se încheie. Apoi, este nevoie de extinderea serviciului. Compania a decis să avertizeze utilizatorii despre încetarea traficului cu 2 zile înainte de expirarea termenului de utilizare. Utilizatorii au fost anunțați prin mesageria vocală. Videoclipul suna astfel: „Bună ziua, vă reamintim că perioada dvs. plătită pentru utilizarea serviciului XXX se încheie. Pentru a extinde serviciul, spuneți da pentru a anula serviciile oferite, spuneți nu.”

Apeluri de la utilizatori care au spus cuvintele de cod: DA, REINNOIRE, VREAU, MAI MULTE DETALII; au fost transferate automat către operatorii companiei. Astfel, aproximativ 18% dintre utilizatori și-au reînnoit înregistrarea datorită unui singur apel.

Cum se simplifică un sistem de procesare a datelor folosind recunoașterea vorbirii?

Al doilea clip audio, lansat de aceeași companie, a fost de altă natură. Au folosit mesageria vocală pentru a reduce costul verificării numerelor de telefon. Anterior, ei verificau numerele de utilizator folosind un apel automat. Robotul le-a cerut utilizatorilor să apese anumite taste de pe telefon. Cu toate acestea, odată cu apariția tehnologiilor de recunoaștere, compania și-a schimbat tactica. Textul noului videoclip a fost următorul: „V-ați înregistrat pe portalul XXX, dacă vă confirmați înregistrarea, spuneți da. Dacă nu ați depus o cerere de înregistrare, spuneți nu.” Dacă clientul a rostit cuvintele: DA, CONFIRM, AHA sau DEsigur, datele despre aceasta au fost transferate instantaneu în sistemul CRM al companiei. Iar cererea de înregistrare a fost confirmată automat în câteva minute. Introducerea tehnologiilor de recunoaștere a redus timpul unui apel de la 30 la 17 secunde. Astfel, compania a redus costurile de aproape 2 ori.

Dacă sunteți interesat de alte moduri de a utiliza recunoașterea vocală sau doriți să aflați mai multe despre mesageria vocală, urmați linkul. Pe F1Golos vă puteți înscrie gratuit la primul buletin informativ și puteți afla singur cum funcționează noile tehnologii de recunoaștere.

Ni s-a pus o întrebare pe Facebook:
„Pentru a lucra cu text, trebuie să transcriu 3 ore de înregistrare vocală. Am încercat să încarc un fișier audio cu o imagine pe YouTube și să folosesc decodorul lor de text, dar s-a dovedit a fi un fel de înghițit. Spune-mi, cum pot rezolva asta din punct de vedere tehnic? Mulțumesc!
Alexander Konovalov"

Alexander, există o soluție tehnică simplă - dar rezultatul va depinde numai de calitatea înregistrării tale. Să vă explic despre ce calitate vorbim.

În ultimii ani, tehnologiile rusești de recunoaștere a vorbirii au făcut progrese semnificative. Procentul de erori de recunoaștere a scăzut la un astfel de nivel încât a devenit mai ușor să „pronunțați” alt text într-o aplicație mobilă specială sau un serviciu de internet, corectând manual „greșelile de tipărire” individuale - decât să tastați întregul text pe tastatură.

Dar pentru ca inteligența artificială a sistemului de recunoaștere să-și facă treaba, utilizatorul trebuie să-și facă pe a lui. Și anume: vorbiți în microfon clar și măsurat, evitați zgomotul puternic de fundal, dacă este posibil, utilizați o cască stereo sau un microfon extern atașat la butoniere (pentru calitatea recunoașterii, este important ca microfonul să fie întotdeauna la aceeași distanță de buzele tale și că vorbești la același volum). Desigur, cu cât clasa dispozitivului audio este mai mare, cu atât mai bine.

Nu este dificil să respectați aceste condiții dacă, în loc să accesați direct serviciul de recunoaștere a vorbirii pe Internet, utilizați un înregistrator de voce ca dispozitiv intermediar intermediar. Apropo, un astfel de „secretar personal” este indispensabil în special atunci când nu ai acces la internet. Desigur, este mai bine să utilizați cel puțin un reportofon profesional ieftin, decât un dispozitiv de înregistrare integrat într-un player MP3 sau smartphone ieftin. Acest lucru va oferi o șansă mult mai mare de a „alimenta” înregistrările primite către serviciul de recunoaștere a vorbirii.

Este dificil, dar poți convinge interlocutorul pe care îl intervievezi să respecte aceste reguli (încă un sfat: dacă nu ai un microfon extern clip-on în trusă, măcar ține reportofonul lângă interlocutor, și nu cu tine).

Dar „a lua notițe” la nivelul cerut automat la o conferință sau seminar este, după părerea mea, aproape nerealist (la urma urmei, nu vei putea controla vorbirea vorbitorilor și reacția ascultătorilor). Deși există o opțiune destul de interesantă: transformarea prelegerilor audio și a cărților audio înregistrate profesional în text (dacă nu au fost suprapuse cu muzică de fundal și zgomot).

Să sperăm că calitatea înregistrării vocii este suficient de ridicată pentru a fi descifrată mod automat.

Dacă nu, cu aproape orice calitate de înregistrare pe care o puteți decripta modul semi-automat.

În plus, într-o serie de situații, cea mai mare economie de timp și efort îți va fi adusă, în mod paradoxal, prin decodarea în mod manual. Mai exact, versiunea pe care eu o folosesc de zece ani. 🙂

Deci, în ordine.

1. Recunoaștere automată a vorbirii

Mulți oameni recomandă transcrierea înregistrărilor vocale pe YouTube. Dar această metodă obligă utilizatorul să piardă timpul în etapa de încărcare a fișierului audio și a imaginii de fundal și apoi în timpul procesului de ștergere a textului rezultat din marcajele de timp. Între timp, este ușor să economisiți acest timp. 🙂

Puteți recunoaște înregistrările audio direct de pe computer folosind capacitățile unuia dintre serviciile de Internet care rulează pe motorul de recunoaștere Google (recomand Speechpad.ru sau Speechlogger.com). Tot ce trebuie să faci este să faci un mic truc: în loc ca vocea să fie redată de la microfon, redirecționează fluxul audio redat de playerul computerului către serviciu.

Acest truc se numește un mixer stereo software (este folosit de obicei pentru a înregistra muzică pe un computer sau a o difuza de pe un computer pe Internet).

Mixerul stereo a fost inclus în Windows XP - dar a fost eliminat de dezvoltatori din versiunile ulterioare ale acestui sistem de operare (se spune că în scopuri de protecție a drepturilor de autor: pentru a împiedica jucătorii să fure muzică din jocuri etc.). Cu toate acestea, un mixer stereo vine adesea cu drivere pentru plăci audio (de exemplu, plăci Realtec încorporate în placa de bază). Dacă nu găsiți mixerul stereo pe computer folosind capturile de ecran de mai jos, încercați să reinstalați driverele audio de pe CD-ul livrat cu placa de bază sau de pe site-ul web al producătorului acesteia.

Dacă acest lucru nu ajută, instalați un program alternativ pe computer. De exemplu, dispozitivul audio virtual VB-CABLE gratuit: proprietarul serviciului Speechpad.ru menționat mai sus recomandă utilizarea acestuia.

Primul pas Trebuie să dezactivați microfonul pentru a-l utiliza în modul de înregistrare și să activați mixerul stereo (sau virtual VB-CABLE).

Pentru a face acest lucru, faceți clic pe pictograma difuzorului din colțul din dreapta jos (lângă ceas) - sau selectați secțiunea „Sunet” din „Panou de control”. În fila „Înregistrare” a ferestrei care se deschide, faceți clic dreapta și bifați casetele de lângă „Afișați dispozitivele deconectate” și „Afișați dispozitivele deconectate”. Faceți clic dreapta pe pictograma microfonului și selectați „Deconectați” (în general, deconectați toate dispozitivele marcate cu o pictogramă verde).

Faceți clic dreapta pe pictograma mixerului stereo și selectați „Activare”. Pe pictogramă va apărea o pictogramă verde, indicând faptul că mixerul stereo a devenit dispozitivul implicit.

Dacă decideți să utilizați VB-CABLE, atunci activați-l în fila „Înregistrare” în același mod.

Și, de asemenea, în fila „Redare”.

Al doilea pas. Activați înregistrarea audio în orice player (dacă trebuie să transcrieți pista audio a unui videoclip, puteți lansa și playerul video). În același timp, descărcați serviciul Speechpad.ru în browserul Chrome și faceți clic pe butonul „Activați înregistrarea” din acesta. Dacă înregistrarea este de o calitate suficient de înaltă, veți vedea cum serviciul transformă vorbirea în text semnificativ, aproape de original, în fața ochilor dumneavoastră. Adevărat, fără semne de punctuație, pe care va trebui să le plasezi singur.

Recomand să folosiți AIMP ca player audio, despre care va fi discutat mai detaliat în al treilea subcapitol. Acum voi observa doar că acest player vă permite să încetiniți înregistrarea fără distorsiuni ale vorbirii, precum și să corectați alte erori. Acest lucru poate îmbunătăți oarecum recunoașterea înregistrărilor de calitate nu foarte înaltă. (Uneori se recomandă chiar să preproceseze înregistrările proaste în programe profesionale de editare audio. Cu toate acestea, în opinia mea, aceasta este o sarcină care necesită prea mult timp pentru majoritatea utilizatorilor, care ar scrie textul cu mâna mult mai repede. :)

2. Recunoaștere semi-automată a vorbirii

Totul este simplu aici. Dacă înregistrarea este de proastă calitate și recunoașterea „se sufocă” sau serviciul produce prea multe erori, ajutați singur problema prin „încorporarea” în lanț: „player audio – crainic – sistem de recunoaștere”.

Sarcina ta: ascultați vorbirea înregistrată folosind căști și, în același timp, dictați-o printr-un microfon unui serviciu de recunoaștere online. (Desigur, nu trebuie să comutați de la microfon la mixer stereo sau cablu virtual în lista de dispozitive de înregistrare, ca în secțiunea anterioară). Și ca alternativă la serviciile de Internet menționate mai sus, puteți utiliza aplicații pentru smartphone precum Yandex.Dictovka gratuit sau funcția de dictare pe un iPhone cu sistemul de operare iOS 8 și mai sus.

Observ că în modul semi-automat aveți posibilitatea de a dicta imediat semne de punctuație, pe care serviciile nu sunt încă capabile să le plaseze în modul automat.

Dacă reușiți să dictați sincron cu înregistrarea redată pe player, transcrierea preliminară va dura aproape la fel de mult ca și înregistrarea în sine (fără a socoti timpul ulterior petrecut pentru corectarea erorilor de ortografie și gramaticale). Dar chiar și lucrul conform schemei: „ascultă o frază - dictează - ascultă o frază - dictează” vă poate oferi o bună economie de timp în comparație cu tastarea tradițională.

Recomand să folosiți același AIMP ca un player audio. În primul rând, îl puteți folosi pentru a încetini redarea la o viteză la care vă simțiți confortabil să lucrați în modul de dictare simultană. În al doilea rând, acest player poate returna înregistrarea pentru un anumit număr de secunde: acest lucru este uneori necesar pentru a auzi mai bine o frază ilizibilă.

3. Transcrierea manuală a înregistrării vocii

S-ar putea să descoperiți în practică că vă săturați prea repede de dictat în modul semi-automat. Sau faci prea multe greșeli cu serviciul. Sau, datorită abilităților tale de tastare rapidă, poți crea text corectat gata făcut pe tastatură mult mai ușor decât folosind dictarea. Sau reportofonul dvs., microfonul de pe o cască stereo sau placa audio nu oferă o calitate a sunetului acceptabilă pentru serviciu. Sau poate pur și simplu nu aveți capacitatea de a dicta cu voce tare la serviciu sau la biroul de acasă.

În toate aceste cazuri, metoda mea proprietară de decodare manuală vă va ajuta (ascultați înregistrarea în AIMP - introduceți textul în Word). Te va ajuta să-ți transformi postarea în text mai repede decât mulți jurnaliști profesioniști a căror viteză de tastare este similară cu a ta! În același timp, vei cheltui mult mai puțin efort și nervi decât ei. 🙂

Care este principalul motiv pentru care se irosesc energia și timpul când transcrieți înregistrările audio în mod tradițional? Datorită faptului că utilizatorul face o mulțime de mișcări inutile.

Utilizatorul se adresează în mod constant fie la înregistrarea vocală, fie la tastatura computerului. Am oprit redarea - am tastat pasajul ascultat într-un editor de text - am început redarea din nou - am derulat înapoi înregistrarea ilizibilă - etc., etc.

Utilizarea unui player software obișnuit pe un computer nu face procesul mult mai ușor: utilizatorul trebuie să minimizeze/extinde în mod constant Word, să oprească/porniți playerul și chiar să miște glisorul playerului înainte și înapoi pentru a găsi un fragment ilizibil și apoi să revină. până la ultimul loc ascultat din înregistrare.

Pentru a reduce timpul pierdut, companiile IT specializate dezvoltă transcriptoare software și hardware. Acestea sunt soluții destul de costisitoare pentru profesioniști - jurnaliști, stenografi de instanță, anchetatori etc. Dar, de fapt, pentru scopurile noastre sunt necesare doar două funcții:

  • capacitatea de a încetini redarea unei înregistrări vocale fără a o distorsiona sau scădea tonul (mulți jucători vă permit să încetiniți viteza de redare - dar, din păcate, în acest caz vocea umană se transformă într-o voce robotică monstruoasă, ceea ce este dificil a percepe după ureche timp îndelungat);
  • capacitatea de a opri înregistrarea sau de a o deplasa înapoi pentru un număr specificat de secunde și de a o returna înapoi fără a opri tastarea sau a minimiza fereastra editorului de text.

Pe vremea mea, am testat zeci de programe audio - și am găsit doar două aplicații plătite disponibile care îndeplineau aceste cerințe. Am cumpărat una dintre ele. Am mai căutat puțin dragii mei cititori 🙂 - și am găsit o soluție gratuită minunată - playerul AIMP, pe care îl folosesc și acum.

„După ce ați introdus setările AIMP, găsiți secțiunea Taste globale și reconfigurați Stop/Start la tasta Escape (Esc). Crede-mă, acesta este cel mai convenabil, deoarece nu trebuie să te gândești la asta și degetul tău nu va lovi din greșeală alte taste. Setați elementele „Deplasați puțin înapoi” și, respectiv, „Deplasați puțin înainte”, la tastele Ctrl + tastele cursor înapoi/înainte (aveți patru taste săgeți pe tastatură - selectați două dintre ele). Această funcție este necesară pentru a reasculta ultimul fragment sau pentru a avansa puțin.

Apoi, apelând egalizatorul, puteți reduce valorile Viteza și Tempo și puteți crește valoarea Pitch. În același timp, veți observa că viteza de redare va încetini, dar înălțimea vocii (dacă selectați bine valoarea „Pitch”) nu se va schimba. Selectați acești doi parametri astfel încât să puteți introduce text aproape simultan, oprindu-l doar ocazional.

Odată ce totul este configurat, tastarea vă va lua mai puțin timp, iar mâinile vor fi mai puțin obosite. Veți putea transcrie înregistrarea audio calm și confortabil, practic fără să ridicați degetele de la tastarea de la tastatură.”

Pot doar să adaug la ceea ce s-a spus că, dacă înregistrarea nu este de o calitate foarte înaltă, puteți încerca să-i îmbunătățiți redarea experimentând alte setări din AIMP Sound Effects Manager.

Și numărul de secunde pentru care vă va fi cel mai convenabil să vă deplasați înapoi sau înainte printr-o înregistrare folosind taste rapide - setați în secțiunea „Player” a ferestrei „Setări” (care poate fi apelată apăsând „Ctrl + P” taste rapide).

Îți doresc să economisești mai mult timp la sarcinile de rutină - și să-l folosești cu succes pentru lucruri importante! 🙂 Și nu uita să pornești microfonul din lista de dispozitive de înregistrare când te pregătești să vorbești pe Skype! 😉

3 moduri de a transcrie înregistrările vocale: recunoașterea vorbirii, dictarea, modul manual

Omul a fost întotdeauna atras de ideea de a controla o mașină folosind limbajul natural. Poate că acest lucru se datorează parțial dorinței omului de a fi DEAsupra mașinii. Ca să zic așa, să te simți superior. Dar mesajul principal este de a simplifica interacțiunea umană cu inteligența artificială. Controlul vocal în Linux a fost implementat cu diferite grade de succes timp de aproape un sfert de secol. Să analizăm problema și să încercăm să ne apropiem cât mai mult de sistemul nostru de operare.

Miezul problemei

Sistemele de voce umană pentru Linux există de mult timp și există foarte multe dintre ele. Dar nu toți procesează corect vorbirea rusă. Unele au fost complet abandonate de dezvoltatori. În prima parte a revizuirii noastre, vom vorbi direct despre sistemele de recunoaștere a vorbirii și asistenții vocali, iar în a doua, vom analiza exemple specifice de utilizare a acestora pe un desktop Linux.

Este necesar să se facă distincția între sistemele de recunoaștere a vorbirii în sine (traducerea vorbirii în text sau în comenzi), cum ar fi, de exemplu, CMU Sphinx, Julius, precum și aplicațiile bazate pe aceste două motoare și asistenții vocali, care au devenit populari. odată cu dezvoltarea smartphone-urilor și a tabletelor. Acesta este, mai degrabă, un produs secundar al sistemelor de recunoaștere a vorbirii, dezvoltarea lor ulterioară și implementarea tuturor ideilor de succes de recunoaștere a vocii, aplicarea lor în practică. Există încă puține dintre acestea pentru desktop-urile Linux.

Trebuie să înțelegeți că motorul de recunoaștere a vorbirii și interfața cu acesta sunt două lucruri diferite. Acesta este principiul de bază al arhitecturii Linux - împărțirea unui mecanism complex în componente mai simple. Cea mai dificilă muncă cade pe umerii motoarelor. Acesta este de obicei un program de consolă plictisitor care rulează neobservat de utilizator. Utilizatorul interacționează în principal cu programul de interfață. Crearea unei interfețe nu este dificilă, așa că dezvoltatorii își concentrează principalele eforturi pe dezvoltarea motoarelor de recunoaștere a vorbirii open-source.

Ce sa întâmplat înainte

Din punct de vedere istoric, toate sistemele de procesare a vorbirii din Linux s-au dezvoltat lent și la un pas. Motivul nu este strâmbătatea dezvoltatorilor, ci nivelul ridicat de intrare în mediul de dezvoltare. Scrierea codului de sistem pentru a lucra cu voce necesită un programator înalt calificat. Prin urmare, înainte de a începe să înțelegeți sistemele de vorbire în Linux, este necesar să faceți o scurtă excursie în istorie. IBM a avut cândva un sistem de operare atât de minunat - OS/2 Warp (Merlin). A apărut în septembrie, în 1996. Pe lângă faptul că avea avantaje evidente față de toate celelalte sisteme de operare, OS/2 era echipat cu un sistem foarte avansat de recunoaștere a vorbirii – IBM ViaVoice. Pentru acea vreme, acest lucru a fost foarte mișto, având în vedere că sistemul de operare rula pe sisteme cu un procesor 486 cu 8 MB de RAM (!).

După cum știți, OS/2 a pierdut lupta în fața Windows, dar multe dintre componentele sale au continuat să existe independent. Una dintre aceste componente a fost aceeași IBM ViaVoice, care s-a transformat într-un produs independent. Deoarece IBM a iubit întotdeauna Linux, ViaVoice a fost portat pe acest sistem de operare, ceea ce a oferit creației lui Linus Torvalds cel mai avansat sistem de recunoaștere a vorbirii din timpul său.

Din păcate, soarta ViaVoice nu a ieșit așa cum și-ar fi dorit utilizatorii Linux. Motorul în sine a fost distribuit gratuit, dar sursele sale au rămas închise. În 2003, IBM a vândut drepturile asupra tehnologiei companiei canadian-americane Nuance. Nuance, care a dezvoltat poate cel mai de succes produs comercial de recunoaștere a vorbirii - Dragon Naturally Speeking, este încă în viață și astăzi. Acesta este aproape sfârșitul istoriei fără glorie a ViaVoice pe Linux. În timpul scurt în care ViaVoice a fost gratuit și disponibil pentru utilizatorii Linux, au fost dezvoltate mai multe interfețe pentru acesta, cum ar fi Xvoice. Cu toate acestea, proiectul a fost abandonat de mult și acum este practic inoperabil.

INFO

Cea mai dificilă parte a recunoașterii automate a vorbirii este limbajul uman natural.

Ce azi?

Astăzi totul este mult mai bine. În ultimii ani, după descoperirea surselor Google Voice API, situația cu dezvoltarea sistemelor de recunoaștere a vorbirii în Linux s-a îmbunătățit semnificativ, iar calitatea recunoașterii a crescut. De exemplu, proiectul Linux Speech Recognition bazat pe API-ul Google Voice arată rezultate foarte bune pentru limba rusă. Toate motoarele funcționează aproximativ la fel: mai întâi, sunetul de la microfonul dispozitivului utilizatorului intră în sistemul de recunoaștere, după care fie vocea este procesată pe dispozitivul local, fie înregistrarea este trimisă la un server la distanță pentru procesare ulterioară. A doua opțiune este mai potrivită pentru smartphone-uri sau tablete. De fapt, așa funcționează motoarele comerciale - Siri, Google Now și Cortana.

Din varietatea de motoare pentru lucrul cu vocea umană, există câteva care sunt active în prezent.

AVERTIZARE

Instalarea multor sisteme de recunoaștere a vorbirii descrise este o sarcină non-trivială!

Sfinxul CMU

O mare parte din dezvoltarea CMU Sphinx are loc la Universitatea Carnegie Mellon. În momente diferite, atât Institutul de Tehnologie din Massachusetts, cât și corporația Sun Microsystems, acum decedată, au lucrat la proiect. Sursele de motor sunt distribuite sub licența BSD și sunt disponibile atât pentru uz comercial, cât și necomercial. Sphinx nu este o aplicație de utilizator, ci mai degrabă un set de instrumente care pot fi folosite pentru a dezvolta aplicații pentru utilizatorii finali. Sphinx este acum cel mai mare proiect de recunoaștere a vorbirii. Este format din mai multe părți:

  • Pocketsphinx este un program mic, rapid, care procesează sunet, modele acustice, gramatici și dicționare;
  • Biblioteca Sphinxbase, necesară pentru ca Pocketsphinx să funcționeze;
  • Sphinx4 - biblioteca de recunoaștere reală;
  • Sphinxtrain este un program de antrenament de modele acustice (înregistrări ale vocii umane).

Proiectul se dezvoltă încet, dar sigur. Și cel mai important, poate fi folosit în practică. Și nu numai pe computere, ci și pe dispozitive mobile. În plus, motorul funcționează foarte bine cu vorbirea rusă. Dacă aveți mâinile drepte și capul limpede, puteți configura recunoașterea vorbirii rusești folosind Sphinx pentru a controla aparatele electrocasnice sau o casă inteligentă. De fapt, puteți transforma un apartament obișnuit într-o casă inteligentă, ceea ce vom face în a doua parte a acestei recenzii. Implementările Sphinx sunt disponibile pentru Android, iOS și chiar Windows Phone. Spre deosebire de metoda cloud, atunci când munca de recunoaștere a vorbirii cade pe umerii serverelor Google ASR sau Yandex SpeechKit, Sphinx funcționează mai precis, mai rapid și mai ieftin. Și complet local. Dacă doriți, puteți învăța Sphinx modelul în limba rusă și gramatica interogărilor utilizatorilor. Da, va trebui să lucrați puțin în timpul instalării. Așa cum configurarea modelelor și bibliotecilor de voce Sphinx nu este o sarcină pentru începători. Deoarece nucleul CMU Sphinx, biblioteca Sphinx4, este scris în Java, puteți include codul acestuia în aplicațiile de recunoaștere a vorbirii. Exemple specifice de utilizare vor fi descrise în a doua parte a revizuirii noastre.

VoxForge

Să subliniem în special conceptul de corpus de vorbire. Un corpus de vorbire este un set structurat de fragmente de vorbire, care este prevăzut cu software pentru accesarea elementelor individuale ale corpusului. Cu alte cuvinte, este un set de voci umane în diferite limbi. Fără un corpus de vorbire, niciun sistem de recunoaștere a vorbirii nu poate funcționa. Este dificil să creați un corpus de vorbire deschisă de înaltă calitate singur sau chiar cu o echipă mică, așa că un proiect special colectează înregistrări ale vocilor umane - VoxForge.

Oricine are acces la Internet poate contribui la crearea unui corpus de vorbire prin simpla înregistrare și trimitere a unui fragment de vorbire. Acest lucru se poate face chiar și prin telefon, dar este mai convenabil să utilizați site-ul. Desigur, pe lângă înregistrarea audio în sine, corpus de vorbire trebuie să includă informații suplimentare, cum ar fi transcrierea fonetică. Fără aceasta, înregistrarea vorbirii este lipsită de sens pentru sistemul de recunoaștere.


HTK, Julius și Simon

HTK - Hidden Markov Model Toolkit este un set de instrumente pentru cercetarea și dezvoltarea instrumentelor de recunoaștere a vorbirii folosind modele Markov ascunse, dezvoltat la Universitatea din Cambridge sub patronajul Microsoft (Microsoft a cumpărat odată acest cod de la o întreprindere comercială Entropic Cambridge Research Laboratory Ltd și apoi a returnat-o Cambridge împreună cu o licență restrictivă). Sursele proiectului sunt disponibile pentru toată lumea, dar utilizarea codului HTK în produsele destinate utilizatorilor finali este interzisă de licență.

Cu toate acestea, acest lucru nu înseamnă că HTK este inutil pentru dezvoltatorii Linux: poate fi folosit ca instrument auxiliar atunci când se dezvoltă instrumente de recunoaștere a vorbirii open-source (și comerciale), ceea ce este ceea ce dezvoltatorii motorului Julius open-source, care este fiind dezvoltat în Japonia, nu. Julius funcționează cel mai bine cu japoneza. De asemenea, cel mare și puternic nu este lipsit, deoarece același VoxForge este folosit ca bază de date vocală.

Continuarea este disponibilă numai pentru abonați

Opțiunea 1. Abonați-vă la Hacker pentru a citi toate materialele de pe site

Abonamentul vă va permite să citiți TOATE materialele plătite de pe site în perioada specificată. Acceptăm plăți cu carduri bancare, monedă electronică și transferuri din conturile operatorului de telefonie mobilă.

Poate cel mai convenabil program de transcriere a textului pentru Windows și Mac OS, care combină un player audio și un editor de text. Principiul de funcționare este foarte simplu - încărcați un fișier audio în program, ascultați-l folosind tastele rapide de pe tastatură (le puteți aloca singur) și, în același timp, introduceți text. Viteza de redare și volumul audio sunt, de asemenea, ajustate cu ajutorul tastaturii. În acest fel, mâinile tale sunt întotdeauna pe tastatură și nu este nevoie să folosești mouse-ul sau să comuți între diferite programe. Vă rugăm să rețineți că editorul de text încorporat nu recunoaște erorile și nu are multe alte funcții familiare, de exemplu, comutarea cratimelor în liniuțe. Cu toate acestea, puteți utiliza alte editoare de text în paralel cu Express Scribe, folosind taste rapide pentru a controla redarea audio. Programul este shareware, cost complet: 17-50 USD.


02. Transcriptor-pro



Un program în limba rusă pentru Windows care vă permite să ascultați nu numai audio, ci și să vizualizați fișiere video. Editorul de text încorporat are capacitatea de a adăuga marcaje temporale și numele interlocutorilor. Textul rezultat poate fi importat în „transcrieri interactive” și poate fi, de asemenea, ajustat ca parte a unui proiect de grup. Aplicația este disponibilă numai cu un abonament anual, costul este de 689 de ruble pe an.


03. RPlayer V1.4



Un program simplu pentru procesarea și transcrierea fișierelor audio cu suport pentru taste rapide și capacitatea de a tasta în Microsoft Word. Spre deosebire de programe similare anterioare, acesta poate fi descărcat gratuit, dar este instabil pe noile versiuni de Windows.

04. Voco

Aplicație profesională Windows pentru conversia vorbirii în text. Acceptă tastarea vocală în orice browser de testare, are o colecție mare de dicționare tematice și nu necesită o conexiune la Internet pentru recunoașterea vorbirii. Versiunile extinse „Voco.Professional” și „Voco.Enterprise” pot funcționa cu fișiere audio gata făcute. Singurul dezavantaj este costul ridicat al aplicației.


05. Dictarea Dragonului



Aplicație mobilă gratuită pentru recunoașterea discursului dictat. Programul poate recunoaște aproximativ 40 de limbi și varietățile acestora, vă permite să editați text și să îl trimiteți pe e-mail, rețele sociale sau să copiați în clipboard. Este necesară o conexiune la internet pentru a funcționa.


06. RealSpeaker



O aplicație unică care poate recunoaște nu numai fișierele audio, ci și vorbirea în direct rostită către cameră. Datorită unei extensii video speciale, „RealSpeaker” citește mișcările buzelor, îmbunătățind astfel procesul de recunoaștere a vorbirii cu până la 20-30% în comparație cu alți algoritmi similari. În prezent, aplicația acceptă 11 limbi: rusă, engleză (dialecte americane și britanice), franceză, germană, chineză, coreeană și japoneză, turcă, spaniolă, italiană și ucraineană. Programul este distribuit gratuit, costul depinde de durata abonamentului, versiunea nelimitată costă aproximativ 2 mii de ruble.

) folosind un exemplu real Hello World de control al electrocasnicelor.
De ce electrocasnice? Da, pentru că datorită unui astfel de exemplu poți aprecia asta viteza si acuratetea care se poate realiza prin utilizarea complet local recunoașterea vorbirii fără servere precum Google ASR sau Yandex SpeechKit.
De asemenea, atașez articolului tot codul sursă al programului și ansamblul în sine pentru Android.

De ce brusc?

După ce am dat recent peste , l-am întrebat pe autor de ce a vrut să folosească recunoașterea vorbirii bazată pe server pentru programul său (în opinia mea, acest lucru a fost inutil și a dus la unele probleme). La care am primit o contraîntrebare despre dacă aș putea descrie mai detaliat utilizarea metodelor alternative pentru proiecte în care nu este nevoie să recunoaștem nimic, iar dicționarul este format dintr-un set finit de cuvinte. Și chiar și cu un exemplu de aplicare practică...

De ce avem nevoie de altceva în afară de Yandex și Google?

Pentru acea „aplicație practică” am ales subiectul control vocal pentru casă inteligentă.
De ce exact acest exemplu? Pentru că arată mai multe avantaje ale recunoașterii vocale complet locale față de recunoașterea folosind soluții cloud. Și anume:
  • Viteză- nu depindem de servere si prin urmare nu depindem de disponibilitatea acestora, latimea de banda etc. factori
  • Precizie- motorul nostru funcționează numai cu dicționarul care interesează aplicația noastră, crescând astfel calitatea recunoașterii
  • Preț- nu trebuie să plătim pentru fiecare solicitare către server
  • Activare vocală- ca bonus suplimentar la primele puncte - putem „asculta transmisia” în mod constant fără a ne irosi traficul și fără a încărca serverele

Notă

Permiteți-mi să fac o rezervare imediat că aceste avantaje pot fi considerate avantaje numai pentru o anumită clasă de proiecte, Unde suntem stim sigur dinainte, cu ce dicționar și cu ce gramatică va opera utilizatorul. Adică, atunci când nu trebuie să recunoaștem textul arbitrar (de exemplu, un mesaj SMS sau o interogare de căutare). În caz contrar, recunoașterea cloud este indispensabilă.

Deci Android poate recunoaște vorbirea fără internet!
Da, da... Doar pe JellyBean. Și doar de la jumătate de metru, nu mai mult. Și această recunoaștere este aceeași dictare, doar folosind un model mult mai mic. Deci, nici nu îl putem gestiona sau configura. Și ce ne va întoarce data viitoare nu se știe. Deși tocmai potrivit pentru SMS-uri!

Ce facem?

Vom implementa o telecomandă vocală pentru electrocasnice, care va funcționa cu precizie și rapiditate, de la câțiva metri și chiar și pe smartphone-uri, tablete și ceasuri Android ieftine, proaste, foarte ieftine.
Logica va fi simplă, dar foarte practică. Activăm microfonul și rostim unul sau mai multe nume de dispozitiv. Aplicația le recunoaște și le pornește și oprește în funcție de starea curentă. Sau primește o avere de la ei și o pronunță cu o voce feminină plăcută. De exemplu, temperatura actuală din cameră.

Opțiuni practice abundă

Dimineața, fără să deschizi ochii, ai plesnit palma pe ecranul smartphone-ului de pe noptieră și ai poruncit „Bună dimineața!” - incepe scenariul, se aprinde cafetiera si fredoneaza, se aude muzica placuta, draperiile se deschid.
Să atârnăm un smartphone ieftin (2 mii, nu mai mult) pe perete în fiecare cameră. Mergem acasă după serviciu și comandăm în gol „Smart Home! Lumini, televizor! - Nu cred că este nevoie să spunem ce urmează.

Trancrieri



Gramatica descrie ce ceea ce poate spune utilizatorul. Pentru ca Pocketsphinx să știe, Cum el o va pronunța, este necesar ca fiecare cuvânt din gramatică să scrie cum sună în modelul lingvistic corespunzător. Acesta este transcriere fiecare cuvant. Se numeste dicţionar.

Trancrierile sunt descrise folosind o sintaxă specială. De exemplu:
inteligent uu m n ay j house d oo m

In principiu, nimic complicat. O vocală dublă în transcriere indică stres. O consoană dublă este o consoană moale urmată de o vocală. Toate combinațiile posibile pentru toate sunetele limbii ruse.

Este clar că nu putem descrie în prealabil toate transcripțiile din aplicația noastră, deoarece nu știm dinainte denumirile pe care utilizatorul le va da dispozitivelor sale. Prin urmare, vom genera astfel de transcripții „din mers” conform unor reguli de fonetică rusă. Pentru a face acest lucru, puteți implementa următoarea clasă PhonMapper, care poate primi un șir ca intrare și poate genera transcrierea corectă pentru acesta.

Activare vocală

Aceasta este capacitatea motorului de recunoaștere a vorbirii de a „asculta emisiunea” tot timpul pentru a reacționa la o frază (sau fraze) predeterminată. În același timp, toate celelalte sunete și vorbire vor fi eliminate. Acest lucru nu este același lucru cu descrierea gramaticii și doar pornirea microfonului. Nu voi prezenta aici teoria acestei sarcini și mecanica modului în care funcționează. Permiteți-mi doar să spun că recent programatorii care lucrează la Pocketsphinx au implementat o astfel de funcție, iar acum este disponibilă imediat în API.

Un lucru este cu siguranță demn de menționat. Pentru o frază de activare, trebuie nu numai să specificați transcrierea, ci și să o selectați pe cea potrivită valoarea pragului de sensibilitate. O valoare prea mică va avea ca rezultat multe fals pozitive (acesta este atunci când nu ați rostit fraza de activare, dar sistemul o recunoaște). Și prea mare - la imunitate. Prin urmare, această setare este de o importanță deosebită. Gama aproximativă de valori - de la 1e-1 la 1e-40 în funcţie de fraza de activare.

Activarea senzorului de proximitate

Această sarcină este specifică proiectului nostru și nu are legătură directă cu recunoașterea. Codul poate fi văzut direct în activitatea principală.
Ea pune în aplicare SensorEventListener iar in momentul apropierii (valoarea senzorului este mai mica decat maxima) porneste cronometrul, verificand dupa o anumita intarziere daca senzorul este inca blocat. Acest lucru se face pentru a elimina fals pozitive.
Când senzorul nu este blocat din nou, oprim recunoașterea, obținând rezultatul (vezi descrierea de mai jos).

Să începem recunoașterea

Pocketsphinx oferă un API convenabil pentru configurarea și rularea procesului de recunoaștere. Acestea sunt clasele SpechRecognizerȘi SpeechRecognizerSetup.
Iată cum arată configurația și lansarea recunoașterii:

PhonMapper phonMapper = nou PhonMapper(getAssets().open("dict/ru/hotwords")); Gramatica gramatica = new Grammar(nume, phonMapper); grammar.addWords(hotword); DataFiles dataFiles = new DataFiles(getPackageName(), "ru"); Fișier hmmDir = fișier nou (dateFiles.getHmm()); File dict = new File(dataFiles.getDict()); Fișier jsgf = fișier nou(dataFiles.getJsgf()); copyAssets(hmmDir); saveFile(jsgf, grammar.getJsgf()); saveFile(dict, grammar.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer(); mRecognizer.addKeyphraseSearch(KWS_SEARCH, hotword); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

Aici copiam mai întâi toate fișierele necesare pe disc (Pocketpshinx necesită un model acustic, gramatică și dicționar cu transcripții pentru a fi pe disc). Apoi motorul de recunoaștere în sine este configurat. Sunt indicate căile către fișierele model și dicționar, precum și unii parametri (pragul de sensibilitate pentru fraza de activare). În continuare, este configurată calea către fișierul cu gramatica, precum și fraza de activare.

După cum puteți vedea din acest cod, un motor este configurat atât pentru gramatică, cât și pentru recunoașterea frazelor de activare. De ce se face asta? Astfel încât să putem comuta rapid între ceea ce trebuie să recunoaștem în prezent. Iată cum arată începerea procesului de recunoaștere a frazei de activare:

MRecognizer.startListening(KWS_SEARCH);
Și așa se recunoaște vorbirea în funcție de o gramatică dată:

MRecognizer.startListening(COMMAND_SEARCH, 3000);
Al doilea argument (opțional) este numărul de milisecunde după care recunoașterea se va încheia automat dacă nimeni nu spune nimic.
După cum puteți vedea, puteți utiliza un singur motor pentru a rezolva ambele probleme.

Cum să obțineți rezultatul recunoașterii

Pentru a obține rezultatul recunoașterii, trebuie să specificați și un ascultător de evenimente care implementează interfața RecunoaștereAscultător.
Are mai multe metode care sunt numite de pocketsphinx atunci când are loc unul dintre evenimente:
  • la Începutul vorbirii- motorul a auzit un sunet, poate a fost vorba (sau poate nu)
  • la EndOfSpeech- se termină sunetul
  • onPartialResult- există rezultate intermediare de recunoaștere. Pentru o frază de activare, aceasta înseamnă că a funcționat. Argument Ipoteză
  • onResult- rezultatul final al recunoașterii. Această metodă va fi apelată după apelarea metodei Stop la SpeechRecognizer. Argument Ipoteză conține date de recunoaștere (șir și scor)

Prin implementarea metodelor onPartialResult și onResult într-un fel sau altul, puteți schimba logica de recunoaștere și puteți obține rezultatul final. Iată cum se face în cazul aplicației noastre:

@Override public void onEndOfSpeech() ( Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) ( mRecognizer.stop(); ) ) @Override public void onPartialpothesis hypothesisy(Hipotesis) ( if (ipoteză == null) return; String text = hypothesis.getHypstr(); if (KWS_SEARCH.equals(mRecognizer.getSearchName())) ( startRecognition(); ) else ( Log.d(TAG, text); ) ) @Override public void onResult(ipoteza ipotezei) ( mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); String text = hypothesis != null ? hypothesis.getHypstr; Log.()d , "onResult " + text); if (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) ( if (text != null) ( Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); process(text ); ) mRecognizer.startListening(KWS_SEARCH);

Când primim evenimentul onEndOfSpeech și dacă în același timp recunoaștem comanda de executat, atunci trebuie să oprim recunoașterea, după care onResult va fi apelat imediat.
În onResult trebuie să verificați ceea ce tocmai a fost recunoscut. Dacă aceasta este o comandă, atunci trebuie să o lansați pentru execuție și să comutați motorul pentru a recunoaște fraza de activare.
În onPartialResult ne interesează doar recunoașterea frazei de activare. Dacă îl detectăm, începem imediat procesul de recunoaștere a comenzii. Iată cum arată:

Privat sincronizat void startRecognition() ( dacă (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) return; mRecognizer.cancel(); nou ToneGenerator(AudioManager.STREAM_MUSIC, ToneGenerator.ToneGenerator.MAXt_VOLUME.ToneGenerator()) 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, ); Log. comenzi"); post(4000, mStopRecognitionCallback); ) )); )
Aici redăm mai întâi un mic semnal pentru a anunța utilizatorul că l-am auzit și că suntem gata pentru comanda lui. În acest timp, microfonul ar trebui să fie oprit. Prin urmare, începem recunoașterea după un scurt timeout (puțin mai lung decât durata semnalului, pentru a nu auzi ecoul acestuia). De asemenea, pornește un fir care va opri recunoașterea dacă utilizatorul vorbește prea mult timp. În acest caz, este de 3 secunde.

Cum să transformi șirul recunoscut în comenzi

Ei bine, totul aici este specific unei anumite aplicații. În cazul exemplului simplu, pur și simplu scoatem numele dispozitivelor din linie, căutăm dispozitivul dorit și fie îi schimbăm starea utilizând o solicitare HTTP către controlerul pentru casă inteligentă, fie raportăm starea lui curentă (ca în cazul un termostat). Această logică poate fi văzută în clasa Controller.

Cum să sintetizezi vorbirea

Sinteza vorbirii este operația inversă a recunoașterii. Aici este invers - trebuie să transformați o linie de text în vorbire, astfel încât utilizatorul să o poată auzi.
În cazul termostatului, trebuie să facem dispozitivul nostru Android să vorbească temperatura curentă. Folosind API-ul TextToSpeech acest lucru este destul de ușor de făcut (mulțumesc lui Google pentru minunatul TTS feminin pentru limba rusă):

Privat nul vorbire (String text) ( sincronizat (mSpeechQueue) ( ​​​​mRecognizer.stop(); mSpeechQueue.add(text); HashMap params = nou HashMap (2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, „adevărat”); mTextToSpeech.speak(text, TextToSpeech.QUEUE_ADD, parametri); ) )

Probabil voi spune ceva banal, dar înainte de procesul de sinteză, este necesar să dezactivați recunoașterea. Pe unele dispozitive (de exemplu, toate dispozitivele Samsung) este în general imposibil să ascultați microfonul și să sintetizați ceva în același timp.
Sfârșitul sintezei vorbirii (adică sfârșitul procesului de vorbire a textului de către un sintetizator) poate fi urmărit în ascultător:

Private final TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() ( @Override public void onUtteranceCompleted(String utteranceId) ( sincronizat (mSpeechQueue) (if.EmpEch (utterance)() ; ) ( mRecognizer.startListening ( KWS_SEARCH) ) ) ) );

În el, pur și simplu verificăm dacă există altceva în coada de sinteză și activăm recunoașterea frazei de activare dacă nu există nimic altceva.

Și e tot?

Da! După cum puteți vedea, recunoașterea rapidă și eficientă a vorbirii direct pe dispozitiv nu este deloc dificilă, datorită prezenței unor astfel de proiecte minunate precum Pocketsphinx. Oferă un API foarte convenabil care poate fi folosit în rezolvarea problemelor legate de recunoașterea comenzilor vocale.

În acest exemplu, am atașat recunoașterea unei sarcini complet specifice - control vocal al dispozitivelor inteligente de acasă. Datorită recunoașterii locale, am atins viteză foarte mare și am minimizat erorile.
Este clar că același cod poate fi folosit pentru alte sarcini legate de voce. Nu trebuie să fie o casă inteligentă. Adaugă etichete