Com es realitza el reconeixement de veu amb els 3 marcs d’aprenentatge profund

Bloc

Com es realitza el reconeixement de veu amb els 3 marcs d’aprenentatge profund

Introducció

Reconeixement de veu està envaint les nostres vides. Està integrat als nostres telèfons ( Síria ), les nostres consoles de jocs ( Kinect ), els nostres rellotges intel·ligents ( Apple Watch ), i fins i tot les nostres llars ( Amazon Echo ). Però reconeixement de veu ha existit des de fa dècades, per què ara està arribant al corrent principal?



La raó és que Aprenentatge profund finalment va fer que el reconeixement de veu fos prou precís per ser útil fora d’entorns controlats amb cura. En aquesta publicació, aprendrem a actuar reconeixement de veu amb 3 implementacions diferents de popular Marcs d’aprenentatge profund .

Reconeixement de la parla: la manera clàssica

A l 'era de D'acord Google És possible que no necessiti definir ASR, però aquí teniu una descripció bàsica: digueu que teniu una persona o una font d’àudio que diu alguna cosa textual i que teniu un munt de micròfons que reben els senyals d’àudio. Podeu obtenir aquests senyals des d’un o diversos dispositius i després passar-los a un sistema ASR, la tasca de la qual és inferir la transcripció original de la font que la persona va parlar o que va reproduir el dispositiu.



Per què és important l’ASR?



En primer lloc, és una interfície molt natural per a la comunicació humana. No necessiteu un ratolí ni un teclat, de manera que, òbviament, és una bona manera d’interactuar amb les màquines. Ni tan sols cal aprendre noves tècniques perquè la majoria de la gent aprèn a parlar en funció del desenvolupament natural. És una interfície molt natural per parlar amb dispositius senzills com ara cotxes, telèfons de mà i chatbots.

Llavors, com es fa clàssicament?

ethereummax (emax)

Com s’ha observat anteriorment, la forma clàssica de construir un sistema de reconeixement de veu és construir un model generatiu de llenguatge. A la part més dreta, produïu una seqüència determinada de paraules a partir de models lingüístics. I després, per a cada paraula, teniu un model de pronunciació que diu com es parla aquesta paraula en particular. Normalment s’escriu com a seqüència de fonemes, que són unitats bàsiques de so, però pel nostre vocabulari, només direm una seqüència de fitxes, que representen un conjunt de coses que han estat definides per experts en lingüística.

A continuació, els models de pronunciació s’integren en un model acústic, que bàsicament defineix com sona un testimoni determinat. Aquests models acústics s’utilitzen ara per descriure les dades en si. Aquí les dades serien x, que és la seqüència de fotogrames de funcions d'àudio de x1 a xT. Normalment, aquestes funcions són determinades pels experts en processament de senyals (com ara els components de freqüència de les formes d'ona d'àudio que es capturen).

Cadascun d’aquests components diferents en aquesta canalització utilitza un model estadístic diferent:

  • En el passat, els models de llenguatge eren normalment models de N-gram, que funcionaven molt bé per a problemes senzills amb dades d’entrada de parla limitades. Es tracta essencialment de taules que descriuen les probabilitats de seqüències de token.
  • Els models de pronunciació eren taules de cerca simples amb probabilitats associades a pronunciacions. Aquestes taules serien taules molt grans de diferents pronunciacions.
  • Els models acústics es construeixen mitjançant models de barreja gaussiana amb arquitectures molt específiques associades.
  • El processament de la veu estava predefinit.

Un cop construït aquest tipus de model, podem realitzar el reconeixement fent la inferència de les dades rebudes. Així obteniu una forma d’ona, calculeu les funcions per a ella (X) i feu una cerca de Y que doni les probabilitats més altes de X.

El Xarxa neuronal Invasió

