Amazon Polly è un servizio che trasforma il testo in un parlato realistico. Consente lo sviluppo di un'intera classe di applicazioni in grado di convertire il testo in voce in più lingue.
Questo servizio può essere utilizzato da chatbot, audiolibri e altre applicazioni di sintesi vocale in combinazione con altri servizi AWS AI o machine learning (ML). Per esempio, Amazon-Lex e Amazon Polly possono essere combinati per creare un chatbot che intraprende una conversazione bidirezionale con un utente ed esegue determinate attività in base ai comandi dell'utente. Amazon Transcribe, Amazon Traduttoree Amazon Polly possono essere combinati per trascrivere il parlato in testo nella lingua di partenza, tradurlo in un'altra lingua e parlarlo.
In questo post, presentiamo un approccio interessante per evidenziare il testo mentre viene pronunciato utilizzando Amazon Polly. Questa soluzione può essere utilizzata in molte applicazioni di sintesi vocale per eseguire le seguenti operazioni:
- Aggiungi funzionalità visive all'audio in libri, siti Web e blog
- Aumenta la comprensione quando i clienti cercano di comprendere rapidamente il testo mentre viene pronunciato
La nostra soluzione offre al client (il browser, in questo esempio), la possibilità di sapere quale testo (parola o frase) viene pronunciato da Amazon Polly in qualsiasi istante. Ciò consente al cliente di evidenziare dinamicamente il testo mentre viene pronunciato. Tale funzionalità è utile per fornire un aiuto visivo al parlato per i casi d'uso menzionati in precedenza.
La nostra soluzione può essere estesa per eseguire attività aggiuntive oltre all'evidenziazione del testo. Ad esempio, il browser può mostrare immagini, riprodurre musica o eseguire altre animazioni sul front-end mentre il testo viene pronunciato. Questa funzionalità è utile per creare audiolibri dinamici, contenuti didattici e applicazioni di sintesi vocale più avanzate.
Panoramica della soluzione
Fondamentalmente, la soluzione utilizza Amazon Polly per convertire una stringa di testo in voce. Il testo può essere immesso dal browser o tramite una chiamata API all'endpoint esposto dalla nostra soluzione. Il discorso generato da Amazon Polly viene archiviato come file audio (formato MP3) in un file Servizio di archiviazione semplice Amazon (Amazon S3) secchio.
Tuttavia, utilizzando solo il file audio, il browser non riesce a trovare quali parti del testo vengono pronunciate in nessun istante perché non disponiamo di informazioni granulari su quando ogni parola viene pronunciata.
Amazon Polly fornisce un modo per ottenerlo utilizzando i segni vocali. I contrassegni vocali vengono memorizzati in un file di testo che mostra il tempo (misurato in millisecondi dall'inizio dell'audio) in cui viene pronunciata ogni parola o frase.
Amazon Polly restituisce oggetti contrassegno vocale in un flusso JSON delimitato da righe. Un oggetto contrassegno vocale contiene i seguenti campi:
- Ora – Il timestamp in millisecondi dall'inizio del flusso audio corrispondente
- Tipologia – Il tipo di marchio vocale (frase, parola, visema o SSML)
- Inizio – L'offset in byte (non caratteri) dell'inizio dell'oggetto nel testo di input (esclusi i segni del visema)
- Fine – L'offset in byte (non caratteri) dell'estremità dell'oggetto nel testo di input (esclusi i segni del visema)
- Valore – Questo varia a seconda del tipo di segno vocale:
- SSML – Tag SSML
- Visema – Il nome del visema
- Word o condanna – Una sottostringa del testo di input delimitata dai campi di inizio e fine
Ad esempio, la frase "Maria aveva un agnellino" può darti il seguente file di segni vocali se lo usi SpeechMarkTypes
= [“parola”, “frase”] nella chiamata API per ottenere i segni vocali:
La parola "had" (alla fine della riga 3) inizia 373 millisecondi dopo l'inizio del flusso audio, inizia al byte 5 e termina al byte 8 del testo di input.
Panoramica sull'architettura
L'architettura della nostra soluzione è presentata nel diagramma seguente.
Il nostro sito Web per la soluzione è memorizzato su Amazon S3 come file statici (JavaScript, HTML), che sono ospitati in Amazon CloudFront (1) e servito al browser dell'utente finale (2).
Quando l'utente inserisce del testo nel browser tramite un semplice modulo HTML, viene elaborato da JavaScript nel browser. Questo chiama un'API (3) tramite Gateway API Amazon, per invocare un AWS Lambda funzione (4). La funzione Lambda chiama Amazon Polly (5) per generare file vocali (audio) e segni vocali (JSON). Vengono effettuate due chiamate ad Amazon Polly per recuperare i file dei segni audio e vocali. Le chiamate vengono effettuate utilizzando le funzioni asincrone JavaScript. L'output di queste chiamate sono i file dei segni audio e vocali, archiviati in Amazon S3 (6a). Per evitare che più utenti sovrascrivano i file degli altri nel bucket S3, i file vengono archiviati in una cartella con un timestamp. Ciò riduce al minimo le possibilità che due utenti sovrascrivano i file degli altri in Amazon S3. Per una versione di produzione, possiamo utilizzare approcci più robusti per separare i file degli utenti in base all'ID utente o al timestamp e ad altre caratteristiche univoche.
La funzione Lambda crea URL prefirmati per i file vocali e dei segni vocali e li restituisce al browser sotto forma di un array (7, 8, 9).
Quando il browser invia il file di testo all'endpoint API (3), recupera due URL prefirmati per il file audio e il file dei segni vocali in un'unica chiamata sincrona (9). Ciò è indicato dal simbolo della chiave accanto alla freccia.
Una funzione JavaScript nel browser recupera il file dei segni vocali e l'audio dai loro handle URL (10). Imposta il lettore audio per riprodurre l'audio. (Il tag audio HTML viene utilizzato per questo scopo).
Quando l'utente fa clic sul pulsante di riproduzione, analizza i segni vocali recuperati nel passaggio precedente per creare una serie di eventi a tempo utilizzando i timeout. Gli eventi richiamano una funzione di callback, che è un'altra funzione JavaScript utilizzata per evidenziare il testo pronunciato nel browser. Contemporaneamente, la funzione JavaScript esegue lo streaming del file audio dal suo handle URL.
Il risultato è che gli eventi vengono eseguiti nei momenti appropriati per evidenziare il testo mentre viene pronunciato durante la riproduzione dell'audio. L'uso dei timeout JavaScript ci fornisce la sincronizzazione dell'audio con il testo evidenziato.
Prerequisiti
Per eseguire questa soluzione, è necessario un file Account AWS con Gestione dell'identità e dell'accesso di AWS (IAM) utente autorizzato a utilizzare Amazon CloudFront, Amazon API Gateway, Amazon Polly, Amazon S3, AWS Lambda e AWS Step Functions.
Usa Lambda per generare segni vocali e vocali
Il codice seguente richiama Amazon Polly synthesize_speech
funzione due volte per recuperare il file dei segni audio e vocali. Vengono eseguiti come funzioni asincrone e coordinati per restituire il risultato contemporaneamente utilizzando le promesse.
Sul lato JavaScript, l'evidenziazione del testo viene eseguita da evidenziatore (inizio, fine, parola) e gli eventi a tempo sono impostati da setTimers()
:
Approcci alternativi
Invece dell'approccio precedente, puoi considerare alcune alternative:
- Crea sia i segni vocali che i file audio all'interno di una macchina a stati Step Functions. La macchina a stati può richiamare la condizione del ramo parallelo per richiamare due diverse funzioni Lambda: una per generare il parlato e un'altra per generare i segni del parlato. Il codice per questo può essere trovato nel file utilizzando le funzioni passo-passo sottocartella nel repository Github.
- Richiama Amazon Polly in modo asincrono per generare i contrassegni audio e vocali. Questo approccio può essere utilizzato se il contenuto del testo è di grandi dimensioni o se l'utente non ha bisogno di una risposta in tempo reale. Per ulteriori dettagli sulla creazione di file audio lunghi, fare riferimento a Creazione di file audio lunghi.
- Chiedi a Amazon Polly di creare direttamente l'URL prefirmato utilizzando il file
generate_presigned_url
chiama il client Amazon Polly in Boto3. Se segui questo approccio, Amazon Polly genera nuovi contrassegni audio e vocali ogni volta. Nel nostro approccio attuale, memorizziamo questi file in Amazon S3. Sebbene questi file archiviati non siano accessibili dal browser nella nostra versione del codice, puoi modificare il codice per riprodurre file audio generati in precedenza recuperandoli da Amazon S3 (invece di rigenerare nuovamente l'audio per il testo utilizzando Amazon Polly). Abbiamo di più esempi di codice per accedere ad Amazon Polly con Python nella libreria del codice AWS.
Crea la soluzione
L'intera soluzione è disponibile presso il ns Repository Github. Per creare questa soluzione nel tuo account, segui le istruzioni nel file README.md. La soluzione include un AWS CloudFormazione modello per il provisioning delle risorse.
Pulire
Per ripulire le risorse create in questa demo, procedi come segue:
- Elimina i bucket S3 creati per archiviare il modello CloudFormation (Bucket A), il codice sorgente (Bucket B) e il sito Web (
pth-cf-text-highlighter-website-[Suffix]
). - Elimina lo stack CloudFormation
pth-cf
. - Elimina il bucket S3 contenente i file vocali (
pth-speech-[Suffix]
). Questo bucket è stato creato dal modello CloudFormation per archiviare i file dei contrassegni audio e vocali generati da Amazon Polly.
Sommario
In questo post, abbiamo mostrato un esempio di una soluzione in grado di evidenziare il testo mentre viene pronunciato utilizzando Amazon Polly. È stato sviluppato utilizzando la funzione dei segni vocali di Amazon Polly, che ci fornisce marcatori per il punto in cui ogni parola o frase inizia in un file audio.
La soluzione è disponibile come modello CloudFormation. Può essere distribuito così com'è a qualsiasi applicazione Web che esegue la conversione da testo a voce. Ciò sarebbe utile per aggiungere funzionalità visive all'audio in libri, avatar con funzionalità di sincronizzazione labiale (utilizzando segni vocali visemi), siti Web e blog e per aiutare le persone con problemi di udito.
Può essere esteso per eseguire attività aggiuntive oltre a evidenziare il testo. Ad esempio, il browser può mostrare immagini, riprodurre musica ed eseguire altre animazioni sul front-end mentre viene pronunciato il testo. Questa funzionalità può essere utile per creare audiolibri dinamici, contenuti educativi e applicazioni di sintesi vocale più avanzate.
Ti invitiamo a provare questa soluzione e a saperne di più sui servizi AWS pertinenti dai seguenti link. È possibile estendere la funzionalità per le proprie esigenze specifiche.
L'autore
Varad G. Varadarajan è un Trusted Advisor e Field CTO per i clienti Digital Native Businesses (DNB) di AWS. Li aiuta a progettare e creare soluzioni innovative su larga scala utilizzando prodotti e servizi AWS. Le aree di interesse di Varad sono la consulenza strategica IT, l'architettura e la gestione dei prodotti. Al di fuori del lavoro, Varad ama scrivere in modo creativo, guardare film con la famiglia e gli amici e viaggiare.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Automobilistico/VE, Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- BlockOffset. Modernizzare la proprietà della compensazione ambientale. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/highlight-text-as-its-being-spoken-using-amazon-polly/
- :ha
- :È
- :non
- $ SU
- 1
- 10
- 100
- 11
- 12
- 17
- 19
- 22
- 23
- 33
- 7
- 8
- 9
- a
- capacità
- Chi siamo
- accesso
- accessibile
- Accedendo
- Il mio account
- l'aggiunta di
- aggiuntivo
- consulente
- Dopo shavasana, sedersi in silenzio; saluti;
- ancora
- AI
- aiuto
- da solo
- alternative
- Sebbene il
- Amazon
- Gateway API Amazon
- Amazon Polly
- Amazon Web Services
- an
- ed
- animazioni
- Un altro
- in qualsiasi
- api
- Applicazioni
- applicazioni
- approccio
- approcci
- opportuno
- architettura
- SONO
- aree
- Italia
- AS
- At
- Audio
- disponibile
- avatars
- evitare
- attendere
- AWS
- AWS Lambda
- Funzioni AWS Step
- precedente
- basato
- BE
- perché
- Inizio
- essendo
- oltre a
- blog
- Libri
- entrambi
- Branch di società
- del browser
- costruire
- aziende
- pulsante
- by
- chiamata
- Bandi
- Materiale
- funzionalità
- capacità
- casi
- certo
- probabilità
- caratteristiche
- caratteri
- chatbot
- chatbots
- classe
- cliente
- codice
- combinato
- condizione
- congiunzione
- Prendere in considerazione
- consolle
- consulting
- contiene
- contenuto
- continua
- Conversazione
- Conversione
- convertire
- coordinato
- Nucleo
- Corrispondente
- creare
- creato
- crea
- Creazione
- Creative
- CTO
- Corrente
- Clienti
- dimostrazione
- Dipendente
- schierato
- dettagli
- sviluppato
- Mercato
- diverso
- digitale
- direttamente
- DNB
- do
- documento
- non
- fatto
- Dont
- dinamico
- dinamicamente
- ogni
- In precedenza
- educativo
- Abilita
- fine
- endpoint
- finisce
- impegna
- entra
- Intero
- errore
- eventi
- Ogni
- esempio
- Esempi
- esposto
- estendere
- famiglia
- caratteristica
- pochi
- campo
- campi
- Compila il
- File
- Trovare
- finire
- seguire
- i seguenti
- Nel
- modulo
- formato
- essere trovato
- amici
- da
- anteriore
- Fine frontale
- function
- funzionalità
- funzioni
- porta
- generare
- generato
- genera
- GitHub
- Dare
- dà
- Go
- ha avuto
- maniglia
- Maniglie
- Avere
- he
- udito
- aiuta
- Highlight
- Evidenziato
- mettendo in evidenza
- ospitato
- HTML
- http
- HTTPS
- i
- ID
- Identità
- if
- immagini
- in
- inclusi
- Compreso
- indicato
- informazioni
- creativi e originali
- ingresso
- interno
- immediato
- invece
- istruzioni
- interesse
- interessante
- ai miglioramenti
- invoca
- IT
- SUO
- JavaScript
- json
- Le
- Sapere
- Lingua
- Le Lingue
- grandi
- IMPARARE
- apprendimento
- Lunghezza
- lasciare
- Biblioteca
- linea
- Collegamento
- piccolo
- Lunghi
- macchina
- machine learning
- fatto
- gestione
- molti
- marchio
- menzionato
- ML
- modificare
- Scopri di più
- Film
- multiplo
- Musica
- nativo
- Bisogno
- esigenze
- New
- recentemente
- GENERAZIONE
- oggetto
- oggetti
- ottenere
- of
- offset
- on
- ONE
- or
- Altro
- nostro
- su
- produzione
- al di fuori
- Parallel
- Ricambi
- Persone
- Eseguire
- esegue
- autorizzazione
- posto
- Platone
- Platone Data Intelligence
- PlatoneDati
- Giocare
- giocato
- giocatore
- Post
- presenti
- presentata
- precedente
- in precedenza
- Elaborato
- Prodotto
- gestione del prodotto
- Produzione
- Prodotti
- PROMETTIAMO
- promette
- fornisce
- fornitura
- fornitura
- scopo
- rapidamente
- tempo reale
- rilasciare
- pertinente
- Risorse
- risposta
- colpevole
- ritorno
- problemi
- robusto
- Correre
- s
- stesso
- Scala
- invia
- condanna
- Serie
- servizio
- Servizi
- set
- Set
- mostrare attraverso le sue creazioni
- ha mostrato
- Spettacoli
- lato
- Un'espansione
- contemporaneamente
- soluzione
- Soluzioni
- Fonte
- codice sorgente
- parlare
- specifico
- discorso
- parlato
- pila
- inizia a
- inizio
- Regione / Stato
- step
- Passi
- conservazione
- Tornare al suo account
- memorizzati
- Strategia
- ruscello
- flussi
- Corda
- tale
- simbolo
- dati
- TAG
- task
- modello
- Text-to-Speech
- che
- I
- L’ORIGINE
- Lo Stato
- loro
- Li
- Strumenti Bowman per analizzare le seguenti finiture:
- questo
- Attraverso
- tempo
- Timed
- volte
- timestamp
- a
- tradurre
- Di viaggio
- di fiducia
- prova
- si
- seconda
- Digitare
- capire
- unico
- URL
- us
- uso
- utilizzato
- Utente
- utenti
- usa
- utilizzando
- APPREZZIAMO
- Valori
- versione
- Prima
- guardare
- Modo..
- we
- sito web
- applicazione web
- servizi web
- Sito web
- siti web
- il benvenuto
- Che
- quando
- quale
- while
- OMS
- tutto
- con
- Word
- Lavora
- sarebbe
- scrittura
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro