Permite persoanelor cu deficiențe de vedere să audă documente folosind Amazon Texttract și Amazon Polly PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Permiteți persoanelor cu deficiențe de vedere să audă documente folosind Amazon Texttract și Amazon Polly

La conferința AWS re:Invent din 2021 din Las Vegas, am făcut demonstrații Citește pentru mine la AWS Builders Fair — un site web care ajută persoanele cu deficiențe de vedere să audă documente.

Pentru o calitate mai bună, vizionați videoclipul aici.

Tehnologia adaptivă și funcțiile de accesibilitate sunt adesea costisitoare, dacă sunt disponibile deloc. Cărțile audio ajută persoanele cu deficiențe de vedere să citească. Descrierea audio face filmele accesibile. Dar ce faci când conținutul nu este deja digitizat?

Această postare se concentrează pe serviciile AWS AI Text Amazon și Amazon Polly, care îi împuternicesc pe cei cu vedere afectată. Read For Me a fost co-dezvoltat de Jack Marchetti, care are deficiențe de vedere.

Prezentare generală a soluțiilor

Printr-o arhitectură bazată pe evenimente, fără server și o combinație de mai multe servicii AI, putem crea fișiere audio cu sunet natural în mai multe limbi dintr-o imagine a unui document sau orice imagine cu text. De exemplu, o scrisoare de la IRS, o carte de vacanță de la familie sau chiar titlurile de deschidere ale unui film.

Următoarele Arhitectură de referință, publicat în Centrul de arhitectură AWS arată fluxul de lucru al unui utilizator care face o fotografie cu telefonul și redă un MP3 cu conținutul găsit în acel document.

Permite persoanelor cu deficiențe de vedere să audă documente folosind Amazon Texttract și Amazon Polly PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Fluxul de lucru include următorii pași:

  1. Conținutul static (HTML, CSS, JavaScript) este găzduit Amplificare AWS.
  2. Accesul temporar este acordat utilizatorilor anonimi la serviciile de backend prin intermediul unui Amazon Cognito pool de identitate.
  3. Fișierele imagine sunt stocate în Serviciul Amazon de stocare simplă (Amazon S3).
  4. Un utilizator face o solicitare POST prin Gateway API Amazon la serviciul audio, care trimite proxy către un expres Funcții pas AWS flux de lucru.
  5. Fluxul de lucru Step Functions include următorii pași:
    1. Text Amazon extrage text din imagine.
    2. Amazon Comprehend detectează limba textului.
    3. Dacă limba țintă diferă de limba detectată, Traducerea Amazon se traduce în limba țintă.
    4. Amazon Polly creează un fișier audio ca ieșire folosind textul.
  6. Fluxul de lucru AWS Step Functions creează un fișier audio ca ieșire și îl stochează în Amazon S3 în format MP3.
  7. O adresă URL presemnată cu locația fișierului audio stocat în Amazon S3 este trimisă înapoi la browserul utilizatorului prin API Gateway. Dispozitivul mobil al utilizatorului redă fișierul audio folosind adresa URL presemnată.

În secțiunile următoare, discutăm motivele pentru care am ales serviciile specifice, modelul de arhitectură și caracteristicile de serviciu pentru această soluție.

Servicii AWS AI

Mai multe servicii AI sunt conectate împreună pentru a alimenta Read For Me:

  • Amazon Texttract identifică textul din imaginea încărcată.
  • Amazon Comprehend determină limba.
  • Dacă utilizatorul alege o altă limbă vorbită decât limba din imagine, o traducem folosind Amazon Translate.
  • Amazon Polly creează fișierul MP3. Profităm de motorul neural Amazon Polly, care creează o înregistrare audio mai naturală și mai realistă.

Unul dintre principalele beneficii ale utilizării acestor servicii de inteligență artificială este ușurința de adoptare, cu puțină sau deloc necesară experiența de bază a învățării automate. Serviciile expun API-uri pe care clienții le pot invoca folosind SDK-uri puse la dispoziție în mai multe limbaje de programare, cum ar fi Python și Java.

Cu Citiți pentru mine, am scris elementele de bază AWS Lambdas funcții în Python.

SDK AWS pentru Python (Boto3)

SDK AWS pentru Python (Boto3) simplifică interacțiunea cu serviciile AWS. De exemplu, următoarele rânduri de cod Python returnează textul găsit în imaginea sau documentul pe care îl furnizați:

