Immagina un chirurgo che effettua videochiamate con pazienti in tutto il mondo senza la necessità di un traduttore umano. E se una startup alle prime armi potesse facilmente espandere il proprio prodotto oltre i confini e in nuovi mercati geografici offrendo assistenza e vendite fluide, accurate e multilingue, il tutto senza la necessità di un traduttore umano dal vivo? Cosa succede alla tua attività quando non sei più vincolato dalla lingua?
Oggigiorno è comune avere riunioni virtuali con team internazionali e clienti che parlano molte lingue diverse. Che si tratti di riunioni interne o esterne, il significato spesso si perde in discussioni complesse e potresti incontrare barriere linguistiche che ti impediscono di essere efficace quanto potresti essere.
In questo post imparerai come utilizzare tre servizi AWS completamente gestiti (Amazon Transcribe, Amazon Traduttoree Amazon Polly) per produrre una soluzione di traduzione vocale quasi in tempo reale in grado di tradurre rapidamente l'input vocale dal vivo di un oratore sorgente in una lingua di destinazione parlata, accurata e tradotta, il tutto senza esperienza di apprendimento automatico (ML).
Panoramica della soluzione
Il nostro traduttore è composto da tre servizi AWS ML completamente gestiti che lavorano insieme in un unico script Python utilizzando il SDK AWS per Python (Boto3) per la nostra traduzione di testo e porzioni di sintesi vocale e un SDK di streaming asincrono per la trascrizione dell'input audio.
Amazon Transcribe: streaming vocale in testo
Il primo servizio che utilizzi nel nostro stack è Amazon Transcribe, un servizio di sintesi vocale completamente gestito che accetta la voce di input e la trascrive in testo. Amazon Transcribe dispone di metodi di importazione flessibili, batch o streaming, perché accetta file audio archiviati o dati audio in streaming. In questo post, usi il asincrono Amazon Transcribe streaming SDK per Python, che utilizza il protocollo di streaming HTTP/2 per lo streaming di audio dal vivo e la ricezione di trascrizioni in tempo reale.
Quando abbiamo creato questo prototipo per la prima volta, l'importazione in streaming di Amazon Transcribe non supportava il rilevamento automatico della lingua, ma non è più così a partire da novembre 2021. Sia l'importazione in batch che quella in streaming ora supportano il rilevamento automatico della lingua per tutti lingue supportate. In questo post, mostriamo come una soluzione basata su parametri attraverso un design multilingua senza parametri è possibile attraverso l'uso del rilevamento automatico della lingua in streaming. Dopo che il nostro segmento vocale trascritto è stato restituito come testo, invii una richiesta ad Amazon Translate per tradurre e restituire i risultati nel nostro Amazon Transcribe EventHandler
metodo.
Amazon Translate: API di traduzione all'avanguardia e completamente gestita
Il prossimo nel nostro stack è Amazon Translate, un servizio di traduzione automatica neurale che offre traduzioni linguistiche veloci, di alta qualità, convenienti e personalizzabili. A partire da giugno 2022, Amazon Translate supporta la traduzione in 75 lingue, con nuove coppie linguistiche e miglioramenti costantemente apportati. Amazon Translate utilizza modelli di deep learning ospitati su un'architettura AWS Cloud altamente scalabile e resiliente per fornire rapidamente traduzioni accurate in tempo reale o in batch, a seconda del caso d'uso. L'utilizzo di Amazon Translate è semplice e non richiede la gestione dell'architettura sottostante o delle competenze di machine learning. Amazon Translate ha diverse funzionalità, come la creazione e l'utilizzo di a terminologia personalizzata per gestire la mappatura tra termini specifici del settore. Per ulteriori informazioni sui limiti del servizio Amazon Translate, fare riferimento a Linee guida e limiti. Dopo che l'applicazione ha ricevuto il testo tradotto nella nostra lingua di destinazione, invia il testo tradotto ad Amazon Polly per la riproduzione immediata dell'audio tradotto.
Amazon Polly: API di sintesi vocale completamente gestita
Infine, invii il testo tradotto ad Amazon Polly, un servizio di sintesi vocale completamente gestito che può inviare risposte di clip audio realistiche per la riproduzione immediata in streaming o raggruppate e salvate in Servizio di archiviazione semplice Amazon (Amazon S3) per un uso successivo. Puoi controllare vari aspetti del parlato come pronuncia, volume, tono, velocità del parlato e altro usando standardizzato Linguaggio di sintesi vocale Markup (SSML).
Puoi sintetizzare il parlato per determinati Amazon Polly Voci neurali usando lo stile Newscaster per farli suonare come un giornalista televisivo o radiofonico. Puoi anche rilevare quando vengono pronunciate parole o frasi specifiche nel testo in base ai metadati inclusi nel flusso audio. Ciò consente allo sviluppatore di sincronizzare l'evidenziazione grafica e le animazioni, come i movimenti delle labbra di un avatar, con il discorso sintetizzato.
È possibile modificare la pronuncia di parole particolari, come nomi di società, acronimi, parole straniere o neologismi, ad esempio "P!nk", "ROTFL" o "C'est la vie" (se pronunciate in un voce), utilizzando lessici personalizzati.
Panoramica sull'architettura
Il diagramma seguente illustra l'architettura della nostra soluzione.
Il flusso di lavoro è il seguente:
- L'audio viene acquisito dall'SDK Python.
- Amazon Polly converte il parlato in testo, in 39 lingue possibili.
- Amazon Translate converte le lingue.
- Amazon Live Transcribe converte il testo in voce.
- L'audio viene trasmesso agli altoparlanti.
Prerequisiti
È necessaria una macchina host configurata con microfono, altoparlanti e una connessione Internet affidabile. Un laptop moderno dovrebbe funzionare bene per questo perché non è necessario hardware aggiuntivo. Successivamente, è necessario configurare la macchina con alcuni strumenti software.
Devi avere Python 3.7+ installato per utilizzare l'SDK di streaming asincrono Amazon Transcribe e per un modulo Python chiamato pyaudio
, che utilizzi per controllare il microfono e gli altoparlanti della macchina. Questo modulo dipende da una libreria C chiamata portaudio.h
. Se riscontri problemi con pyaudio
errori, ti suggeriamo di controllare il tuo sistema operativo per vedere se hai il portaudio.h
libreria installata.
Per l'autorizzazione e l'autenticazione delle chiamate di servizio, si crea un file Gestione dell'identità e dell'accesso di AWS (IAM) ruolo del servizio con autorizzazioni per chiamare i servizi AWS necessari. Configurando il Interfaccia della riga di comando di AWS (AWS CLI) con questo ruolo del servizio IAM, puoi eseguire il nostro script sulla tua macchina senza dover passare chiavi o password, perché le librerie AWS sono scritte per utilizzare le credenziali utente dell'AWS CLI configurata. Questo è un metodo conveniente per la prototipazione rapida e garantisce che i nostri servizi vengano chiamati da un'identità autorizzata. Come sempre, segui il principio del privilegio minimo durante l'assegnazione delle policy IAM durante la creazione di un utente o ruolo IAM.
Per riassumere, sono necessari i seguenti prerequisiti:
- Un PC, Mac o macchina Linux con microfono, altoparlanti e connessione a Internet
- I
portaudio.h
Libreria C per il tuo sistema operativo (brew, apt get, wget), necessaria per il funzionamento di pyaudio - AWS CLI 2.0 con un utente IAM correttamente autorizzato configurato eseguendo aws configure nell'AWS CLI
- Pitone 3.7+
- Amazon Transcribe Python SDK asincrono
- Le seguenti librerie Python:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
Implementa la soluzione
Farai molto affidamento sull'SDK di streaming asincrono Amazon Transcribe per Python come punto di partenza e costruirai su quell'SDK specifico. Dopo aver sperimentato l'SDK di streaming per Python, aggiungi microfono in streaming input usando pyaudio
, una libreria open source Python di uso comune utilizzata per manipolare i dati audio. Quindi aggiungi le chiamate Boto3 ad Amazon Translate e Amazon Polly per la nostra funzionalità di traduzione e sintesi vocale. Infine, riproduci in streaming il parlato tradotto attraverso gli altoparlanti del computer pyaudio
. Il modulo Python concurrent
ti dà la possibilità di eseguire codice di blocco nel proprio thread asincrono per riprodurre il discorso Amazon Polly restituito in modo semplice e non bloccante.
Importiamo tutti i moduli necessari, trascriviamo classi di streaming e istanziamo alcuni globali:
Per prima cosa, usi pyaudio
per ottenere la frequenza di campionamento, l'indice del dispositivo e il conteggio dei canali del dispositivo di input:
Se non funziona, puoi anche scorrere e stampare i tuoi dispositivi come mostrato nel codice seguente, quindi utilizzare l'indice del dispositivo per recuperare le informazioni sul dispositivo con pyaudio
:
Usate channel_count
, sample_rate
e dev_index
come parametri in un flusso microfonico. Nella funzione di callback di quel flusso, usi un file asyncio
callback thread-safe non bloccante per inserire i byte di input del flusso del microfono in un file asyncio
coda di input. Prendi nota degli oggetti loop e input_queue creati con asyncio
e come vengono utilizzati nel codice seguente:
Ora quando la funzione del generatore mic_stream()
viene chiamato, restituisce continuamente byte di input fintanto che sono presenti dati di input del microfono nella coda di input.
Ora che sai come ottenere byte di input dal microfono, diamo un'occhiata a come scrivere byte audio di output Amazon Polly su un flusso di output di altoparlanti:
Ora espandiamo ciò che hai costruito nel post Amazon Transcribe Streaming SDK asincrono per Python. Nel codice seguente, crei un oggetto executor usando ThreadPoolExecutor
sottoclasse con tre lavoratori simultanei. Quindi aggiungi una chiamata Amazon Translate alla trascrizione restituita finalizzata in EventHandler e passi il testo tradotto, l'oggetto executor e il nostro aws_polly_tts()
funzione in un asyncio
loop con loop.run_in_executor()
, che esegue la nostra funzione Amazon Polly (con testo di input tradotto) in modo asincrono all'inizio dell'iterazione successiva del asyncio
ciclo continuo.
Finalmente, abbiamo il loop_me()
funzione. In esso, tu definisci write_chunks()
, che accetta un flusso Amazon Transcribe come argomento e scrive in modo asincrono blocchi di input del microfono in streaming su di esso. Quindi usi MyEventHandler()
con il flusso di trascrizione di output come argomento e creare un oggetto gestore. Quindi usi wait con asyncio.gather()
e passa write_chunks() e handler con il metodo handle_events() per gestire gli eventuali futuri di queste coroutine. Infine, raccogli tutti i loop di eventi e esegui il loop loop_me()
funzione con run_until_complete()
. Vedi il seguente codice:
Quando il codice precedente viene eseguito insieme senza errori, puoi parlare nel microfono e ascoltare rapidamente la tua voce tradotta in cinese mandarino. La funzione di rilevamento automatico della lingua per Amazon Transcribe e Amazon Translate traduce qualsiasi lingua di input supportata nella lingua di destinazione. Puoi parlare per un po' di tempo e, a causa della natura non bloccante delle chiamate di funzione, tutto il tuo input vocale viene tradotto e parlato, rendendolo uno strumento eccellente per la traduzione di discorsi dal vivo.
Conclusione
Sebbene questo post abbia dimostrato come queste tre API AWS completamente gestite possono funzionare perfettamente insieme, ti invitiamo a pensare a come potresti utilizzare questi servizi in altri modi per fornire supporto multilingue per servizi o media come i sottotitoli multilingue per una frazione del costo attuale . Medicina, affari e persino relazioni diplomatiche potrebbero trarre vantaggio da un servizio di traduzione in continuo miglioramento, a basso costo ea bassa manutenzione.
Per ulteriori informazioni sulla base del codice proof of concept per questo caso d'uso, consulta il nostro Github.
Informazioni sugli autori
Michele Trad è un Solutions Architect con il team Envision Engineering presso Amazon Web Services. Fornisce assistenza tecnica e aiuta i clienti ad accelerare la loro capacità di innovare mostrando l'arte del possibile su AWS. Ha costruito più prototipi su AI/ML e IoT per i nostri clienti. Puoi contattarmi @Mike_Trann su Twitter.
Cameron Wilkes è un architetto di prototipi nel team di AWS Industry Accelerator. Mentre faceva parte del team, ha consegnato ai clienti diversi prototipi basati sul ML per dimostrare "l'arte del possibile" del ML su AWS. Gli piace la produzione musicale, il fuoristrada e il design.
- AI
- oh arte
- generatore d'arte
- un robot
- Amazon Polly
- Amazon Transcribe
- Amazon Traduttore
- intelligenza artificiale
- certificazione di intelligenza artificiale
- intelligenza artificiale nel settore bancario
- robot di intelligenza artificiale
- robot di intelligenza artificiale
- software di intelligenza artificiale
- Apprendimento automatico di AWS
- blockchain
- conferenza blockchain ai
- geniale
- intelligenza artificiale conversazionale
- criptoconferenza ai
- dall's
- apprendimento profondo
- google ai
- machine learning
- Platone
- platone ai
- Platone Data Intelligence
- Gioco di Platone
- PlatoneDati
- gioco di plato
- scala ai
- sintassi
- Istruzioni tecniche
- zefiro