Amb el pas del temps, els investigadors van començar a adonar-se que cadascun d’aquests components podria funcionar amb més eficàcia si l’utilitzéssim xarxes neuronals .

  • En lloc dels models de llenguatge N-gram, podem construir models de llenguatge neuronal i alimentar-los en un sistema de reconeixement de veu per restaurar les coses produïdes per un primer sistema de reconeixement de veu.
  • Analitzant els models de pronunciació, podem esbrinar com pronunciar una nova seqüència de caràcters que no havíem vist mai abans amb un xarxa neuronal .
  • Per als models acústics, podem construir xarxes neuronals profundes (com ara models basats en LSTM) per obtenir puntuacions de precisió de classificació molt millors de les característiques del quadre actual.
  • Curiosament, fins i tot es va trobar que fins i tot els passos de processament previ de la veu eren reemplaçables per xarxes neuronals convolucionals en senyals de veu crues.

tutorial de joc de cartes 2d unitat

Tot i això, encara hi ha un problema. Hi ha xarxes neuronals a cada component, però s’entrenen de manera independent amb objectius diferents. Per això, és possible que els errors d'un component no es comportin bé amb els errors d'un altre component. Per tant, aquesta és la motivació bàsica per idear un procés on es pugui formar tot el model com un gran component.

Aquests anomenats models d'extrem a extrem inclouen cada vegada més components a la canonada comentats anteriorment. Els 2 més populars són (1) Classificació temporal connexionista (CTC), que està sent molt utilitzat aquests dies a Baidu i Google, però requereix molta formació; i (2) Seqüència a seqüència (Seq-2-Seq), que no requereix personalització manual.

La motivació bàsica és que volem fer reconeixement de veu de punta a punta. Se'ns dóna l'àudio X, que és una seqüència de fotogrames de x1 a xT, i el text de sortida corresponent Y, que és una seqüència de y1 a yL. Y és només una seqüència de text (transcripció) i X és l'espectrograma processada d'àudio. Volem realitzar el reconeixement de la parla aprenent un model probabilístic p (Y | X): començant per les dades i predint les seqüències objectiu mateixes.

1 - Classificació temporal connexionista

El primer d’aquests models s’anomena Classificació Temporal Connectionista (CTC) ([1], [2], [3]). X és una seqüència de marcs de dades amb longitud T: x1, x2, ..., xT, i Y són les fitxes de sortida de longitud L: y1, y2, ..., yL. A causa de la manera com es construeix el model, necessitem que T sigui superior a L.

Aquest model té una estructura molt específica que el fa adequat per a la parla:

  • S’obté l’espectrograma a la part inferior (X). L’introduïu en una xarxa neuronal recurrent bidireccional i, com a resultat, la fletxa que apunta en qualsevol pas de temps depèn de la totalitat de les dades d’entrada. Com a tal, pot calcular una funció bastant complicada de totes les dades X.
  • Aquest model, a la part superior, té funcions softmax en cada període de temps corresponent a l'entrada. La funció softmax s’aplica a un vocabulari d’una longitud particular que us interessa. En aquest cas, teniu les lletres minúscules de la a a la z i alguns símbols de puntuació. Per tant, el vocabulari de CTC seria tot això i un testimoni addicional anomenat testimoni en blanc.
  • Cada quadre de la predicció produeix bàsicament una probabilitat de registre per a una classe de testimoni diferent en aquest pas de temps. En el cas anterior, una puntuació s (k, t) és la probabilitat de registre de la categoria k en el pas de temps t donades les dades X.

En un model CTC, si només fixeu-vos en les funcions softmax que produeix la xarxa neuronal recurrent durant tot el pas del temps, podreu trobar la probabilitat de la transcripció a través d’aquestes funcions softmax individuals al llarg del temps.

Vegem un exemple (a continuació). El model CTC pot representar tots aquests camins a través de tot l’espai de les funcions softmax i mirar només els símbols que corresponen a cadascun dels passos temporals.

nba stream a reddit

Com es veu a l'esquerra, el model CTC passarà per 2 símbols C, després per un símbol en blanc, després produirà símbols 2 A, després produirà un altre símbol en blanc, després passarà a un símbol T i, finalment, tornarà a produir un símbol en blanc.

