Amazon Polly è un servizio che trasforma il testo in parlato dal suono naturale, utilizzando decine di voci in più di 30 lingue. Puoi usarlo per tutti i tipi di applicazioni, dagli avatar animati parlanti, agli agenti virtuali realistici che rispondono alle richieste di assistenza clienti, ai giornalisti automatizzati che leggono storie ad alta voce. Puoi fare in modo che Amazon Polly restituisca il discorso sintetizzato come streaming live o scaricarlo come file audio standard per riprodurlo in un secondo momento. Come molti servizi AWS, paghi solo per ciò che effettivamente utilizzi: con Amazon Polly paghi il numero di caratteri nella frase sintetizzata. La semplice riproduzione di un file audio salvato è gratuita, sia che tu lo riproduca una sola volta o più volte.
Se sai esattamente quali frasi ti servono in anticipo, puoi ottimizzare la tua spesa AWS. Prendi semplicemente ogni frase che ti serve doppiata e inviala ad Amazon Polly in fase di creazione, archiviando il file audio generato finché non sei pronto per riprodurlo in fase di runtime. I casi d'uso comuni per questo approccio includono sistemi di diffusione sonora negli aeroporti o nelle stazioni degli autobus, videogiochi e sistemi di ordinazione automatizzati per ristoranti a servizio rapido. Basta pagare una volta per sintetizzare il testo e quindi riprodurre gratuitamente i file audio risultanti secondo necessità.
In questo post condividiamo una soluzione serverless, completamente automatizzata, basata sugli eventi che puoi utilizzare per trasformare in modo asincrono un gran numero di frasi di testo in discorsi realistici. Puoi attivare i lavori caricando manualmente un file di frasi su un privato Servizio di archiviazione semplice Amazon (Amazon S3) e riceverai una notifica tramite e-mail o messaggio istantaneo quando saranno pronti. Oppure rendi il processo parte del tuo AWSCodeBuild sistema di integrazione continua, attivando automaticamente il lavoro di sintesi ogni volta che le frasi sorgente cambiano.
Panoramica della soluzione
La soluzione è completamente serverless e consiste principalmente di un insieme di file AWS Lambda funzioni. Queste funzioni tengono traccia degli elementi da sintetizzare. Inviali ad Amazon Polly per la sintesi ed elabora i risultati man mano che vengono completati. Le funzioni utilizzano shared Amazon DynamoDB tabelle per gestire lo stato dei lavori nel tempo. UN Funzioni AWS Step il flusso di lavoro tiene traccia di ogni set inviato e notifica alle parti interessate il suo completamento tramite un Servizio di notifica semplice Amazon Argomento (Amazon SNS).
La soluzione impiega un architettura guidata dagli eventi: anziché un singolo processo in esecuzione dall'inizio alla fine, il processo è distribuito tra invocazioni Lambda, eseguito solo quando attivato da qualche evento.
Il diagramma seguente illustra l'architettura della soluzione.
Distribuire e configurare la soluzione
Distribuisci la soluzione nel tuo account AWS utilizzando il file Modello di applicazione serverless AWS (AWS-SAM). Puoi farlo da qualsiasi computer con accesso alla riga di comando al tuo account, ma per semplicità utilizziamo AWS CloudShell.
- Accedi alla console CloudShell.
- Una volta inizializzata la shell, crea una copia locale del codice sorgente della soluzione e prepara lo stack AWS SAM immettendo i seguenti comandi:
- Utilizza AWS SAM per distribuire la soluzione, con deploy –guided. Fornire un nome di stack (come
amazon-polly-async-batch
), la tua regione preferita, un indirizzo email per le notifiche e il nome di un bucket S3 inesistente per i file audio generati. Accetta le altre impostazioni predefinite.
La distribuzione di tutti i componenti dovrebbe richiedere solo pochi minuti. Se l'installazione ha esito positivo, dovresti visualizzare un messaggio simile al seguente:
- Controlla se nella tua email è presente un messaggio da Amazon SNS e conferma l'abbonamento.
Come funziona la soluzione
In questa sezione descriviamo in dettaglio come utilizzare la soluzione per sintetizzare il testo e come funziona ciascun componente principale.
Il file impostato: specifica del testo da sintetizzare
Puoi definire l'insieme di frasi di testo che desideri che Amazon Polly esprima in un file denominato a impostare il file. Questo è un File YAML costituito dai dettagli impostati, da una raccolta di impostazioni predefinite e da un elenco di elementi da sintetizzare:
- Imposta dettagli – Nella stanza set, dai al set un nome per differenziarlo dagli altri e un prefisso di output opzionale per indicare alla soluzione dove desideri archiviare i file audio nel tuo bucket S3.
- Impostazioni predefinite – Nella sezione predefinita opzionale è possibile fornire ai parametri valori specifici applicabili a meno che non vengano sovrascritti da elementi specifici. Sono supportati i seguenti attributi, come documentato nell'API Amazon Polly:
- motore - O
standard
orneural
; il valore predefinito èneural
- codice-lingua – Una qualsiasi delle oltre 20 lingue supportate; il valore predefinito è
en-US
- formato di output -
mp3
,ogg_vorbis
, opcm
; il valore predefinito èmp3
- tipo di testo - O
text
orSSML
; il valore predefinito ètext
- ID vocale – Una qualsiasi delle voci supportate; il valore predefinito è
Matthew
- motore - O
- articoli – La raccolta di elementi è semplicemente un elenco di stringhe di testo da sintetizzare. Amazon Polly converte il testo di ogni elemento in voce, utilizzando le impostazioni predefinite più eventuali sostituzioni fornite nell'elemento e inserisce i file risultanti nel bucket S3 nella cartella del prefisso di output del set. Se specifichi un file di output, il file viene denominato come specificato; in caso contrario, la soluzione assegna al file un nome in base al contenuto e all'ordine nella raccolta.
Ad esempio, se vuoi sintetizzare sei righe dell'Atto 1, Scena 1 di Romeo e Giulietta, potresti utilizzare un file YAML simile al seguente codice:
Questo set specifica che Amazon Polly dovrebbe sintetizzare sei righe dell'opera. Per rappresentare i personaggi Abraham, Sampson e Gregory, utilizziamo le voci Joey, Matthew e Brian. Con Amazon Polly, puoi specificare volume e tono, come quando Abraham enfatizza la parola “noi” e per le parti di Sampson e Gregory, che vengono sussurrate; per Effetti SSML come questi, specifichiamo semplicemente che il text-type
is ssml
e decorare l'enunciato in modo appropriato.
Poiché nessuno degli elementi specifica un file di output, i nomi dei file vengono generati automaticamente. In questo esempio, i file MP3 generati sono act-1-scene-1/item-000000-do-you-bite-your-thumb-at-us-sir.mp3
attraverso act-1-scene-1/item-000005-no-sir-i-do-not-bite-my-thumb-at-you-sir.mp3
.
Questo file di set (e altri) si trovano nel formato docs/samples
directory del codice. In CloudShell, puoi inviare questo file ad Amazon Polly semplicemente caricandolo nel bucket S3 specificato in precedenza:
Amazon Polly sintetizza le sei righe del file. Quando tutte le linee sono state sintetizzate, riceverai una notifica via email:
YAML può essere creato in qualsiasi editor, è facile da leggere per gli esseri umani ed è facile da controllare nei sistemi di controllo del codice sorgente come AWS CodeCommit. Tuttavia, il file impostato deve essere un file di puro testo, deve avere l'estensione .yml e deve essere YAML valido.
La funzione Imposta processore
Quando un file con a .yml
viene caricata nel bucket S3, la funzione Set Processor Lambda avvia il processo. Analizza il file impostato e crea un record corrispondente in DynamoDB. Questo record del set viene utilizzato per tenere traccia di quanti elementi sono presenti nel set, quanti devono ancora essere completati e quando è iniziata l'elaborazione del set.
Quindi, per ciascun elemento della raccolta, la funzione Imposta processore invia un messaggio, una sorta di ordine di lavoro, al sistema della soluzione. Servizio Amazon Simple Queue (Amazon SQS). Questo ordine di lavoro è un documento JSON che include tutto ciò di cui Amazon Polly ha bisogno per sintetizzare il testo secondo le istruzioni nel file di set caricato.
Ogni messaggio è completamente indipendente dagli altri, quindi il lavoro di sintesi può essere svolto da Amazon Polly contemporaneamente e non importa in quale ordine vengono completati. Anche il nome del set fa parte dell'ordine di lavoro, pertanto la soluzione può elaborare più set (o anche più istanze dello stesso set) contemporaneamente.
La funzione Elaboratore articolo
La funzione Lambda Item Processor utilizza i messaggi dalla coda SQS e pubblica il lavoro su Amazon Polly.
Ogni messaggio rappresenta un singolo file audio che Amazon Polly può creare. La funzione chiama il metodo API Avvia attività di sintesi vocale, utilizzando i valori nell'ordine di lavoro come argomenti per i parametri del metodo. Si tratta di una chiamata API asincrona, quindi non abbiamo garanzie su quando Amazon Polly genererà effettivamente il file audio per noi; ma una volta completato, Amazon Polly pubblica un messaggio SNS che deve essere gestito dalla successiva funzione Lambda, il processore di risposta.
La funzione Item Processor aggiunge anche un record alla tabella degli articoli in DynamoDB, in modo che la soluzione possa tenere traccia di quali articoli sono stati completati con successo e quali non lo sono ancora stati.
Come molte API AWS, ce ne sono limiti al numero di chiamate API che puoi effettuare ad Amazon Polly al secondo. La funzione Elaboratore articolo è limitata per rimanere entro limiti ragionevoli indietreggia esponenzialmente e riprova secondo necessità in modo da pubblicare il lavoro rimanendo comunque entro i limiti del servizio del tuo account.
La funzione Processore di risposta
Quando Amazon Polly ha completato il lavoro su una richiesta specifica, pubblica una notifica nell'argomento della risposta SNS. Questo viene immediatamente rilevato dall'ultima funzione Lambda nella sequenza, il Response Processor. Questa funzione è responsabile dell'aggiornamento dell'elemento e dei record del set in DynamoDB e della ridenominazione del file audio in Amazon S3 con il nome file richiesto.
Se Amazon Polly ha segnalato il successo nella sintesi del file audio, la funzione Response Processor sposta semplicemente il file nella sua posizione finale. Aggiorna il record dell'articolo taskStatus
a success
e incrementa il success
contatore nel record impostato. Se Amazon Polly segnala un errore, la funzione aggiorna il record dell'articolo con il motivo dell'errore e incrementa il file failed
contatore nel record impostato.
Il flusso di lavoro Imposta cameriere
Per riassumere, ciascuna di queste funzioni Lambda viene eseguita solo quando attivata da un evento:
- Il Set Processor viene attivato quando un file di set viene caricato nel bucket S3
- L'elaboratore articoli viene attivato quando gli ordini di lavoro compaiono nella coda SQS
- Il processore di risposta viene attivato quando Amazon Polly pubblica un messaggio nell'argomento SNS
Queste funzioni possono essere eseguite contemporaneamente, elaborando più elementi da più set contemporaneamente. Senza un processo di orchestrazione, come facciamo a sapere quando un set specifico è completo? Come facciamo a sapere se qualcosa è andato storto?
Il Set Waiter è un flusso di lavoro Step Functions che ha il compito di osservare un set specifico per decidere quando è finito o per avvisare se un problema tecnico con la soluzione ha lasciato il set abbandonato.
Nell'ispettore Grafico Funzioni passo, un flusso di lavoro Imposta cameriere in-process è simile al seguente.
Un'istanza del Set Waiter viene avviata dalla funzione Set Processor per ogni set inviato, che trasmette un nome univoco che identifica quel set. Il cameriere carica il record impostato dalla tabella DynamoDB nella fase di caricamento e controlla se è completo nella fase di controllo. Se Amazon Polly ha ancora attività da elaborare, la funzione attende alcuni secondi nella fase di attesa prima di riavviarsi.
Se ogni attività del set è stata elaborata da Amazon Polly, il Set Waiter passa alla fase di notifica, che pubblica un messaggio nell'argomento SNS di completamento. Se non sono state apportate modifiche di recente a un set in elaborazione, il Set Waiter presume che qualcosa non va e pubblica un messaggio abbandonato nell'argomento.
ripulire
Puoi lasciare la soluzione nel tuo account per tutto il tempo che desideri. Quando non lo utilizzi, paghi solo per l'archiviazione dei file audio in Amazon S3 e per i dati nelle tabelle DynamoDB. Quando hai del testo da sintetizzare, carica semplicemente un file impostato nel bucket S3 e la soluzione lo prenderà da lì. Paghi per le invocazioni della funzione Lambda e il caratteri effettivamente elaborati da Amazon Polly. Sintetizzando tutti gli 1.1 milioni di caratteri in Moby Dick, ad esempio, costa meno di 5 dollari per le voci standard e ben meno di 20 dollari per le voci neurali di qualità superiore.
Se decidi di non utilizzare più la soluzione, puoi eliminare tutte le sue risorse utilizzando AWS CloudFormazione:
Conclusione
In questo post abbiamo descritto una soluzione serverless e basata sugli eventi per l'invio di grandi quantità di frasi di testo affinché Amazon Polly possa elaborarle in modo asincrono. Con questo approccio, puoi mantenere bassi i costi pagando una sola volta per la sintesi, indipendentemente da quante volte riproduci i file audio generati.
Puoi distribuire la soluzione sul tuo account in pochi minuti come applicazione AWS SAM. Specifica il testo da convertire in file YAML chiamati set file. Quando un file di set viene caricato nel bucket S3 della soluzione (manualmente da un essere umano o automaticamente da una pipeline di codice), una serie di funzioni Lambda (Set Processor, Item Processor e Result Processor) lavorano insieme per inviare le attività a Amazon Polly e raccogli i file audio per te. Una volta completato tutto il lavoro, viene pubblicata una notifica su un argomento SNS.
La soluzione è sviluppata come progetto open source su GitHub. Accogliamo con favore le vostre richieste di funzionalità, segnalazioni di bug o contributi. Provalo tu stesso e facci sapere cosa ne pensi nei commenti. Per ulteriori informazioni su come Amazon Polly può aiutarti, visita la nostra pagina web!
Informazioni sugli autori
Jon Peterson è un Senior Solutions Architect presso AWS. Vive fuori Chicago con sua moglie e due figli.
Pratek Jain è un Solutions Architect presso AWS, con sede ad Atlanta, Georgia. È appassionato di cloud e aiuta i clienti a creare soluzioni straordinarie su AWS.
- '
- 100
- 7
- accesso
- Il mio account
- agenti
- aeroporti
- Tutti
- Amazon
- Amazon Polly
- api
- API
- Applicazioni
- applicazioni
- architettura
- argomenti
- Atlanta
- Audio
- Automatizzata
- AWS
- Insetto
- costruire
- autobus
- chiamata
- casi
- il cambiamento
- verifica
- Controlli
- Chicago
- Bambini
- Cloud
- codice
- Commenti
- Uncommon
- componente
- testuali
- Costi
- Assistenza clienti
- Clienti
- dati
- dettaglio
- editore
- Ambiente
- Evento
- Fallimento
- caratteristica
- Gratis
- function
- Giochi
- Georgia
- Idiota
- GitHub
- Come
- Tutorial
- HTTPS
- Gli esseri umani
- IAM
- Compreso
- integrazione
- IT
- Offerte di lavoro
- Le Lingue
- grandi
- Legge
- IMPARARE
- linea
- Lista
- caricare
- locale
- località
- Lunghi
- maggiore
- milione
- si muove
- nomi
- Neurale
- notifica
- numeri
- aprire
- open source
- minimo
- ordini
- Altro
- Altri
- Paga le
- Frasi
- Post
- un bagno
- progetto
- la percezione
- Lettura
- record
- Report
- Risorse
- risposta
- al Deck ristorante
- Risultati
- recensioni
- Correre
- running
- Serie
- serverless
- Servizi
- set
- regolazione
- Condividi
- condiviso
- Conchiglia
- Un'espansione
- SIX
- So
- Soluzioni
- spendere
- iniziato
- Regione / Stato
- soggiorno
- conservazione
- Storie
- presentata
- sottoscrizione
- il successo
- di successo
- supporto
- supportato
- sistema
- SISTEMI DI TRATTAMENTO
- parlando
- Consulenza
- Le voci
- tempo
- pista
- Aggiornamenti
- us
- Video
- video games
- virtuale
- Voce
- VOCI
- volume
- aspettare
- entro
- Lavora
- flusso di lavoro
- lavori