Gör det möjligt för synskadade att höra dokument med Amazon Textract och Amazon Polly PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Gör det möjligt för synskadade att höra dokument med Amazon Textract och Amazon Polly

På 2021 års AWS re:Invent-konferens i Las Vegas demonstrerade vi Läs för mig på AWS Builders Fair – en webbplats som hjälper synskadade att höra dokument.

För bättre kvalitet, se videon här..

Adaptiv teknik och tillgänglighetsfunktioner är ofta dyra, om de är tillgängliga alls. Ljudböcker hjälper synskadade att läsa. Ljudbeskrivning gör filmer tillgängliga. Men vad gör man när innehållet inte redan är digitaliserat?

Det här inlägget fokuserar på AWS AI-tjänster amazontext och Amazon Polly, som ger dem med nedsatt syn. Read For Me utvecklades tillsammans av Jack Marchetti, som är synskadad.

Lösningsöversikt

Genom en händelsedriven, serverlös arkitektur och en kombination av flera AI-tjänster kan vi skapa naturligt klingande ljudfiler på flera språk från en bild av ett dokument, eller vilken bild som helst med text. Till exempel, ett brev från IRS, ett semesterkort från familjen eller till och med öppningstitlarna till en film.

Följande Referensarkitektur, publicerad i AWS Architecture Center visar arbetsflödet för en användare som tar en bild med sin telefon och spelar upp en MP3 av innehållet som finns i det dokumentet.

Gör det möjligt för synskadade att höra dokument med Amazon Textract och Amazon Polly PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Arbetsflödet innehåller följande steg:

  1. Statiskt innehåll (HTML, CSS, JavaScript) finns på AWS förstärka.
  2. Tillfällig åtkomst ges för anonyma användare till backend-tjänster via en Amazon Cognito identitetspool.
  3. Bildfilerna lagras i Amazon enkel lagringstjänst (Amazon S3).
  4. En användare gör en POST-begäran genom Amazon API Gateway till ljudtjänsten, som fullmakter till en express AWS stegfunktioner arbetsflöde.
  5. Arbetsflödet Step Functions inkluderar följande steg:
    1. amazontext extraherar text från bilden.
    2. Amazon Comprehend känner av textens språk.
    3. Om målspråket skiljer sig från det detekterade språket, Amazon Translate översätter till målspråket.
    4. Amazon Polly skapar en ljudfil som utdata med hjälp av texten.
  6. AWS Step Functions-arbetsflödet skapar en ljudfil som utdata och lagrar den i Amazon S3 i MP3-format.
  7. En försignerad URL med platsen för ljudfilen lagrad i Amazon S3 skickas tillbaka till användarens webbläsare via API Gateway. Användarens mobila enhet spelar upp ljudfilen med den försignerade URL:en.

I de följande avsnitten diskuterar vi skälen till varför vi valde de specifika tjänsterna, arkitekturmönstret och tjänstefunktionerna för denna lösning.

AWS AI-tjänster

Flera AI-tjänster är sammankopplade för att driva Read For Me:

  • Amazon Textract identifierar texten i den uppladdade bilden.
  • Amazon Comprehend bestämmer språket.
  • Om användaren väljer ett annat talat språk än språket på bilden översätter vi det med Amazon Translate.
  • Amazon Polly skapar MP3-filen. Vi drar fördel av Amazon Polly neurala motor, som skapar en mer naturlig, verklighetstrogen ljudinspelning.

En av de främsta fördelarna med att använda dessa AI-tjänster är att det är lätt att använda med lite eller ingen grundläggande erfarenhet av maskininlärning. Tjänsterna exponerar API:er som klienter kan anropa med hjälp av SDK:er som är tillgängliga på flera programmeringsspråk, som Python och Java.

Med Read For Me skrev vi det underliggande AWS Lambda fungerar i Python.

AWS SDK för Python (Boto3)

Smakämnen AWS SDK för Python (Boto3) gör det enkelt att interagera med AWS-tjänster. Till exempel returnerar följande rader med Python-kod texten som finns i bilden eller dokumentet du tillhandahåller:

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

All Python-kod körs inom individuella Lambda-funktioner. Det finns inga servrar att tillhandahålla och ingen infrastruktur att underhålla.

Arkitektur mönster

I det här avsnittet diskuterar vi de olika arkitekturmönster som används i lösningen.

Server

Vi implementerade en serverlös arkitektur av två huvudskäl: hastighet att bygga och kostnad. Utan underliggande hårdvara att underhålla eller infrastruktur att distribuera fokuserade vi helt på affärslogikkoden och inget annat. Detta gjorde att vi kunde få igång en fungerande prototyp på några dagar. Om användare inte aktivt laddar upp bilder och lyssnar på inspelningar är ingenting igång och därför kostar ingenting utanför lagringsutrymmet. En S3-livscykelhanteringsregel raderar uppladdade bilder och MP3-filer efter 1 dag, så lagringskostnaderna är låga.

Synkront arbetsflöde

När du bygger serverlösa arbetsflöden är det viktigt att förstå när ett synkront samtal är mer meningsfullt utifrån arkitekturen och användarupplevelsen än en asynkron process. Med Read For Me gick vi först den asynkrona vägen och planerade att använda WebSockets för att dubbelriktat kommunicera med frontend. Vårt arbetsflöde skulle inkludera ett steg för att hitta anslutnings-ID:t som är kopplat till arbetsflödet för stegfunktioner och varna gränssnittet när det är klart. För mer information om denna process, se Från omröstning till push: Transformera API:er med Amazon API Gateway REST API:er och WebSockets.

Vi valde slutligen att inte göra detta och använde expressstegfunktioner som är synkrona. Användare förstår att bearbetning av en bild inte kommer att ske direkt, men vet också att det inte tar 30 sekunder eller en minut. Vi var i ett utrymme där några sekunder var tillfredsställande för slutanvändaren och inte behövde fördelen med WebSockets. Detta förenklade arbetsflödet totalt sett.

Express Step Functions arbetsflöde

Möjligheten att dela upp din kod i mindre, isolerade funktioner möjliggör finkornig kontroll, enklare underhåll och möjligheten att skala mer exakt. Om vi ​​till exempel fastställde att Lambda-funktionen som fick Amazon Polly att skapa ljudfilen körde långsammare än funktionen som bestämde språket, kunde vi skala den funktionen vertikalt och lägga till mer minne utan att behöva göra det för de andra. På samma sätt begränsar du sprängradien för vad din Lambda-funktion kan göra eller komma åt när du begränsar dess omfattning och räckvidd.

En av fördelarna med att orkestrera ditt arbetsflöde med Step Functions är möjligheten att introducera beslutsflödeslogik utan att behöva skriva någon kod.

Vårt arbetsflöde för Step Functions är inte komplicerat. Det är linjärt fram till översättningssteget. Om vi ​​inte behöver anropa en översättnings Lambda-funktion är det mindre kostnad för oss och en snabbare upplevelse för användaren. Vi kan använda den visuella designern på Step Functions-konsolen för att hitta den specifika nyckeln i indatanyttolasten och, om den finns, anropa en funktion framför den andra med JSONPath. Till exempel inkluderar vår nyttolast en nyckel som heter translate:

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

Inom den visuella designern Step Functions hittar vi översättningsnyckeln och ställer in regler som matchar.

Gör det möjligt för synskadade att höra dokument med Amazon Textract och Amazon Polly PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Huvudlös arkitektur

Amplify är värd för front-end-koden. Frontend skrivs i React och källkoden checkas in AWS CodeCommit. Amplify löser några problem för användare som försöker distribuera och hantera statiska webbplatser. Om du gjorde detta manuellt (med en S3-hink som är inställd för statisk webbhotell och frontar det med Amazon CloudFront), måste du själv upphöra med cachen varje gång du utförde implementeringar. Du måste också skriva upp din egen CI/CD-pipeline. Amplify hanterar detta åt dig.

Detta möjliggör en huvudlös arkitektur, där front-end-kod är frikopplad från backend och varje lager kan hanteras och skalas oberoende av det andra.