Per tant, quan passeu per aquests camins amb la restricció, només podeu fer la transició entre el mateix fonema d’un pas a l’altre. Per tant, acabareu amb diferents maneres de representar una seqüència de sortida.

Per a l'exemple anterior, tenim cc aa t o bé cc a t o bé cccc aaaa aaaa . Tenint en compte aquestes limitacions, resulta que, tot i que hi ha un nombre exponencial de camins pels quals es pot produir el mateix símbol de sortida, en realitat es pot fer correctament mitjançant un algorisme de programació dinàmica. A causa de la programació dinàmica, és possible calcular exactament la probabilitat de registre p (Y | X) i el seu gradient. Aquest degradat es pot tornar a propagar a una xarxa neuronal els paràmetres del qual es poden ajustar amb el vostre optimitzador preferit.

A continuació es mostren alguns resultats de CTC, que mostren el funcionament del model en un àudio determinat. Una forma d’ona en brut està alineada a la part inferior i les prediccions corresponents s’emeten a la part superior. Es pot veure que produeix el símbol H al principi. En un moment determinat, té una probabilitat molt elevada, la qual cosa significa que el model confia que sent el so corresponent a H.

No obstant això, hi ha alguns inconvenients en els models de llenguatge CTC. Sovint falten paraules d’ortografia i lluiten amb la gramàtica. Per tant, si teniu alguna manera d’esbrinar com classificar els diferents camins produïts a partir del model i classificar-los només pel model de llengua, els resultats haurien de ser molt millors.

Google va solucionar aquests problemes integrant un model d’idioma com a part del model CTC durant la formació. Aquest és el tipus de model de producció que s’està implementant actualment D'acord Google .

2 - Seqüència a seqüència

Un enfocament alternatiu al processament de la parla és el model de seqüència a seqüència que fa prediccions del pas següent. Diguem que se us proporcionen algunes dades X i que heu de produir alguns símbols de y1 a y {i}. El model prediu la probabilitat del següent símbol de y {i + 1}. L’objectiu aquí és bàsicament aprendre un molt bon model per a la p.

Amb l'arquitectura del model (esquerra), teniu una xarxa neuronal (que és el descodificador d'un model de seqüència a seqüència) que mira tota l'entrada (que és el codificador). S'alimenta dels símbols de camí que es produeixen com a xarxa neuronal recurrent i, a continuació, es prediu el següent testimoni com a sortida.

instal·leu apache mod_rewrite

Per tant, aquest model fa reconeixement de veu amb el marc de seqüència a seqüència. En traducció, la X seria l'idioma d'origen. En el domini de la parla, la X seria una enorme seqüència d’àudio que ara està codificada amb una xarxa neuronal recurrent.

El que necessita per funcionar és la capacitat de mirar diferents parts de l'espai temporal, perquè l'entrada és realment llarga. Intuïtivament, els resultats de la traducció empitjoren a mesura que la frase font es fa més llarga. Això es deu al fet que és realment difícil que el model es vegi al lloc adequat. Resulta que aquest problema s’agreuja molt més amb els fluxos d’àudio que són molt més llargs. Per tant, haureu d’implementar un mecanisme d’atenció si voleu fer funcionar aquest model.

Vist a l’exemple de l’esquerra, proveu de produir el primer caràcter C. Creeu un vector d’atenció que, essencialment, contempla diferents parts dels passos del temps d’entrada i produeix el següent capítol (que és A) després de canviar l’atenció.

Si continueu fent això al llarg de tota la transmissió d’entrada, aneu avançant en l’atenció que només ha après el model. Vist aquí, produeix la seqüència de sortida cancel, cancel, cancel.