import boto3
client = boto3.client('textract')
response = client.detect_document_text(
Document={ 'S3Object': { 'Bucket': 'bucket-name', 'Name': 's3-key'
}
})
#do something with the response

Tot codul Python este rulat în cadrul funcțiilor individuale Lambda. Nu există servere de furnizat și nicio infrastructură de întreținut.

Modele de arhitectură

În această secțiune, discutăm despre diferitele modele de arhitectură utilizate în soluție.

serverless

Am implementat o arhitectură fără server din două motive principale: viteza de construire și cost. Fără hardware subiacent de întreținut sau infrastructură de implementat, ne-am concentrat în întregime pe codul logicii de afaceri și nimic altceva. Acest lucru ne-a permis să punem în funcțiune un prototip funcțional în câteva zile. Dacă utilizatorii nu încarcă în mod activ imagini și nu ascultă înregistrări, nimic nu rulează și, prin urmare, nimic nu implică costuri în afara stocării. O regulă de gestionare a ciclului de viață S3 șterge imaginile încărcate și fișierele MP3 după 1 zi, astfel încât costurile de stocare sunt scăzute.

Flux de lucru sincron

Când construiți fluxuri de lucru fără server, este important să înțelegeți când un apel sincron are mai mult sens din arhitectură și experiența utilizatorului decât un proces asincron. Cu Read For Me, am mers inițial pe calea asincronă și am planificat să folosim WebSockets pentru a comunica bidirecțional cu front-end-ul. Fluxul nostru de lucru ar include un pas pentru a găsi ID-ul conexiunii asociat fluxului de lucru Step Functions și, la finalizare, avertizați front-end-ul. Pentru mai multe informații despre acest proces, consultați De la sondaj la push: transformați API-urile utilizând Amazon API Gateway REST API și WebSockets.

În cele din urmă, am ales să nu facem acest lucru și am folosit funcții de pas expres care sunt sincrone. Utilizatorii înțeleg că procesarea unei imagini nu va fi instantanee, dar știu și că nu va dura 30 de secunde sau un minut. Ne aflam într-un spațiu în care câteva secunde erau satisfăcătoare pentru utilizatorul final și nu aveau nevoie de beneficiul WebSockets. Acest lucru a simplificat fluxul de lucru în general.

Flux de lucru Express Step Functions

Capacitatea de a vă împărți codul în funcții mai mici și izolate permite un control fin, o întreținere mai ușoară și capacitatea de a scala mai precis. De exemplu, dacă am stabilit că funcția Lambda care a declanșat Amazon Polly să creeze fișierul audio rula mai lent decât funcția care a determinat limbajul, am putea scala acea funcție pe verticală, adăugând mai multă memorie, fără a fi nevoie să facem acest lucru pentru celelalte. În mod similar, limitați raza de explozie a ceea ce poate face sau accesa funcția dvs. Lambda atunci când îi limitați domeniul și acoperirea.

Unul dintre beneficiile orchestrării fluxului de lucru cu Step Functions este capacitatea de a introduce logica fluxului de decizie fără a fi nevoie să scrieți niciun cod.

Fluxul nostru de lucru Step Functions nu este complex. Este liniar până la pasul de translație. Dacă nu trebuie să apelăm la o funcție Lambda de traducere, aceasta este un cost mai mic pentru noi și o experiență mai rapidă pentru utilizator. Putem folosi designerul vizual de pe consola Step Functions pentru a găsi cheia specifică în sarcina utilă de intrare și, dacă este prezentă, apelăm o funcție peste cealaltă folosind JSONPath. De exemplu, sarcina noastră utilă include o cheie numită translate:

{ 
extracted_text: "hello world",
target_language: "es",
source_language: "en",
translate: true
}

În designerul vizual Step Functions, găsim cheia de traducere și setăm reguli care să se potrivească.

Permite persoanelor cu deficiențe de vedere să audă documente folosind Amazon Texttract și Amazon Polly PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Arhitectură fără cap

Amplify găzduiește codul front-end. Front end-ul este scris în React și codul sursă este verificat AWS CodeCommit. Amplify rezolvă câteva probleme pentru utilizatorii care încearcă să implementeze și să gestioneze site-uri web statice. Dacă ați făcut acest lucru manual (folosind o găleată S3 configurată pentru găzduirea statică a site-urilor web și arătând-o cu Amazon CloudFront), ar trebui să expirați singur memoria cache de fiecare dată când ați făcut implementări. De asemenea, ar trebui să vă scrieți propria conductă CI/CD. Amplify se ocupă de asta pentru tine.

Acest lucru permite o arhitectură fără cap, în care codul front-end este decuplat de backend și fiecare strat poate fi gestionat și scalat independent de celălalt.

Analizați ID-ul

În secțiunea precedentă, am discutat despre modelele de arhitectură pentru procesarea imaginii încărcate și crearea unui fișier MP3 din aceasta. Să vi se citească un document este un prim pas grozav, dar ce se întâmplă dacă vrei să știi doar ceva anume fără a ți se citi totul? De exemplu, trebuie să completați un formular online și să furnizați ID-ul de stat sau numărul pașaportului sau poate data expirării acestuia. Apoi trebuie să faceți o poză a actului dvs. de identitate și, în timp ce vi-l citiți înapoi, așteptați acea parte specifică. Alternativ, puteți utiliza Analyze ID.

Analizați ID-ul este o caracteristică a Amazon Texttract care vă permite să interogați documente. Citiți pentru mine conține un meniu derulant în care puteți solicita în mod specific data de expirare, data emiterii sau numărul documentului. Puteți utiliza același flux de lucru pentru a crea un fișier MP3 care oferă un răspuns la întrebarea dvs. specifică.

Puteți demonstra funcția Analizați ID la readforme.io/analyze.

Caracteristici suplimentare Polly

  • Read For Me oferă mai multe voci neuronale care utilizează diferite limbi și dialecte. Rețineți că există câteva altele voci puteți alege dintre, pe care noi nu le-am implementat. Când este disponibilă o nouă voce, este nevoie de o actualizare a codului front-end și de o funcție lambda pentru a profita de ea.
  • Serviciul Polly oferă și alte opțiuni pe care încă nu le includem în Read For Me. Acestea includ ajustarea viteza vocilor și mărci de vorbire.

Concluzie

În această postare, am discutat despre cum să folosim numeroase servicii AWS, inclusiv AI și serverless, pentru a ajuta persoanele cu deficiențe de vedere. Puteți afla mai multe despre proiectul Read For Me și îl puteți folosi vizitând readforme.io. Puteți găsi, de asemenea, exemple de Amazon Text pe site-ul GitHub repo. Pentru a afla mai multe despre Analyze ID, consultați Anunțarea suportului pentru extragerea datelor din documentele de identitate folosind Amazon Texttract.

Codul sursă pentru acest proiect va fi deschis și adăugat în GitHub public AWS în curând.


Despre Autori

Permite persoanelor cu deficiențe de vedere să audă documente folosind Amazon Texttract și Amazon Polly PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Jack Marchetti este arhitect senior de soluții la AWS. Cu experiență în inginerie software, Jack se concentrează în primul rând pe a ajuta clienții să implementeze arhitecturi fără server, bazate pe evenimente. El a construit prima sa aplicație distribuită, bazată pe cloud, în 2013, după ce a participat la cea de-a doua conferință AWS re:Invent și de atunci a fost captivat. Înainte de AWS, Jack și-a petrecut cea mai mare parte a carierei în experiențe de construire a spațiului pentru agenții de publicitate pentru unele dintre cele mai mari mărci din lume. Jack este orb din punct de vedere legal și locuiește în Chicago cu soția sa Erin și pisica Minou. De asemenea, este scenarist și regizor, cu un accent principal pe filmele de Crăciun și horror. Vezi filmografia lui Jack la a lui IMDb .

Permite persoanelor cu deficiențe de vedere să audă documente folosind Amazon Texttract și Amazon Polly PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Alak Eswaradass este arhitect de soluții la AWS cu sediul în Chicago, Illinois. Este pasionată de a ajuta clienții să proiecteze arhitecturi cloud utilizând serviciile AWS pentru a rezolva provocările de afaceri. Are o diplomă de master în inginerie informatică. Înainte de a se alătura AWS, ea a lucrat pentru diferite organizații de asistență medicală și are o experiență aprofundată în arhitectura de sisteme complexe, inovație tehnologică și cercetare. Ea se petrece cu fiicele ei și explorează în aer liber în timpul ei liber.

Permite persoanelor cu deficiențe de vedere să audă documente folosind Amazon Texttract și Amazon Polly PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Swagat Kulkarni este arhitect senior de soluții la AWS și un pasionat de AI/ML. Este pasionat de rezolvarea problemelor din lumea reală pentru clienții cu servicii native cloud și învățare automată. În afara serviciului, lui Swagat îi place să călătorească, să citească și să mediteze.

Timestamp-ul:

Mai mult de la Învățare automată AWS