Analysera ID

I det föregående avsnittet diskuterade vi arkitekturmönstren för att bearbeta den uppladdade bilden och skapa en MP3-fil från den. Att få ett dokument uppläst för dig är ett bra första steg, men tänk om du bara vill veta något specifikt utan att det hela ska läsas tillbaka för dig? Du måste till exempel fylla i ett formulär online och ange ditt statliga ID eller passnummer, eller kanske dess utgångsdatum. Du måste sedan ta en bild av ditt ID och, medan du får det uppläst för dig, vänta på den specifika delen. Alternativt kan du använda Analys-ID.

Analysera ID är en funktion i Amazon Textract som gör att du kan söka efter dokument. Read For Me innehåller en rullgardinsmeny där du specifikt kan fråga efter utgångsdatum, utfärdandedatum eller dokumentnummer. Du kan använda samma arbetsflöde för att skapa en MP3-fil som ger svar på din specifika fråga.

Du kan demonstrera funktionen Analysera ID på readforme.io/analyze.

Ytterligare Polly-funktioner

  • Read For Me erbjuder flera neurala röster som använder olika språk och dialekter. Observera att det finns flera andra röster du kan välja mellan, vilket vi inte implementerade. När en ny röst är tillgänglig är en uppdatering av front-end-koden och en lambdafunktion allt som krävs för att dra nytta av det.
  • Polly-tjänsten erbjuder också andra alternativ som vi ännu inte har inkluderat i Read For Me. Dessa inkluderar justering av rösternas hastighet och talmärken.

Slutsats

I det här inlägget diskuterade vi hur man använder många AWS-tjänster, inklusive AI och serverlösa, för att hjälpa synskadade. Du kan lära dig mer om Read For Me-projektet och använda det genom att besöka readforme.io. Du kan också hitta Amazon Textract-exempel på GitHub repo. För att lära dig mer om Analysera ID, kolla in Tillkännager stöd för att extrahera data från identitetshandlingar med Amazon Textract.

Källkoden för detta projekt kommer att vara öppen källkod och läggas till i AWS offentliga GitHub snart.


Om författarna

Gör det möjligt för synskadade att höra dokument med Amazon Textract och Amazon Polly PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Jack Marchetti är senior lösningsarkitekt på AWS. Med en bakgrund inom mjukvaruteknik är Jack främst inriktad på att hjälpa kunder att implementera serverlösa, händelsedrivna arkitekturer. Han byggde sin första distribuerade, molnbaserade applikation 2013 efter att ha deltagit i den andra AWS re:Invent-konferensen och har varit fast sedan dess. Innan han började på AWS tillbringade Jack större delen av sin karriär inom reklambyrån med att bygga upplevelser för några av de största varumärkena i världen. Jack är juridiskt blind och bor i Chicago med sin fru Erin och katten Minou. Han är också manusförfattare och regissör med ett primärt fokus på julfilmer och skräck. Se Jacks filmografi på hans IMDb sida.

Gör det möjligt för synskadade att höra dokument med Amazon Textract och Amazon Polly PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Alak Eswaradass är en lösningsarkitekt på AWS baserad i Chicago, Illinois. Hon brinner för att hjälpa kunder att designa molnarkitekturer med hjälp av AWS-tjänster för att lösa affärsutmaningar. Hon har en magisterexamen i datateknik. Innan hon började på AWS arbetade hon för olika vårdorganisationer och hon har djup erfarenhet av att bygga komplexa system, teknisk innovation och forskning. Hon umgås med sina döttrar och utforskar naturen på fritiden.

Gör det möjligt för synskadade att höra dokument med Amazon Textract och Amazon Polly PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Swagat Kulkarni är Senior Solutions Architect på AWS och en AI/ML-entusiast. Han brinner för att lösa verkliga problem för kunder med molnbaserade tjänster och maskininlärning. Utanför jobbet tycker Swagat om att resa, läsa och meditera.

Tidsstämpel:

Mer från AWS maskininlärning