El model Listen, Assistent and Spell [4] és el model canònic de la categoria seq-2-seq. Vegem el diagrama següent extret del document:

  • A l'arquitectura Listener, teniu una estructura de codificador. Per cada pas de temps de l'entrada, produeix una representació vectorial que codifica l'entrada i es representa com a h_t en el pas de temps t.
  • A l'arquitectura Speller, teniu una arquitectura de descodificador. Genereu el següent caràcter c_t a cada pas t.
  • El model LAS utilitza un codificador jeràrquic per substituir la xarxa neuronal recurrent tradicional. En lloc de processar un fotograma per cada pas de temps, redueix els fotogrames veïns a mesura que avanceu a la següent capa. A causa d'això, redueix el nombre de passos de temps per processar, de manera que el processament és més ràpid.

Quines són les limitacions d’aquest model?

  • Una de les grans limitacions que impedeixen el seu ús en un sistema en línia és que la sortida produïda s'està condicionant a tota l'entrada. Això vol dir que si voleu posar el model en un sistema de reconeixement de veu del món real, primer haureu d’esperar a que es rebi tot l’àudio abans de publicar el símbol.
  • Una altra limitació és que el model d’atenció en si és un coll d’ampolla computacional, ja que cada testimoni de sortida presta atenció a cada pas de temps d’entrada. Això fa que el model faci més difícil i lent el seu aprenentatge.
  • A més, a mesura que es rep l'entrada i es fa més llarga, la paraula percentatge d'errors disminueix.

3 - Seqüència a seqüència en línia

Els models de seqüència a seqüència en línia estan dissenyats per superar els límits dels models de seqüència a seqüència; no voleu esperar a que arribi tota la seqüència d’entrada i també eviteu utilitzar el model d’atenció en si mateix seqüència. Essencialment, la intenció és produir les sortides a mesura que arribin les entrades. Ha de resoldre el següent problema: el model està preparat per produir una sortida ara que ha rebut aquesta entrada?

El model en línia seq-2-seq més notable s’anomena a Transductor neuronal [5]. Si preneu l'entrada tal com entra i de tant en tant a intervals regulars, podeu executar un model seq-2-seq sobre el que s'ha rebut a l'últim bloc. Com es veu a l’arquitectura següent, l’atenció del codificador (en lloc de mirar tota l’entrada) se centrarà només en un petit bloc. El transductor produirà els símbols de sortida.

El bo del transductor neuronal és que manté la causalitat. Més concretament, el model conserva l’inconvenient d’un model seq-2-seq. També introdueix un problema d’alineació: en essència, el que voleu saber és que heu de produir alguns símbols com a sortides, però no sabeu a quin tros s’han d’alinear aquests símbols.

En realitat, podeu millorar aquest model incorporant convolucionals xarxes neuronals , que es manlleven de la visió per computador. El document [6] utilitza CNN per fer el costat del codificador en l'arquitectura de veu.

Agafeu el model tradicional de la piràmide tal com es veu a l’esquerra i, en lloc de construir la piràmide simplement apilant 2 coses, podeu posar una arquitectura elegant a la part superior quan feu l’apilament. Més específicament, tal com es veu a continuació, podeu apilar-los com a mapes de funcions i posar una CNN a la part superior. Per al problema del reconeixement de veu, les bandes de freqüència i les marques de temps de les funcions que mireu es correspondran amb una subestructura natural de les dades d'entrada. L’arquitectura convolucional es basa essencialment en aquesta subestructura.

Conclusió

Ara, en general, hauríeu d’estar al corrent dels 3 marcs basats en l’aprenentatge profund més comuns per realitzar reconeixements de veu automàtics en diversos contextos. Els treballs als quals he fet referència a continuació us ajudaran a conèixer els detalls tècnics de com funcionen si esteu inclinat a fer-ho.

# aprenentatge profund # aprenentatge automàtic # ciència de dades

python xml a csv

heartbeat.fritz.ai

Com es realitza el reconeixement de veu amb els 3 marcs d’aprenentatge profund

En aquesta publicació, aprendrem a realitzar el reconeixement de veu amb tres implementacions diferents de marcs populars d’aprenentatge profund.