Amazon Polly egy olyan szolgáltatás, amely a szöveget természetes hangzású beszéddé alakítja, több mint 30 nyelven több tucat hangot használva. Használhatja mindenféle alkalmazáshoz, kezdve a beszélő animált avataroktól, az ügyfélszolgálati kéréseket megválaszoló, élethű virtuális ügynökökön át a történeteket hangosan felolvasó automatizált híradókig. Az Amazon Polly visszaadhatja a szintetizált beszédet élő közvetítésként, vagy letöltheti szabványos hangfájlként későbbi lejátszáshoz. Sok AWS-szolgáltatáshoz hasonlóan csak azért fizet, amit ténylegesen használ: az Amazon Polly használatával azért fizet a szintetizált kifejezés karaktereinek száma. Egy mentett hangfájl lejátszása ingyenes, akár egyszer, akár többször játssza le.
Ha előre pontosan tudja, mely kifejezésekre van szüksége, optimalizálhatja AWS-költését. Csak hangozzon el minden frázist, amelyet meg kell hangoztatni, és küldje el az Amazon Polly-nak az összeállítási időben, és tárolja a generált hangfájlt, amíg készen áll a lejátszásra futás közben. Ennek a megközelítésnek a gyakori felhasználási módjai közé tartoznak a repülőtereken vagy buszpályaudvarokon lévő hangosbemondó rendszerek, a videojátékok és a gyorséttermi automatizált rendelésfelvevők. Csak fizessen egyszer a szöveg szintetizálásáért, majd játssza le újra a keletkező hangfájlokat, ha szükséges, ingyenesen.
Ebben a bejegyzésben egy teljesen automatizált, eseményvezérelt, szerver nélküli megoldást osztunk meg, amellyel nagyszámú szöveges kifejezést aszinkron módon élethű beszéddé alakíthatsz. A feladatokat úgy indíthatja el, hogy manuálisan feltölt egy frázisfájlt egy privátba Amazon egyszerű tárolási szolgáltatás (Amazon S3) vödröt, majd e-mailben vagy azonnali üzenetben értesítjük, ha készen állnak. Vagy tegye a folyamatot a maga részévé AWS CodeBuild folyamatos integrációs rendszer, amely automatikusan elindítja a szintézis munkát, amikor a forráskifejezések megváltoznak.
A megoldás áttekintése
A megoldás teljesen szerver nélküli, főként egy sorból áll AWS Lambda funkciókat. Ezek a funkciók nyomon követik a szintetizálandó elemeket. Küldje be őket az Amazon Polly-nak szintézis céljából, és dolgozza fel az eredményeket, amint elkészültek. A funkciók megosztottat használnak Amazon DynamoDB táblázatok a munka állapotának időbeli kezeléséhez. An AWS lépésfunkciók a munkafolyamat nyomon követi az egyes beküldött készleteket, és a befejezésről értesíti az érdekelt feleket a Amazon Simple Notification Service (Amazon SNS) témakörben.
A megoldás egy eseményvezérelt architektúra: ahelyett, hogy egyetlen folyamat futna az elejétől a végéig, a folyamat el van osztva a Lambda-hívások között, és csak akkor fut, ha valamilyen eseményből kiváltja.
A következő ábra a megoldás architektúráját mutatja be.
Telepítse és konfigurálja a megoldást
A megoldást az AWS-fiókjában telepítheti a AWS szerver nélküli alkalmazásmodell (AWS SAM). Ezt bármely számítógépről megteheti, amely parancssori hozzáféréssel rendelkezik fiókjához, de az egyszerűség kedvéért ezt használjuk AWS CloudShell.
- Jelentkezzen be a CloudShell-konzolba.
- A shell inicializálása után készítsen helyi másolatot a megoldás forráskódjáról, és készítse elő az AWS SAM-vermet a következő parancsok kiadásával:
- Használja az AWS SAM-et a megoldás üzembe helyezéséhez, telepítési útmutatóval. Adja meg a verem nevét (pl
amazon-polly-async-batch
), az Ön által előnyben részesített régiót, egy e-mail címet az értesítésekhez, valamint egy nem létező S3-csoport nevét a generált hangfájlokhoz. Fogadja el a többi alapértelmezett beállítást.
Az összes összetevő telepítése csak néhány percet vesz igénybe. Ha a telepítés sikeres, a következőhöz hasonló üzenetet kell látnia:
- Nézze meg az e-mailben, hogy van-e üzenet az Amazon SNS-től, és erősítse meg az előfizetést.
Hogyan működik a megoldás
Ebben a részben részletesen leírjuk, hogyan használhatja a megoldást a szöveg szintetizálására, és hogyan működik az egyes főbb összetevők.
A beállított fájl: A szintetizálandó szöveg megadása
Meghatározhatja azon szöveges kifejezések készletét, amelyeket az Amazon Polly hangoztatni szeretne egy a nevű fájlban beállított fájl. Ez egy YAML fájl amely a készlet részleteiből, az alapértelmezett értékek gyűjteményéből és a szintetizálandó elemek listájából áll:
- Részletek beállítása – A beállított szakaszban nevet ad a készletnek, hogy megkülönböztesse a többitől, és egy opcionális kimeneti előtagot, amely megmondja a megoldásnak, hogy az S3 tárolójában hol szeretné tárolni a hangfájlokat.
- Alapértékek – Az opcionális alapértelmezések részben megadhat a paramétereknek olyan konkrét értékeket, amelyek érvényesek, hacsak nem írják felül bizonyos elemek. A következő attribútumok támogatottak, mint dokumentálva az Amazon Polly API-ban:
- motor – Akármelyik
standard
orneural
; alapértelmezés szerintneural
- nyelv-kód – A több mint 20 támogatott nyelv bármelyike; alapértelmezés szerint
en-US
- kimeneti formátum -
mp3
,ogg_vorbis
vagypcm
; alapértelmezés szerintmp3
- szöveg típusú – Akármelyik
text
orSSML
; alapértelmezés szerinttext
- hangazonosító – Bármely támogatott hang; alapértelmezés szerint
Matthew
- motor – Akármelyik
- tételek – A tételgyűjtemény egyszerűen a szintetizálandó szöveges karakterláncok listája. Az Amazon Polly az egyes elemek szövegét beszéddé alakítja a beállított alapértékek és az elemben megadott felülírások használatával, és az eredményül kapott fájlokat a készlet kimeneti előtag mappájában lévő S3 tárolóba helyezi. Ha kimeneti fájlt ad meg, a fájl neve a megadott módon lesz; egyébként a megoldás a fájlnak a tartalma és a gyűjteménybeli sorrendje alapján ad nevet.
Például, ha hat sort szeretne szintetizálni az 1. felvonás 1. jelenetéből Rómeó és Júlia, használhat egy YAML fájlt, amely a következő kódhoz hasonlít:
Ez a készlet azt határozza meg, hogy az Amazon Pollynak hat sort kell szintetizálnia a játékból. Abraham, Sampson és Gregory karakterek ábrázolására Joey, Matthew és Brian hangokat használjuk. Az Amazon Polly segítségével megadhatja a hangerőt és a hangszínt, például amikor Abraham a „mi” szót hangsúlyozza, illetve Sampson és Gregory mellett, amelyeket suttognak; számára SSML-effektusok, mint ezek, egyszerűen megadjuk, hogy a text-type
is ssml
, és díszítse megfelelően a kijelentést.
Mivel egyik elem sem határoz meg kimeneti fájlt, a fájlnevek automatikusan létrejönnek Önnek. Ebben a példában a generált MP3 fájlok act-1-scene-1/item-000000-do-you-bite-your-thumb-at-us-sir.mp3
keresztül act-1-scene-1/item-000005-no-sir-i-do-not-bite-my-thumb-at-you-sir.mp3
.
Ez a készletfájl (és mások) a docs/samples
a kód könyvtárát. A CloudShellben elküldheti ezt a fájlt az Amazon Pollynak, egyszerűen feltöltve a korábban megadott S3 tárolóba:
Az Amazon Polly szintetizálja a fájl hat sort. Amikor az összes sort szintetizálta, e-mail értesítést kap:
A YAML bármilyen szerkesztőben létrehozható, könnyen olvasható az emberek számára, és barátságos a forrásvezérlő rendszerekbe való bejelentkezéshez, mint pl. AWS CodeCommit. A beállított fájlnak azonban csak szöveges fájlnak kell lennie, .yml kiterjesztésűnek kell lennie, és érvényes YAML-nek kell lennie.
A Processzor beállítása funkció
Amikor egy fájl a .yml
A kiterjesztés feltöltődik az S3 tárolóba, a Set Processor Lambda funkció elindítja a folyamatot. Elemezi a készletfájlt, és létrehoz egy megfelelő rekordot a DynamoDB-ben. Ez a készletrekord annak nyomon követésére szolgál, hogy hány elem van a készletben, hányat kell még befejezni, és mikor kezdődött a készlet feldolgozása.
Ezután a Set Processor funkció a gyűjtemény minden egyes eleméhez egy üzenetet – egyfajta munkarendelést – küld a megoldásnak. Amazon Simple Queue Service (Amazon SQS) sor. Ez a munkarendelés egy JSON-dokumentum, amely mindent tartalmaz, amire az Amazon Pollynak szüksége van a szöveg szintetizálásához a feltöltött készletfájlban található utasítások szerint.
Mindegyik üzenet teljesen független a többitől, így a szintetizálásukat az Amazon Polly egyidejűleg is elvégezheti, és nem mindegy, hogy milyen sorrendben fejeződnek be. A készlet neve is része a munkarendelésnek, így több halmazt (vagy akár ugyanannak a halmaznak több példányát is) dolgozhatja fel a megoldás egyszerre.
Az Elemfeldolgozó funkció
Az Item Processor Lambda funkció az SQS-sor üzeneteit veszi fel, és az Amazon Polly-ra küldi a munkát.
Minden üzenet egyetlen hangfájlt jelent, amelyet az Amazon Polly létrehozhat. A függvény meghívja az API metódust StartSpeechSynthesisTask, használja a munkarendelés értékeit a metódus paramétereinek argumentumaként. Ez egy aszinkron API-hívás, így nincs garanciánk arra vonatkozóan, hogy az Amazon Polly ténylegesen mikor állítja elő nekünk az audiofájlt; de ha kész, az Amazon Polly SNS-üzenetet tesz közzé a következő Lambda-funkcióhoz, a válaszprocesszorhoz.
A cikkfeldolgozó funkció egy rekordot is hozzáad a DynamoDB tételtáblájához, így a megoldás nyomon követheti, hogy mely tételek fejeződtek be sikeresen és melyek még nem.
Sok AWS API-hoz hasonlóan vannak korlátozza, hogy másodpercenként hány API-hívást kezdeményezhet az Amazon Polly felé. Az elemfeldolgozó funkció le van tiltva, hogy az ésszerű határokon belül maradjon, és ez exponenciálisan meghátrál és újra próbálkozik szükség szerint, hogy feladhassa a munkát, de továbbra is a fiók szolgáltatási korlátain belül maradjon.
A válaszfeldolgozó funkció
Amikor az Amazon Polly befejezte a munkát egy adott kéréssel kapcsolatban, értesítést küld az SNS-válasz témakörbe. Ezt azonnal felveszi a sorozat utolsó Lambda funkciója, a válaszprocesszor. Ez a funkció felelős az elem frissítéséért és a rekordok beállításáért a DynamoDB-ben, valamint az Amazon S3 hangfájljának átnevezéséért a kért fájlnévre.
Ha az Amazon Polly sikeresről számolt be az audiofájl szintetizálásában, akkor a Response Processor funkció egyszerűen áthelyezi a fájlt a végső helyére. Frissíti a tételrekordot taskStatus
nak nek success
és növeli a success
számláló a beállított rekordban. Ha az Amazon Polly hibát jelez, a funkció frissíti az elemrekordot a hiba okával, és növeli a failed
számláló a beállított rekordban.
A Set Waiter munkafolyamat
Az áttekintéshez az alábbi lambda-funkciók mindegyike csak akkor fut, ha egy esemény váltja ki őket:
- A Set Processor akkor indul el, amikor egy set fájlt feltöltenek az S3 tárolóba
- A cikkfeldolgozó akkor aktiválódik, amikor a munkarendelések megjelennek az SQS-sorban
- A válaszfeldolgozó akkor aktiválódik, amikor az Amazon Polly üzenetet tesz közzé az SNS-témában
Ezek a funkciók párhuzamosan futhatnak, és egyszerre több készletből több elemet dolgozhatnak fel. Hangszerelési folyamat nélkül honnan tudhatjuk, hogy egy adott sorozat elkészült? Honnan tudhatjuk, ha valami elromlott?
A Set Waiter egy Step Functions munkafolyamat, amely egy adott készlet figyeléséért felelős, hogy eldöntse, mikor készült el, vagy értesítsen, ha a megoldással kapcsolatos technikai probléma elhagyta a készletet.
A Step Functions Graph inspektorban egy folyamat közbeni Set Waiter munkafolyamat a következőképpen néz ki.
A Set Waiter egy példányát a Set Processor funkció elindítja minden beküldött készlethez, amely egyedi nevet ad, amely azonosítja az adott készletet. A pincér a betöltési fázisban betölti a beállított rekordot a DynamoDB táblából, és az ellenőrzési fázisban ellenőrzi, hogy az elkészült-e. Ha az Amazon Pollynak még vannak feldolgozandó feladatai, a funkció vár néhány másodpercet a várakozási fázisban, mielőtt újraindulna.
Ha a készletben minden feladatot feldolgozott az Amazon Polly, a Set Waiter az értesítési fázisba lép, amely üzenetet tesz közzé a befejezett SNS témakörhöz. Ha a közelmúltban nem történt módosítás egy folyamatban lévő készleten, a Set Waiter feltételezi, hogy valami nincs rendben, és elhagyott üzenetet tesz közzé a témában.
Tisztítsuk meg
A megoldást addig hagyhatja fiókjában, ameddig csak akarja. Ha nincs használatban, csak az Amazon S3-ban tárolt audiofájlokért és a DynamoDB táblákban lévő adatokért kell fizetni. Ha van szintetizálandó szövege, csak töltsön fel egy készletfájlt az S3 tárolóba, és a megoldás onnan veszi át. Fizetni kell a Lambda függvényhívásokért és a az Amazon Polly által ténylegesen feldolgozott karakterek. Mind az 1.1 millió karakter szintetizálása Moby Dickpéldául kevesebb, mint 5 dollárba kerül a szabványos hangok, és jóval 20 dollár alatt a jobb minőségű neurális hangokért.
Ha úgy dönt, hogy nem használja újra a megoldást, törölheti az összes erőforrást a használatával AWS felhőképződés:
Következtetés
Ebben a bejegyzésben egy szerver nélküli, eseményvezérelt megoldást írtunk le nagy mennyiségű szöveges kifejezés beküldésére az Amazon Polly számára aszinkron feldolgozásra. Ezzel a megközelítéssel alacsonyan tarthatja költségeit, ha csak egyszer fizet a szintézisért, függetlenül attól, hogy hányszor játssza le a generált hangfájlokat.
A megoldást percek alatt üzembe helyezheti fiókjában AWS SAM-alkalmazásként. Megadhatja a konvertálandó szöveget YAML-fájlokban, amelyeket készletfájloknak neveznek. Amikor egy készletfájlt feltöltenek a megoldás S3 tárolójába (akár manuálisan, akár automatikusan egy kódfolyamat segítségével), a Lambda-függvények sorozata – a Set Processor, Item Processor és Result Processor – együtt dolgozik a feladatok elküldésében Amazon Polly és gyűjtsük össze az audio fájlokat az Ön számára. Amikor az összes munka befejeződött, értesítést tesz közzé egy SNS-témában.
A megoldást nyílt forráskódú projektként fejlesztették ki a GitHubon. Örömmel fogadjuk funkciókéréseit, hibajelentéseit vagy hozzájárulásait. Próbálja ki ezt saját maga, és ossza meg velünk, mit gondol a megjegyzésekben. Ha többet szeretne megtudni arról, hogyan segíthet Önnek az Amazon Polly, látogassa meg weboldalunkat!
A szerzőkről
Jon Peterson az AWS vezető megoldási építésze. Chicagón kívül él feleségével és két gyermekével.
Prateek Jain az AWS megoldások építésze, Atlanta Georgia államban. Szenvedélyesen rajong a felhőért, és segít ügyfeleinek csodálatos megoldások kidolgozásában az AWS-en.
- '
- 100
- 7
- hozzáférés
- Fiók
- szerek
- Repülőterek
- Minden termék
- amazon
- Amazon Polly
- api
- API-k
- Alkalmazás
- alkalmazások
- építészet
- érvek
- Atlanta
- hang-
- Automatizált
- AWS
- Bogár
- épít
- busz
- hívás
- esetek
- változik
- ellenőrzése
- Ellenőrzések
- Chicago
- Gyerekek
- felhő
- kód
- Hozzászólások
- Közös
- összetevő
- tartalom
- kiadások
- Vevőszolgálat
- Ügyfelek
- dátum
- részlet
- szerkesztő
- Környezet
- esemény
- Kudarc
- Funkció
- Ingyenes
- funkció
- Games
- Grúzia
- megy
- GitHub
- Hogyan
- How To
- HTTPS
- Az emberek
- IAM
- Beleértve
- integráció
- IT
- Állások
- Nyelvek
- nagy
- Törvény
- TANUL
- vonal
- Lista
- kiszámításának
- helyi
- elhelyezkedés
- Hosszú
- fontos
- millió
- mozog
- nevek
- ideg-
- bejelentés
- számok
- nyitva
- nyílt forráskódú
- érdekében
- rendelés
- Más
- Egyéb
- Fizet
- kifejezés
- Hozzászólások
- magán
- program
- nyilvános
- Olvasás
- nyilvántartások
- Jelentések
- Tudástár
- válasz
- étterem
- Eredmények
- Kritika
- futás
- futás
- Series of
- vagy szerver
- Szolgáltatások
- készlet
- beállítás
- Megosztás
- megosztott
- Héj
- Egyszerű
- SIX
- So
- Megoldások
- költ
- kezdődött
- Állami
- tartózkodás
- tárolás
- TÖRTÉNETEK
- benyújtott
- előfizetés
- siker
- sikeres
- támogatás
- Támogatott
- rendszer
- Systems
- beszéd
- Műszaki
- A hangok
- idő
- vágány
- Frissítés
- us
- videó
- videojátékok
- Tényleges
- Hang
- HANGOK
- kötet
- várjon
- belül
- Munka
- munkafolyamat
- művek