Amazon Polly er en tjeneste, der gør tekst til virkelighedstro tale. Det muliggør udviklingen af en hel klasse af applikationer, der kan konvertere tekst til tale på flere sprog.
Denne tjeneste kan bruges af chatbots, lydbøger og andre tekst-til-tale-applikationer sammen med andre AWS AI- eller maskinlæringstjenester (ML). For eksempel, Amazon Lex og Amazon Polly kan kombineres for at skabe en chatbot, der engagerer sig i en tovejssamtale med en bruger og udfører bestemte opgaver baseret på brugerens kommandoer. Amazon Transcrib, Amazon Oversæt, og Amazon Polly kan kombineres til at transskribere tale til tekst på kildesproget, oversætte det til et andet sprog og tale det.
I dette indlæg præsenterer vi en interessant tilgang til at fremhæve tekst, mens den bliver talt ved hjælp af Amazon Polly. Denne løsning kan bruges i mange tekst-til-tale-applikationer til at gøre følgende:
- Tilføj visuelle muligheder til lyd i bøger, websteder og blogs
- Øg forståelsen, når kunder forsøger at forstå teksten hurtigt, mens den bliver talt
Vores løsning giver klienten (browseren i dette eksempel) mulighed for at vide, hvilken tekst (ord eller sætning), der bliver talt af Amazon Polly på ethvert øjeblik. Dette sætter klienten i stand til dynamisk at fremhæve teksten, mens den bliver læst op. En sådan kapacitet er nyttig til at give visuel støtte til tale til de tidligere nævnte anvendelsestilfælde.
Vores løsning kan udvides til at udføre yderligere opgaver udover at fremhæve tekst. For eksempel kan browseren vise billeder, afspille musik eller udføre andre animationer på frontend, mens teksten bliver læst op. Denne funktion er nyttig til at skabe dynamiske lydbøger, undervisningsindhold og rigere tekst-til-tale-applikationer.
Løsningsoversigt
I sin kerne bruger løsningen Amazon Polly til at konvertere en tekststreng til tale. Teksten kan indtastes fra browseren eller via et API-kald til det slutpunkt, som vores løsning viser. Talen genereret af Amazon Polly gemmes som en lydfil (MP3-format) i en Amazon Simple Storage Service (Amazon S3) spand.
Men ved at bruge lydfilen alene kan browseren ikke finde, hvilke dele af teksten der bliver talt op på noget tidspunkt, fordi vi ikke har detaljerede oplysninger om, hvornår hvert ord bliver talt.
Amazon Polly tilbyder en måde at opnå dette ved at bruge talemærker. Talemærker gemmes i en tekstfil, der viser tidspunktet (målt i millisekunder fra starten af lyden), når hvert ord eller sætning er talt.
Amazon Polly returnerer talemærkeobjekter i en linjeafgrænset JSON-stream. Et talemærkeobjekt indeholder følgende felter:
- Tid – Tidsstemplet i millisekunder fra begyndelsen af den tilsvarende lydstrøm
- Type – Typen af talemærke (sætning, ord, viseme eller SSML)
- Starten – Forskydningen i bytes (ikke tegn) for objektets start i inputteksten (ikke inklusive visemærker)
- Ende – Forskydningen i bytes (ikke tegn) af objektets ende i inputteksten (ikke inklusive visemærker)
- Værdi – Dette varierer afhængigt af typen af talemærke:
- SSML – SSML tag
- Viseme – Visenavnet
- Word eller dømme – En understreng af inputteksten som afgrænset af start- og slutfelterne
For eksempel kan sætningen "Mary havde et lille lam" give dig følgende talemærkefil, hvis du bruger SpeechMarkTypes
= ["ord", "sætning"] i API-kaldet for at få talemærkerne:
Ordet "havde" (i slutningen af linje 3) begynder 373 millisekunder efter lydstrømmen begynder, starter ved byte 5 og slutter ved byte 8 af inputteksten.
Arkitektur oversigt
Arkitekturen af vores løsning er præsenteret i følgende diagram.
Vores hjemmeside for løsningen er gemt på Amazon S3 som statiske filer (JavaScript, HTML), som er hostet i Amazon CloudFront (1) og serveret til slutbrugerens browser (2).
Når brugeren indtaster tekst i browseren gennem en simpel HTML-formular, behandles den af JavaScript i browseren. Dette kalder en API (3) igennem Amazon API Gateway, at påberåbe sig en AWS Lambda funktion (4). Lambda-funktionen kalder Amazon Polly (5) for at generere tale- (lyd) og talemærkefiler (JSON). Der foretages to opkald til Amazon Polly for at hente lyd- og talemærkefilerne. Opkaldene foretages ved hjælp af JavaScript async-funktioner. Outputtet af disse opkald er lyd- og talemærkefilerne, som er gemt i Amazon S3 (6a). For at undgå at flere brugere overskriver hinandens filer i S3-bøtten, gemmes filerne i en mappe med et tidsstempel. Dette minimerer chancerne for, at to brugere overskriver hinandens filer i Amazon S3. Til en produktionsudgivelse kan vi anvende mere robuste tilgange til at adskille brugernes filer baseret på bruger-id eller tidsstempel og andre unikke egenskaber.
Lambda-funktionen opretter forudsignerede URL'er til tale- og talemærkefilerne og returnerer dem til browseren i form af et array (7, 8, 9).
Når browseren sender tekstfilen til API-slutpunktet (3), får den to præsignerede URL'er til lydfilen og talemærkefilen tilbage i én synkron invokation (9). Dette er angivet med nøglesymbolet ved siden af pilen.
En JavaScript-funktion i browseren henter talemærkefilen og lyden fra deres URL-håndtag (10). Den sætter lydafspilleren op til at afspille lyden. (HTML-lydtagget bruges til dette formål).
Når brugeren klikker på afspilningsknappen, analyserer den talemærkerne, der er hentet i det tidligere trin, for at oprette en række tidsindstillede hændelser ved hjælp af timeouts. Hændelserne påkalder en tilbagekaldsfunktion, som er en anden JavaScript-funktion, der bruges til at fremhæve den talte tekst i browseren. Samtidig streamer JavaScript-funktionen lydfilen fra dens URL-håndtag.
Resultatet er, at begivenhederne køres på de passende tidspunkter for at fremhæve teksten, mens den bliver talt, mens lyden afspilles. Brugen af JavaScript timeouts giver os synkronisering af lyden med den fremhævede tekst.
Forudsætninger
For at køre denne løsning skal du bruge en AWS-konto med en AWS identitets- og adgangsstyring (IAM) bruger, der har tilladelse til at bruge Amazon CloudFront, Amazon API Gateway, Amazon Polly, Amazon S3, AWS Lambda og AWS Step Functions.
Brug Lambda til at generere tale- og talemærker
Følgende kode påberåber sig Amazon Polly synthesize_speech
funktion to gange for at hente lyd- og talemærkefilen. De køres som asynkrone funktioner og koordineres til at returnere resultatet på samme tid ved hjælp af løfter.
På JavaScript-siden udføres tekstfremhævningen af fremhævning (start, slut, ord), og de tidsindstillede begivenheder indstilles af setTimers()
:
Alternative tilgange
I stedet for den tidligere tilgang kan du overveje et par alternativer:
- Opret både talemærker og lydfiler inde i en Step Functions-tilstandsmaskine. Tilstandsmaskinen kan påkalde den parallelle grentilstand for at påkalde to forskellige Lambda-funktioner: en til at generere tale og en anden til at generere talemærker. Koden til dette kan findes i ved hjælp af trin-funktioner undermappe i Github-repoen.
- Kald Amazon Polly asynkront for at generere lyd- og talemærkerne. Denne tilgang kan bruges, hvis tekstindholdet er stort, eller brugeren ikke har brug for et realtidssvar. For flere detaljer om oprettelse af lange lydfiler, se Oprettelse af lange lydfiler.
- Få Amazon Polly til at oprette den forudindstillede URL direkte ved hjælp af
generate_presigned_url
ring til Amazon Polly-klienten i Boto3. Hvis du går med denne tilgang, genererer Amazon Polly lyd- og talemærkerne nyt hver gang. I vores nuværende tilgang gemmer vi disse filer i Amazon S3. Selvom disse lagrede filer ikke er tilgængelige fra browseren i vores version af koden, kan du ændre koden til at afspille tidligere genererede lydfiler ved at hente dem fra Amazon S3 (i stedet for at regenerere lyden til teksten igen ved hjælp af Amazon Polly). Vi har flere kodeeksempler for at få adgang til Amazon Polly med Python i AWS Code Library.
Skab løsningen
Hele løsningen fås hos vores Github repos. For at oprette denne løsning på din konto skal du følge instruktionerne i filen README.md. Løsningen indeholder en AWS CloudFormation skabelon til at klargøre dine ressourcer.
Ryd op
For at rydde op i de ressourcer, der er oprettet i denne demo, skal du udføre følgende trin:
- Slet de S3-buckets, der er oprettet for at gemme CloudFormation-skabelonen (Bucket A), kildekoden (Bucket B) og webstedet (
pth-cf-text-highlighter-website-[Suffix]
). - Slet CloudFormation-stakken
pth-cf
. - Slet S3-bøtten, der indeholder talefilerne (
pth-speech-[Suffix]
). Denne bøtte blev skabt af CloudFormation-skabelonen til at gemme lyd- og talemærkefiler, der er genereret af Amazon Polly.
Resumé
I dette indlæg viste vi et eksempel på en løsning, der kan fremhæve tekst, mens den bliver læst ved hjælp af Amazon Polly. Det blev udviklet ved hjælp af Amazon Polly-talemærkefunktionen, som giver os markører for det sted, hvert ord eller sætning begynder i en lydfil.
Løsningen er tilgængelig som en CloudFormation skabelon. Det kan implementeres, som det er, til enhver webapplikation, der udfører tekst-til-tale-konvertering. Dette ville være nyttigt til at tilføje visuelle egenskaber til lyd i bøger, avatarer med læbesynkroniseringsfunktioner (ved hjælp af viseme-talemærker), websteder og blogs og til at hjælpe mennesker med hørehandicap.
Den kan udvides til at udføre yderligere opgaver udover at fremhæve tekst. For eksempel kan browseren vise billeder, afspille musik og udføre andre animationer på frontend, mens teksten bliver læst op. Denne funktion kan være nyttig til at skabe dynamiske lydbøger, undervisningsindhold og rigere tekst-til-tale-applikationer.
Vi byder dig velkommen til at prøve denne løsning og lære mere om de relevante AWS-tjenester fra følgende links. Du kan udvide funktionaliteten til dine specifikke behov.
Om forfatteren
Varad G Varadarajan er Trusted Advisor og Field CTO for Digital Native Businesses (DNB) kunder hos AWS. Han hjælper dem med at designe og bygge innovative løsninger i stor skala ved hjælp af AWS-produkter og -tjenester. Varads interesseområder er IT-strategirådgivning, arkitektur og produktledelse. Uden for arbejdet nyder Varad at skrive kreativt, se film med familie og venner og rejse.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Automotive/elbiler, Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- BlockOffsets. Modernisering af miljømæssig offset-ejerskab. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/highlight-text-as-its-being-spoken-using-amazon-polly/
- :har
- :er
- :ikke
- $OP
- 1
- 10
- 100
- 11
- 12
- 17
- 19
- 22
- 23
- 33
- 7
- 8
- 9
- a
- evne
- Om
- adgang
- tilgængelig
- Adgang
- Konto
- tilføje
- Yderligere
- rådgiver
- Efter
- igen
- AI
- Støtte
- alene
- alternativer
- Skønt
- Amazon
- Amazon API Gateway
- Amazon Polly
- Amazon Web Services
- an
- ,
- animationer
- En anden
- enhver
- api
- Anvendelse
- applikationer
- tilgang
- tilgange
- passende
- arkitektur
- ER
- områder
- Array
- AS
- At
- lyd
- til rådighed
- avatars
- undgå
- vente
- AWS
- AWS Lambda
- AWS-trinfunktioner
- tilbage
- baseret
- BE
- fordi
- Begyndelse
- være
- udover
- blogs
- Bøger
- både
- Branch
- browser
- bygge
- virksomheder
- .
- by
- ringe
- Opkald
- CAN
- kapaciteter
- kapacitet
- tilfælde
- vis
- odds
- karakteristika
- tegn
- chatbot
- chatbots
- klasse
- kunde
- kode
- kombineret
- betingelse
- sammenholdt
- Overvej
- Konsol
- rådgivning
- indeholder
- indhold
- fortsæt
- Samtale
- Konvertering
- konvertere
- koordineret
- Core
- Tilsvarende
- skabe
- oprettet
- skaber
- Oprettelse af
- Kreativ
- CTO
- Nuværende
- Kunder
- demo
- Afhængigt
- indsat
- detaljer
- udviklet
- Udvikling
- forskellige
- digital
- direkte
- DNB
- do
- dokumentet
- Er ikke
- færdig
- Dont
- dynamisk
- dynamisk
- hver
- tidligere
- uddannelsesmæssige
- muliggør
- ende
- Endpoint
- ender
- indgreb
- Går ind i
- Hele
- fejl
- begivenheder
- Hver
- eksempel
- eksempler
- udsat
- udvide
- familie
- Feature
- få
- felt
- Fields
- File (Felt)
- Filer
- Finde
- slut
- følger
- efter
- Til
- formular
- format
- fundet
- venner
- fra
- forsiden
- forreste ende
- funktion
- funktionalitet
- funktioner
- gateway
- generere
- genereret
- genererer
- GitHub
- Giv
- giver
- Go
- havde
- håndtere
- Håndterer
- Have
- he
- høre
- hjælper
- Fremhæv
- Fremhævet
- fremhæve
- hostede
- HTML
- http
- HTTPS
- i
- ID
- Identity
- if
- billeder
- in
- omfatter
- Herunder
- angivet
- oplysninger
- innovativ
- indgang
- indvendig
- øjeblikkelig
- i stedet
- anvisninger
- interesse
- interessant
- ind
- påberåber sig
- IT
- ITS
- JavaScript
- json
- Nøgle
- Kend
- Sprog
- Sprog
- stor
- LÆR
- læring
- Længde
- lad
- Bibliotek
- Line (linje)
- links
- lidt
- Lang
- maskine
- machine learning
- lavet
- ledelse
- mange
- markere
- nævnte
- ML
- ændre
- mere
- Film
- flere
- Musik
- indfødte
- Behov
- behov
- Ny
- nyligt
- næste
- objekt
- objekter
- opnå
- of
- offset
- on
- ONE
- or
- Andet
- vores
- ud
- output
- uden for
- Parallel
- dele
- Mennesker
- Udfør
- udfører
- tilladelse
- Place
- plato
- Platon Data Intelligence
- PlatoData
- Leg
- spillet
- spiller
- Indlæg
- præsentere
- forelagt
- tidligere
- tidligere
- Behandlet
- Produkt
- produktstyring
- produktion
- Produkter
- løfte
- Promises
- giver
- leverer
- bestemmelse
- formål
- hurtigt
- realtid
- frigive
- relevant
- Ressourcer
- svar
- resultere
- afkast
- afkast
- robust
- Kør
- s
- samme
- Scale
- sender
- dømme
- Series
- tjeneste
- Tjenester
- sæt
- sæt
- Vis
- viste
- Shows
- side
- Simpelt
- samtidigt
- løsninger
- Løsninger
- Kilde
- kildekode
- tale
- specifikke
- tale
- talt
- stable
- starte
- starter
- Tilstand
- Trin
- Steps
- opbevaring
- butik
- opbevaret
- Strategi
- strøm
- vandløb
- String
- sådan
- symbol
- synkronisering
- TAG
- opgaver
- skabelon
- Tekst-til-tale
- at
- The Source
- Staten
- deres
- Them
- Disse
- denne
- Gennem
- tid
- Tidsindstillet
- gange
- tidsstempel
- til
- Oversætte
- Traveling
- betroet
- prøv
- vender
- to
- typen
- forstå
- enestående
- URL
- us
- brug
- anvendte
- Bruger
- brugere
- bruger
- ved brug af
- værdi
- Værdier
- udgave
- var
- ser
- Vej..
- we
- web
- Webapplikation
- webservices
- Hjemmeside
- websites
- velkommen
- Hvad
- hvornår
- som
- mens
- WHO
- Hele
- med
- ord
- Arbejde
- ville
- skrivning
- Du
- Din
- zephyrnet