Att läsa det tryckta ordet öppnar upp en värld av information, fantasi och kreativitet. Skannade böcker och dokument kan dock vara svåra för personer med synnedsättning och inlärningssvårigheter att konsumera. Dessutom föredrar vissa människor att lyssna på textbaserat innehåll framför att läsa det. En dokument-till-tal-lösning utökar räckvidden för digitalt innehåll genom att ge textinnehåll en röst. Det har användningsområden inom olika industrisektorer, såsom:
- Underhållning- Du kan skapa dina egna ljudböcker.
- Utbildning – Studenter kan konvertera sina föreläsningsanteckningar till tal och komma åt dem var som helst.
- Patientvård – Doseringsanvisningar och försiktighetsåtgärder är vanligtvis i små teckensnitt och svåra att läsa. Med den här lösningen kan du ta en bild, konvertera till tal och lyssna på instruktionerna för att undvika potentiell skada.
Dokument-till-tal-lösningen konverterar automatiskt skannade böcker eller dokument tagna på en mobiltelefon eller handhållen enhet till tal. Denna lösning utökar kapaciteten för Amazon Polly. Vi extrahera text från skannade dokument med hjälp av amazontext, och konvertera sedan text till tal använder Amazon Polly. Lösningsfördelarna inkluderar mobilitet och frihet för användaren plus förbättrade inlärningsmöjligheter för tidiga läsare.
Idén kom från Harry Pan, en av bloggförfattarens favoritaktiviteter för föräldrar och barn – att läsa böcker. "Min son tycker om sagoböcker, men är för ung för att läsa på egen hand. Jag älskar att läsa för honom, men ibland behöver jag arbeta eller sköta hushållssysslor. Detta väckte en idé om att bygga en dokument-till-tal-lösning som kunde läsas för honom när jag var upptagen”.
Översikt över lösningen
Lösningen är en händelsedriven serverlös arkitektur som använder Amazon AI-tjänster för att konvertera skannade dokument till tal. Amazon Textract och Amazon Polly tillhör det översta lagret i AWS maskininlärningsstacken (ML). Dessa tjänster tillåter utvecklare att enkelt lägga till intelligens till alla applikationer utan förkunskaper om ML.
Amazon Textract är en ML-tjänst som automatiskt extraherar text, handstil och data från skannade dokument. Det går utöver enkel optisk teckenigenkänning (OCR) för att identifiera, förstå och extrahera data från formulär och tabeller. Amazon Textract använder ML för att läsa och bearbeta alla typer av dokument, extrahera text, handstil, tabeller och annan data korrekt utan någon manuell ansträngning.
Amazon Polly är en text-till-tal-tjänst som förvandlar text till verklighetstroget tal, så att du kan skapa applikationer som pratar och bygga helt nya kategorier av talaktiverade produkter. Amazon Polly använder avancerad djupinlärningsteknik för att syntetisera tal som låter som en mänsklig röst.
Det finns betydande fördelar med att använda Amazon AI-tjänster:
- De tar liten ansträngning; du kan integrera dessa API:er i vilken applikation som helst
- De erbjuder mycket skalbara och kostnadseffektiva lösningar
- Din organisation kan flytta fokus från utveckling av anpassade modeller till affärsresultat
Lösningen använder också Amazon API Gateway för att snabbt stå upp API:er som webbgränssnittet kan anropa för att utföra operationer som att ladda upp dokument och konvertera skannade dokument till tal. API Gateway tillhandahåller ett skalbart sätt att skapa, publicera och underhålla säkra API:er. I den här lösningen använder vi även API Gateway WebSocket-stöd för att upprätta en beständig anslutning mellan webbgränssnittet och backend, så att backend kan fortsätta skicka förloppsuppdateringar till användaren i realtid.
Vi använder AWS Lambda funktioner för att trigga Amazon Textract och Amazon Polly asynkrona jobb. Lambda är en mycket tillgänglig och skalbar datortjänst som låter dig köra kod utan att tillhandahålla resurser.
Vi använder en AWS stegfunktioner tillståndsmaskin för att orkestrera två parallella lambdafunktioner – en för att moderera text och den andra för att lagra text i Amazon enkel lagringstjänst (Amazon S3). Step Functions är en serverlös orkestreringstjänst för att definiera applikationsarbetsflöden som en serie händelsestyrda steg.
Arkitektur och kod
Som beskrivits i föregående avsnitt använder vi två viktiga AI-tjänster, Amazon Textract och Amazon Polly, för att bygga en dokument-till-tal-konverteringslösning. En ytterligare tjänst som vi inte har berört är AWS förstärka. Amplify tillåter frontend-utvecklare att snabbt bygga utbyggbara webb- och mobilappar i full stack. Med Amplify kan du enkelt konfigurera en backend, ansluta en applikation till den inom några minuter och skala utan ansträngning. Vi använder Amplify för att vara värd för ett webbgränssnitt som tillåter användare att ladda upp sina skannade dokument.
Du kan också använda ditt eget användargränssnitt utan Amplify. När vi dyker djupt in i den här lösningen visar vi hur du kan använda vilken klientapplikation som helst för att ansluta till backend för att konvertera dokument till tal – så länge de stöder REST och WebSocket API:er. Webbgränssnittet här är helt enkelt för att demonstrera nyckelfunktionerna i denna lösning. När detta skrivs stöder lösningen JPEG-, PNG- och PDF-inmatningsformat samt engelska.
Följande diagram illustrerar lösningsarkitekturen.
Vi går igenom den här arkitekturen genom att följa sökvägen för en enskild användarförfrågan:
- Användaren besöker webbgränssnittet på Amplify. UI-koden är
index.html
fil iclient
mapp för kodförrådet. - Användaren väljer en JPG-, PDF- eller PNG-fil att ladda upp med hjälp av webbgränssnittet.
- Användaren initierar Konvertera och spela upp ljud process från webbgränssnittet, som laddar upp indatafilen till en S3-bucket, genom ett REST API som finns på API Gateway.
- När uppladdningen är klar startar konverteringen av dokument till tal som en bakgrundsprocess:
- Under konverteringen håller webbklienten en beständig WebSocket-anslutning med API-gatewayen. Detta tillåter backend-processerna (Lambda-funktioner) att kontinuerligt skicka förloppsuppdateringar till webbklienten.
- Begäran går genom API Gateway och utlöser Lambda-funktionen
convert-images-to-text
. Denna funktion anropar Amazon Textract asynkront för att konvertera dokumentet till text. - När bild-till-text-konverteringen är klar skickar Amazon Textract ett meddelande till Amazon enkel meddelandetjänst (Amazon SNS).
- Aviseringen utlöser Lambda-funktionen
on-textract-ready
, som startar en Step Functions-tillståndsmaskin. - Statsmaskinen orkestrerar följande steg:
- Den kör Lambda-funktionen
retrieve-text
för att hämta den konverterade texten från Amazon Textract. - Den kör sedan Lambda-funktioner
moderate-text
ochstore-text
parallellt.moderate-text
stoppar vidare bearbetning när oönskade ord upptäcks, ochstore-text
lagrar en kopia av den konverterade texten i en S3-hink. - Efter att de parallella stegen är klara kör tillståndsmaskinen Lambda-funktionen
convert-text-to-audio
, som anropar Amazon Polly asynkront med den konverterade texten, för talkonvertering. Tillståndsmaskinen avslutas efter detta steg.
- Den kör Lambda-funktionen
- I likhet med Amazon Textract skickar Amazon Polly ett meddelande till Amazon SNS när jobbet är klart. Aviseringen utlöser Lambda-funktionen
on-polly-ready
, som skickar ett sista meddelande till webbgränssnittet tillsammans med Amazon S3-platsen för den konverterade ljudfilen.
- Webbgränssnittet laddar ner den slutgiltiga konverterade ljudfilen från Amazon S3 via ett REST API och spelar sedan upp den för användaren.
- Applikationen använder en Amazon DynamoDB tabell för att spåra jobbinformation som Amazon Textract jobb-ID, Amazon Polly jobb-ID och mer.
Koden finns på GitHub och distribueras med hjälp av AWS Cloud Development Kit (AWS CDK), ett ramverk för mjukvaruutveckling med öppen källkod för att definiera molnapplikationsresurser med hjälp av välbekanta programmeringsspråk. AWS CDK tillhandahåller resurser på ett repeterbart sätt genom AWS molnformation.
Förutsättningar
Den enda förutsättningen för att distribuera den här lösningen är ett AWS-konto.
Distribuera lösningen
Följande steg beskriver hur du distribuerar programmet:
- Logga in på ditt AWS-konto.
- På AWS Cloud9 konsol, öppna en befintlig miljö eller välj Skapa miljö att skapa en ny.
- I din AWS Cloud9 IDE, på Fönster meny, välj Ny terminal för att öppna en terminal.
Alla följande steg görs i samma terminal.
- Klona git-förvaret och ange projektkatalogen:
- Skapa en virtuell Python-miljö:
- När initprocessen är klar och den virtuella miljön har skapats, använd följande steg för att aktivera din virtuella miljö:
- När den virtuella miljön har aktiverats installerar du nödvändiga beroenden:
- Du kan nu syntetisera CloudFormation-mallarna från AWS CDK-koden:
- Distribuera AWS CDK-applikationen och fånga AWS CDK-utgångar som behövs senare:
Du måste bekräfta ändringar som ska distribueras för varje stack. Du kan kontrollera hur stacken skapas på AWS Cloud Formation-konsolen.
- För att besöka webbklienten, kör följande kommando och följ dess utdata för att starta frontend-distributionen och använda webbklienten:
Viktiga saker att notera:
- Smakämnen
extract-cdk-outputs.py
skriptet skriver ut webbadressen till webbgränssnittet. Skriptet skriver också ut strängar av S3-segmentets namn, fil-API-slutpunkt och konverterings-API-slutpunkt, som måste ställas in på webbgränssnittet innan ett dokument laddas upp. - Du kan ställa in listan över oönskade ord i variabeln i
moderate-text
Lambda-funktion.
Använd applikationen
Följande steg visar hur du använder programmet via webbgränssnittet.
- Efter det sista steget i implementeringen fyller du i fälten för S3 skopnamn, Fil slutpunktoch Slutpunkt för konvertering i webbgränssnittet.
- Välja Välj FIL för att ladda upp en indatafil.
- Välja Konvertera och spela upp ljud.
Webbgränssnittet visar förloppet för den pågående konverteringen.
Webbgränssnittet spelar upp ljudet automatiskt när konverteringen är klar.
Städa upp
Kör följande kommando för att radera alla resurser och undvika framtida avgifter:
Slutsats
I det här inlägget visade vi en lösning för att snabbt distribuera en dokument-till-tal-konverteringsapplikation genom att använda två kraftfulla AI-tjänster: Amazon Textract och Amazon Polly. Vi visade hur lösningen fungerar och gav en detaljerad genomgång av koden och implementeringsstegen. Denna lösning är tänkt att vara en referensarkitektur eller snabbstart som du kan förbättra ytterligare. Särskilt kan du lägga till stöd för fler mänskliga språk, lägga till en kö för att buffra inkommande förfrågningar och autentisera användare.
Som diskuterats i det här inlägget ser vi flera användningsfall för denna lösning i olika branschvertikaler. Ge det ett försök och låt oss veta hur detta löste ditt användningsfall genom att lämna feedback i kommentarsektionen. Du kan komma åt resurserna för lösningen i dokument till tal GitHub-förrådet.
Referensprojekt
Mer information finns på följande resurser:
- Amazon Textract utvecklarguide
- Amazon Polly utvecklarguide
- Arbeta med WebSocket API:er
- AWS CDK Construct Library
- AWS Amplify Construct Library
Om författarna
Harry Pan är en ISV Solutions Architect på Amazon Web Services baserad i San Francisco Bay Area, där han hjälper mjukvaruföretag att nå sina affärsmål genom att bygga väldesignade IT-system. Han älskar att spendera sin fritid med sin familj, samt att spela tennis, koda i Haskell och att resa.
Chaitra Mathur är en Principal Solutions Architect på AWS. Hon vägleder partners och kunder i att bygga mycket skalbara, pålitliga, säkra och kostnadseffektiva lösningar på AWS. På fritiden tycker hon om att läsa, yoga och umgås med sina döttrar.
- Myntsmart. Europas bästa bitcoin- och kryptobörs.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. FRI TILLGÅNG.
- CryptoHawk. Altcoin radar. Gratis provperiod.
- Källa: https://aws.amazon.com/blogs/machine-learning/increase-your-content-reach-with-automated-document-to-speech-conversion-using-amazon-ai-services/
- "
- &
- 10
- 100
- 7
- 9
- tillgång
- Konto
- tvärs
- aktiviteter
- Dessutom
- Annat
- avancerat
- fördelar
- AI
- AI-tjänster
- Alla
- tillåta
- amason
- Amazon Web Services
- var som helst
- api
- API: er
- Ansökan
- tillämpningar
- appar
- arkitektur
- OMRÅDE
- audio
- Automatiserad
- tillgänglig
- AWS
- bakgrund
- bukt
- Fördelarna
- Bortom
- Blogg
- Böcker
- gränsen
- SLUTRESULTAT
- Byggnad
- företag
- kapacitet
- fånga
- fall
- CD
- avgifter
- Välja
- cloud
- koda
- Kodning
- kommentarer
- Företag
- Compute
- Kontakta
- anslutning
- Konsol
- konsumera
- innehåll
- Konvertering
- kostnadseffektiv
- kunde
- skapa
- skapas
- skapande
- beställnings
- Kunder
- datum
- demonstrera
- demonstreras
- distribuera
- utplacerade
- utplacering
- beskriven
- förstöra
- detalj
- detaljerad
- detekterad
- Utvecklare
- utvecklare
- Utveckling
- anordning
- olika
- svårt
- digital
- dokument
- Nedladdningar
- Tidig
- lätt
- ansträngning
- Slutpunkt
- Engelska
- ange
- Miljö
- etablera
- befintliga
- extrakt
- familj
- Funktioner
- återkoppling
- Fält
- Fokus
- följer
- efter
- former
- Ramverk
- Francisco
- Frihet
- full
- fungera
- ytterligare
- framtida
- gå
- GitHub
- Ge
- Mål
- Guider
- hjälper
- här.
- höggradigt
- värd
- hushållet
- Hur ser din drömresa ut
- How To
- HTTPS
- humant
- Tanken
- identifiera
- fantasi
- innefattar
- Öka
- industrin
- informationen
- ingång
- installera
- integrera
- Intelligens
- IT
- Jobb
- Lediga jobb
- Nyckel
- kunskap
- språk
- Språk
- inlärning
- Lista
- liten
- läge
- Lång
- älskar
- Maskinen
- maskininlärning
- bibehålla
- sätt
- manuell
- ML
- Mobil
- mobiltelefon
- mobilitet
- modeller
- mer
- multipel
- normala
- Anmärkningar
- anmälan
- erbjudanden
- pågående
- öppet
- öppnas
- Verksamhet
- orkestrering
- beställa
- organisation
- Övriga
- egen
- partner
- Personer
- Bild
- Spela
- i
- potentiell
- den mäktigaste
- föregående
- Principal
- process
- processer
- bearbetning
- Produkter
- Programmering
- programmeringsspråk
- projektet
- ger
- publicera
- Snabbt
- snabbt
- nå
- läsare
- Läsning
- Repository
- begära
- förfrågningar
- Obligatorisk
- Krav
- Resurser
- REST
- Körning
- San
- San Francisco
- skalbar
- Skala
- Sektorer
- säkra
- Serier
- Server
- service
- Tjänster
- in
- skifta
- signifikant
- Enkelt
- Small
- So
- Mjukvara
- mjukvaruutveckling
- fast
- lösning
- Lösningar
- några
- dess
- Spendera
- stapel
- starta
- startar
- Ange
- förvaring
- lagra
- lagrar
- stödja
- Stöder
- System
- Diskussion
- Tekniken
- mallar
- terminal
- Genom
- tid
- översta
- spår
- Traveling
- typiskt
- ui
- förstå
- Uppdateringar
- us
- användning
- användare
- Kontra
- Virtuell
- syn
- Röst
- webb
- webbservice
- inom
- utan
- ord
- Arbete
- fungerar
- världen
- skrivning