Amazon Polly on palvelu, joka muuttaa tekstin luonnolliselta kuulostavaksi puheeksi käyttämällä kymmeniä ääniä yli 30 kielellä. Voit käyttää sitä kaikenlaisissa sovelluksissa puhuvista animoiduista avatareista realistisiin virtuaalisiin agenteihin, jotka vastaavat asiakastukipyyntöihin, ja automaattisiin uutislähettäjiin, jotka lukevat tarinoita ääneen. Voit antaa Amazon Pollyn palauttaa syntetisoidun puheen suorana lähetyksenä tai ladata sen tavallisena äänitiedostona toistettavaksi myöhemmin. Kuten monet AWS-palvelut, maksat vain siitä, mitä todella käytät: Amazon Pollylla maksat syntetisoidun lauseen merkkien määrä. Pelkästään tallennetun äänitiedoston toistaminen on ilmaista riippumatta siitä, toistatko sen kerran tai useita kertoja.
Jos tiedät tarkalleen, mitä lauseita tarvitset etukäteen, voit optimoida AWS-kulutuksesi. Ota vain kaikki tarvitsemasi lauseet ääneen ja lähetä se Amazon Pollylle rakennusvaiheessa. Tallenna luotu äänitiedosto, kunnes olet valmis toistamaan sen suorituksen aikana. Tämän lähestymistavan yleisiä käyttötapauksia ovat lentokenttien tai linja-autoasemien kuulutusjärjestelmät, videopelit ja pikapalveluravintolan automatisoidut tilausten vastaanottajat. Maksa vain kerran syntetisoidaksesi tekstisi ja toista sitten saadut äänitiedostot uudelleen tarpeen mukaan.
Tässä viestissä jaamme täysin automatisoidun, tapahtumapohjaisen, palvelimettoman ratkaisun, jonka avulla voit muuttaa suuren määrän tekstilauseita todenmukaiseksi puheeksi asynkronisesti. Voit käynnistää työt lataamalla lauseiden tiedoston manuaalisesti yksityiseen Amazonin yksinkertainen tallennuspalvelu (Amazon S3) ämpäri, ja saat ilmoituksen sähköpostitse tai pikaviestillä, kun ne ovat valmiita. Tai tee prosessista osa omaasi AWS CodeBuild jatkuva integrointijärjestelmä käynnistämällä synteesityön automaattisesti aina, kun lähdelauseesi muuttuvat.
Yleiskatsaus ratkaisuun
Ratkaisu on täysin palvelimeton, ja se koostuu pääasiassa joukosta AWS Lambda toimintoja. Nämä toiminnot seuraavat syntetisoitavia kohteita. Lähetä ne Amazon Pollylle synteesiä varten ja käsittele tulokset niiden valmistuttua. Toiminnot käyttävät jaettua Amazon DynamoDB taulukoita työn tilan hallitsemiseksi ajan mittaan. An AWS-vaihetoiminnot työnkulku seuraa jokaista lähetettyä sarjaa ja ilmoittaa kiinnostuneille osapuolille sen valmistumisesta Amazonin yksinkertainen ilmoituspalvelu (Amazon SNS) -aihe.
Ratkaisu käyttää tapahtumalähtöistä arkkitehtuuria: yksittäisen alusta loppuun suoritettavan prosessin sijaan prosessi jakautuu Lambda-kutsujen kesken, suoritetaan vain, kun se käynnistyy jostain tapahtumasta.
Seuraava kaavio kuvaa ratkaisuarkkitehtuuria.
Ota ratkaisu käyttöön ja määritä se
Otat ratkaisun käyttöön AWS-tilillesi käyttämällä AWS-palvelimeton sovellusmalli (AWS SAM). Voit tehdä tämän miltä tahansa tietokoneelta, jolla on komentorivin käyttöoikeus tiliisi, mutta yksinkertaisuuden vuoksi käytämme sitä AWS CloudShell.
- Kirjaudu sisään CloudShell-konsoliin.
- Kun komentotulkki on alustettu, tee paikallinen kopio ratkaisun lähdekoodista ja valmistele AWS SAM -pino antamalla seuraavat komennot:
- Ota ratkaisu käyttöön AWS SAMin avulla käyttöönotto-ohjatulla tavalla. Anna pinon nimi (esim
amazon-polly-async-batch
), haluamasi alue, sähköpostiosoite ilmoituksia varten ja luotujen äänitiedostojen olemattoman S3-säihön nimi. Hyväksy muut oletusasetukset.
Kaikkien komponenttien käyttöönotto kestää vain muutaman minuutin. Jos asennus onnistuu, sinun pitäisi nähdä seuraavanlainen viesti:
- Tarkista sähköpostistasi viesti Amazon SNS:ltä ja vahvista tilaus.
Kuinka ratkaisu toimii
Tässä osiossa kuvataan yksityiskohtaisesti, kuinka ratkaisua käytetään tekstin syntetisoimiseen ja kuinka kukin pääkomponentti toimii.
Asetustiedosto: Syntetisoitavan tekstin määrittäminen
Määrität joukon tekstilauseita, jotka haluat Amazon Pollyn lausuvan tiedostossa a set tiedosto. Tämä on YAML tiedosto joka koostuu joukon tiedoista, oletusarvojen kokoelmasta ja luettelosta syntetisoitavista kohteista:
- Aseta tiedot – Sarjan säkeessä annat sarjalle nimen, jolla se erottuu muista, ja valinnainen lähtöetuliite, joka kertoo ratkaisulle, mihin S3-ämpäriisi haluat äänitiedostot tallentaa.
- Oletukset – Valinnaiset oletusasetukset -osiossa voit antaa parametreille erityisiä arvoja, jotka ovat voimassa, elleivät tietyt kohteet ohita niitä. Seuraavia määritteitä tuetaan, kuten dokumentoitu Amazon Polly API:ssa:
- moottori - Jompikumpi
standard
orneural
; oletuksenaneural
- kielikoodi – Mikä tahansa yli 20 tutusta kielestä; oletuksena
en-US
- tulostusmuoto -
mp3
,ogg_vorbis
taipcm
; oletuksenamp3
- tekstityyppinen - Jompikumpi
text
orSSML
; oletuksenatext
- äänitunnus – Mikä tahansa tuetuista äänistä; oletuksena
Matthew
- moottori - Jompikumpi
- kohdetta – Kohdekokoelma on yksinkertaisesti luettelo syntetisoitavista tekstijonoista. Amazon Polly muuntaa jokaisen kohteen tekstin puheeksi käyttämällä asetettuja oletusasetuksia ja alkiossa annettuja ohituksia ja sijoittaa tuloksena saadut tiedostot S3-säihöön joukon lähtöetuliitekansioon. Jos määrität tulostiedoston, tiedosto nimetään määritetyllä tavalla; muussa tapauksessa ratkaisu antaa tiedostolle nimen sen sisällön ja järjestyksen perusteella kokoelmassa.
Jos esimerkiksi haluat syntetisoida kuusi riviä näytöksestä 1, kohtaus 1 Romeo ja Juulia, voit käyttää YAML-tiedostoa, joka näyttää seuraavalta koodilta:
Tämä sarja määrittää, että Amazon Pollyn tulee syntetisoida kuusi riviä näytelmästä. Käytämme ääniä Joey, Matthew ja Brian edustamaan Abrahamia, Sampsonia ja Gregorya. Amazon Pollylla voit määrittää äänenvoimakkuuden ja sävyn, kuten silloin, kun Abraham korostaa sanaa "me" ja Sampsonin ja Gregoryn sivuille, jotka kuiskataan; varten tällaisia SSML-efektejä, määritämme yksinkertaisesti, että text-type
is ssml
ja koristele ilmaisu sopivasti.
Koska mikään kohteista ei määritä tulostiedostoa, tiedostojen nimet luodaan automaattisesti puolestasi. Tässä esimerkissä luodut MP3-tiedostot ovat act-1-scene-1/item-000000-do-you-bite-your-thumb-at-us-sir.mp3
kautta act-1-scene-1/item-000005-no-sir-i-do-not-bite-my-thumb-at-you-sir.mp3
.
Tämä joukkotiedosto (ja muut) ovat docs/samples
koodin hakemisto. CloudShellissä voit lähettää tämän tiedoston Amazon Pollylle yksinkertaisesti lataamalla sen aiemmin määrittämääsi S3-alueeseen:
Amazon Polly syntetisoi kuusi riviä tiedostosta. Kun kaikki rivit on syntetisoitu, saat sähköposti-ilmoituksen:
YAML voidaan luoda missä tahansa editorissa, sitä on helppo lukea ja se on ystävällinen lähteenhallintajärjestelmiin, kuten AWS CodeCommit. Joukkotiedoston on kuitenkin oltava pelkkä tekstitiedosto, sen on oltava .yml-tiedostotunniste ja sen on oltava kelvollinen YAML.
Aseta prosessori -toiminto
Kun tiedosto, jossa on a .yml
laajennus ladataan S3-ämpäriin, Set Processor Lambda -toiminto käynnistää prosessin. Se jäsentää sarjatiedoston ja luo sille vastaavan tietueen DynamoDB:ssä. Tätä sarjatietuetta käytetään kirjaamaan, kuinka monta kohdetta sarjassa on, kuinka monta on vielä kesken ja milloin sarjan käsittely alkoi.
Sitten Set Processor -toiminto lähettää jokaiselle kokoelman tuotteelle viestin – eräänlaisen työmääräyksen – ratkaisun Amazonin yksinkertainen jonopalvelu (Amazon SQS) -jonossa. Tämä työtilaus on JSON-dokumentti, joka sisältää kaiken, mitä Amazon Polly tarvitsee tekstin syntetisoimiseksi ladatun sarjatiedoston ohjeiden mukaisesti.
Jokainen viesti on täysin riippumaton muista, joten Amazon Polly voi tehdä niiden syntetisointityön samanaikaisesti, eikä sillä ole väliä, missä järjestyksessä ne valmistuvat. Myös joukon nimi on osa työtilausta, joten ratkaisu voi käsitellä useita joukkoja (tai jopa useita saman joukon esiintymiä) samanaikaisesti.
Kohteen prosessori -toiminto
Item Processor Lambda -toiminto kuluttaa viestejä SQS-jonosta ja lähettää viestejä Amazon Pollylle.
Jokainen viesti edustaa yhtä äänitiedostoa, jonka Amazon Polly voi luoda. Funktio kutsuu API-metodia StartSpeechSynthesisTask, käyttämällä työtilauksen arvoja menetelmän parametrien argumentteina. Tämä on asynkroninen API-kutsu, joten meillä ei ole takuita siitä, milloin Amazon Polly todella luo äänitiedoston puolestamme; mutta kun se on valmis, Amazon Polly julkaisee SNS-viestin seuraavaa Lambda-toimintoa, Response Processoria, varten käsiteltäväksi.
Item Processor -toiminto lisää myös tietueen DynamoDB:n tuotetaulukkoon, jotta ratkaisu voi seurata, mitkä tuotteet on suoritettu onnistuneesti ja mitkä eivät vielä.
Kuten monet AWS-sovellusliittymät, niitä on rajoittaa kuinka monta API-puhelua voit soittaa Amazon Pollylle sekunnissa. Tuoteprosessoritoimintoa on kuristettu pysymään kohtuullisissa rajoissa, ja se perääntyy eksponentiaalisesti ja yrittää uudelleen tarpeen mukaan, jotta voit lähettää työn, mutta pysyä silti tilisi palvelurajoissa.
Response Processor -toiminto
Kun Amazon Polly on suorittanut tietyn pyynnön käsittelyn, se lähettää ilmoituksen SNS-vastausaiheeseen. Tämän havaitsee välittömästi sekvenssin viimeinen Lambda-toiminto, vastausprosessori. Tämä toiminto vastaa kohteen päivittämisestä ja tietueiden asettamisesta DynamoDB:ssä sekä Amazon S3:n äänitiedoston uudelleennimeämisestä pyydetyksi tiedostonimeksi.
Jos Amazon Polly raportoi onnistuneesta äänitiedoston syntetisoinnissa, Response Processor -toiminto yksinkertaisesti siirtää tiedoston lopulliseen sijaintiinsa. Se päivittää tuotetietueen taskStatus
että success
ja lisää success
laskuri asetettu ennätys. Jos Amazon Polly ilmoittaa virheestä, toiminto päivittää tuotetietueen virheen syyn ja lisää arvoa failed
laskuri asetettu ennätys.
Aseta tarjoilija -työnkulku
Tarkastelun vuoksi jokainen näistä Lambda-toiminnoista toimii vain, kun tapahtuma laukaisee ne:
- Set Processor käynnistyy, kun sarjatiedosto ladataan S3-säihöön
- Tuoteprosessori käynnistyy, kun työmääräykset ilmestyvät SQS-jonoon
- Vastausprosessori käynnistyy, kun Amazon Polly julkaisee viestin SNS-aiheeseen
Nämä toiminnot voivat toimia samanaikaisesti ja käsitellä useita kohteita useista joukoista samanaikaisesti. Ilman orkestrointiprosessia, mistä tiedämme, milloin tietty sarja on valmis? Mistä tiedämme, jos jokin meni pieleen?
Set Waiter on Step Functions -työnkulku, jonka tehtävänä on seurata tiettyä sarjaa päättääkseen, milloin se on tehty, tai ilmoittaakseen, jos ratkaisuun liittyvä tekninen ongelma on jättänyt sarjan hylätyksi.
Step Functions Graph Inspectorissa prosessinaikainen Set Waiter -työnkulku näyttää seuraavalta.
Set Waiterin esiintymän käynnistää Set Processor -toiminto jokaiselle lähetetylle sarjalle, joka välittää yksilöllisen nimen, joka tunnistaa kyseisen joukon. Tarjoilija lataa asetetun tietueen DynamoDB-taulukosta latausvaiheessa ja tarkistaa, onko se valmis tarkistusvaiheessa. Jos Amazon Pollylla on vielä tehtäviä käsiteltävänä, toiminto odottaa muutaman sekunnin odotusvaiheessa ennen kuin käynnistyy uudelleen.
Jos Amazon Polly on käsitellyt jokaisen joukon tehtävän, Set Waiter siirtyy ilmoitusvaiheeseen, joka julkaisee viestin valmistuneelle SNS-aiheelle. Jos prosessin aikana olevaan joukkoon ei ole viime aikoina tehty muutoksia, sarjan tarjoilija olettaa, että jotain on vialla, ja lähettää aiheeseen hylätyn viestin.
Puhdistaa
Voit jättää ratkaisun tilillesi niin kauan kuin haluat. Kun se ei ole käytössä, maksat vain äänitiedostojen tallentamisesta Amazon S3:ssa ja DynamoDB-taulukoiden tiedoista. Kun sinulla on syntetisoitavaa tekstiä, lataa joukko tiedosto S3-ämpäriin, ja ratkaisu ottaa sen sieltä. Maksat Lambda-funktion kutsuista ja Amazon Pollyn itse käsittelemät merkit. Syntetisoi kaikki 1.1 miljoonaa merkkiä Moby DickEsimerkiksi tavalliset äänet maksavat alle 5 dollaria ja laadukkaammat hermoäänet alle 20 dollaria.
Jos päätät olla käyttämättä ratkaisua uudelleen, voit poistaa kaikki sen resurssit käyttämällä AWS-pilven muodostuminen:
Yhteenveto
Tässä viestissä kuvailimme palvelimetonta, tapahtumapohjaista ratkaisua suurten tekstilausekkeiden lähettämiseen Amazon Pollylle asynkronista käsittelyä varten. Tällä lähestymistavalla voit pitää kustannukset alhaisina maksamalla vain kerran synteesistä riippumatta siitä, kuinka monta kertaa toistat luotuja äänitiedostoja.
Voit ottaa ratkaisun käyttöön tililläsi muutamassa minuutissa AWS SAM -sovelluksena. Määrität muunnettavan tekstin YAML-tiedostoiksi, joita kutsutaan joukkotiedostoiksi. Kun sarjatiedosto ladataan ratkaisun S3-ämpäriin (joko ihminen manuaalisesti tai automaattisesti koodiputkella), sarja Lambda-toimintoja – Set Processor, Item Processor ja Result Processor – toimivat yhdessä lähettääkseen tehtävät Amazon Polly ja kerää äänitiedostot puolestasi. Kun kaikki työ on tehty, julkaistaan ilmoitus SNS-aiheeseen.
Ratkaisu on kehitetty avoimen lähdekoodin projektina GitHubissa. Otamme mielellämme vastaan ominaisuuspyyntösi, virheraportit tai lisäyksesi. Kokeile tätä itse ja kerro meille mielipiteesi kommenteissa. Saat lisätietoja siitä, kuinka Amazon Polly voi auttaa sinua, vieraile verkkosivullamme!
Tietoja Tekijät
Jon Peterson on AWS:n vanhempi ratkaisuarkkitehti. Hän asuu Chicagon ulkopuolella vaimonsa ja kahden lapsensa kanssa.
Prateek Jain on AWS:n ratkaisuarkkitehti, jonka kotipaikka on Atlanta Georgia. Hän on intohimoinen pilvipalveluista ja auttaa asiakkaita rakentamaan upeita ratkaisuja AWS:lle.
- '
- 100
- 7
- pääsy
- Tili
- aineet
- Lentokentät
- Kaikki
- Amazon
- Amazon Polly
- api
- API
- Hakemus
- sovellukset
- arkkitehtuuri
- perustelut
- Atlanta
- audio-
- Automatisoitu
- AWS
- Vika
- rakentaa
- bussi
- soittaa
- tapauksissa
- muuttaa
- tarkkailun
- Tarkastukset
- Chicago
- Lapset
- pilvi
- koodi
- kommentit
- Yhteinen
- komponentti
- sisältö
- kustannukset
- Asiakaspalvelu
- Asiakkaat
- tiedot
- yksityiskohta
- toimittaja
- ympäristö
- tapahtuma
- Epäonnistuminen
- Ominaisuus
- Ilmainen
- toiminto
- Pelit
- Georgia
- mennä
- GitHub
- Miten
- Miten
- HTTPS
- Ihmiset
- IAM
- Mukaan lukien
- integraatio
- IT
- Työpaikat
- kielet
- suuri
- Laki
- OPPIA
- linja
- Lista
- kuormitus
- paikallinen
- sijainti
- Pitkät
- merkittävä
- miljoona
- liikkuu
- nimet
- hermo-
- ilmoituksen
- numerot
- avata
- avoimen lähdekoodin
- tilata
- määräys
- Muut
- Muuta
- Maksaa
- lausekkeet
- Viestejä
- yksityinen
- projekti
- julkinen
- Lukeminen
- asiakirjat
- Raportit
- Esittelymateriaalit
- vastaus
- Ravintola
- tulokset
- arviot
- ajaa
- juoksu
- Sarjat
- serverless
- Palvelut
- setti
- asetus
- Jaa:
- yhteinen
- Kuori
- Yksinkertainen
- SIX
- So
- Ratkaisumme
- viettää
- alkoi
- Osavaltio
- pysyä
- Levytila
- tarinat
- toimitettu
- tilaus
- menestys
- onnistunut
- tuki
- Tuetut
- järjestelmä
- järjestelmät
- puhuminen
- Tekninen
- Äänet
- aika
- raita
- Päivitykset
- us
- Video
- Videopelit
- Virtual
- Ääni
- ÄÄNTÄ
- tilavuus
- odottaa
- sisällä
- Referenssit
- työnkulku
- toimii