Imaginați-vă un chirurg care efectuează apeluri video cu pacienți din întreaga lume fără a avea nevoie de un traducător uman. Ce s-ar întâmpla dacă o companie nou-înființată și-ar putea extinde cu ușurință produsul peste granițe și pe noi piețe geografice, oferind asistență și vânzări fluide, precise și multilingve, toate fără a fi nevoie de un traducător uman activ? Ce se întâmplă cu afacerea ta când nu mai ești legat de limbă?
Este obișnuit astăzi să avem întâlniri virtuale cu echipe internaționale și clienți care vorbesc multe limbi diferite. Fie că sunt întâlniri interne sau externe, ceea ce înseamnă că se pierde adesea în discuții complexe și s-ar putea să întâlnești bariere lingvistice care te împiedică să fii la fel de eficient pe cât ai putea fi.
În această postare, veți învăța cum să utilizați trei servicii AWS complet gestionate (Transcriere Amazon, Traducerea Amazon, și Amazon Polly) pentru a produce o soluție de traducător vorbire în vorbire aproape în timp real, care poate traduce rapid intrarea vocală live a unui vorbitor sursă într-o limbă țintă vorbită, precisă și tradusă, toate fără experiență de învățare automată (ML).
Prezentare generală a soluției
Traducătorul nostru constă din trei servicii AWS ML complet gestionate care lucrează împreună într-un singur script Python, folosind SDK AWS pentru Python (Boto3) pentru traducerea textului și porțiunile text în vorbire și un SDK de streaming asincron pentru transcrierea intrării audio.
Amazon Transcribe: transmiterea în flux a vorbirii în text
Primul serviciu pe care îl utilizați în stiva noastră este Amazon Transcribe, un serviciu de transmitere a vorbirii în text complet gestionat, care preia vocea de intrare și o transcrie în text. Amazon Transcribe are metode flexibile de asimilare, lot sau streaming, deoarece acceptă fie fișiere audio stocate, fie date audio în flux. În această postare, utilizați SDK de streaming Amazon Transcribe asincron pentru Python, care utilizează protocolul de streaming HTTP/2 pentru a transmite în flux audio live și pentru a primi transcrieri live.
Când am construit pentru prima dată acest prototip, Amazon Transcribe asimilarea în flux nu a acceptat detectarea automată a limbii, dar acest lucru nu mai este cazul din noiembrie 2021. Atât asimilarea loturilor, cât și asimilarea în flux acceptă acum detectarea automată a limbii pentru toți limbi acceptate. În această postare, arătăm cum este posibilă o soluție bazată pe parametri printr-un design fără parametri, în mai multe limbi, prin utilizarea detectării automate a limbii în flux. După ce segmentul nostru de vorbire transcris este returnat ca text, trimiteți o solicitare către Amazon Translate pentru a traduce și a returna rezultatele în Amazon Transcribe. EventHandler
metodă.
Amazon Translate: API de traducere de ultimă generație, gestionat complet
Următorul în teancul nostru este Amazon Translate, un serviciu de traducere automată neuronală care oferă traducere rapidă, de înaltă calitate, accesibilă și personalizabilă. Începând cu iunie 2022, Amazon Translate acceptă traducerea în 75 de limbi, noi perechi de limbi și îmbunătățiri fiind aduse în mod constant. Amazon Translate utilizează modele de învățare profundă găzduite pe o arhitectură AWS Cloud extrem de scalabilă și rezistentă pentru a furniza rapid traduceri precise, fie în timp real, fie în loturi, în funcție de cazul dvs. de utilizare. Utilizarea Amazon Translate este simplă și nu necesită gestionarea arhitecturii de bază sau a abilităților ML. Amazon Translate are mai multe funcții, cum ar fi crearea și utilizarea unui terminologie personalizată pentru a gestiona maparea între termenii specifici industriei. Pentru mai multe informații despre limitele serviciului Amazon Translate, consultați Orientări și limite. După ce aplicația primește textul tradus în limba noastră țintă, trimite textul tradus către Amazon Polly pentru redare audio tradusă imediată.
Amazon Polly: API-ul text-to-speech complet gestionat
În cele din urmă, trimiteți textul tradus către Amazon Polly, un serviciu de transformare a textului în vorbire complet gestionat care poate fie să trimită răspunsuri la clipuri audio realiste pentru redare imediată în flux, fie grupate și salvate în Serviciul Amazon de stocare simplă (Amazon S3) pentru utilizare ulterioară. Puteți controla diferite aspecte ale vorbirii, cum ar fi pronunția, volumul, înălțimea, rata de vorbire și multe altele folosind standarde Limbajul de marcare pentru sinteza vorbirii (SSML).
Puteți sintetiza vorbirea pentru anumite Amazon Polly Voci neuronale folosind stilul Newscaster pentru a le face să sune ca un prezentator de știri TV sau radio. De asemenea, puteți detecta când anumite cuvinte sau propoziții din text sunt rostite pe baza metadatelor incluse în fluxul audio. Acest lucru permite dezvoltatorului să sincronizeze evidențierea grafică și animațiile, cum ar fi mișcările buzelor unui avatar, cu vorbirea sintetizată.
Puteți modifica pronunția anumitor cuvinte, cum ar fi numele companiilor, acronimele, cuvintele străine sau neologismele, de exemplu „P!nk”, „ROTFL” sau „C'est la vie” (când sunt vorbite într-un limbaj non-francez). voce), folosind lexiconi personalizate.
Privire de ansamblu asupra arhitecturii
Următoarea diagramă ilustrează arhitectura soluției noastre.
Fluxul de lucru este următorul:
- Audio este ingerat de Python SDK.
- Amazon Polly convertește discursul în text, în 39 de limbi posibile.
- Amazon Translate convertește limbile.
- Amazon Live Transcribe convertește textul în vorbire.
- Audio este transmis la difuzoare.
Cerințe preliminare
Aveți nevoie de o mașină gazdă configurată cu un microfon, difuzoare și o conexiune de încredere la internet. Un laptop modern ar trebui să funcționeze bine pentru asta, deoarece nu este nevoie de hardware suplimentar. Apoi, trebuie să configurați aparatul cu unele instrumente software.
Trebuie să aveți instalat Python 3.7+ pentru a utiliza SDK-ul de streaming Amazon Transcribe asincron și pentru un modul Python numit pyaudio
, pe care îl utilizați pentru a controla microfonul și difuzoarele aparatului. Acest modul depinde de o bibliotecă C numită portaudio.h
. Dacă întâmpinați probleme cu pyaudio
erori, vă sugerăm să vă verificați sistemul de operare pentru a vedea dacă aveți portaudio.h
biblioteca instalată.
Pentru autorizarea și autentificarea apelurilor de service, creați un Gestionarea identității și accesului AWS (IAM) cu permisiuni de a apela serviciile AWS necesare. Prin configurarea Interfața liniei de comandă AWS (AWS CLI) cu acest rol de serviciu IAM, puteți rula scriptul nostru pe mașina dvs. fără a fi necesar să transmiteți chei sau parole, deoarece bibliotecile AWS sunt scrise pentru a utiliza acreditările configurate ale utilizatorului AWS CLI. Aceasta este o metodă convenabilă de prototipare rapidă și asigură că serviciile noastre sunt apelate de o identitate autorizată. Ca întotdeauna, urmați principiul celui mai mic privilegiu atunci când atribuiți politici IAM atunci când creați un utilizator sau un rol IAM.
Pentru a rezuma, aveți nevoie de următoarele condiții preliminare:
- Un computer, Mac sau Linux cu microfon, difuzoare și conexiune la internet
-
portaudio.h
Biblioteca C pentru sistemul de operare (brew, apt get, wget), care este necesară pentru ca pyaudio să funcționeze - AWS CLI 2.0 cu utilizator IAM autorizat corespunzător, configurat prin rularea aws configure în AWS CLI
- Python 3.7+
- SDK-ul Amazon Transcribe Python asincron
- Următoarele biblioteci Python:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
Implementează soluția
Vă veți baza în mare măsură pe SDK-ul de streaming Amazon Transcribe asincron pentru Python ca punct de plecare și veți construi pe baza acelui SDK specific. După ce ați experimentat cu SDK-ul de streaming pentru Python, adăugați microfon de streaming introducere prin utilizarea pyaudio
, o bibliotecă open-source Python folosită în mod obișnuit, folosită pentru manipularea datelor audio. Apoi adăugați apeluri Boto3 la Amazon Translate și Amazon Polly pentru funcționalitatea noastră de traducere și text-to-speech. În cele din urmă, transmiteți din nou vorbirea tradusă prin difuzoarele computerului pyaudio
. Modulul Python concurrent
vă oferă posibilitatea de a rula cod de blocare în propriul fir asincron pentru a reda discursul returnat Amazon Polly într-un mod fără întreruperi, fără blocare.
Să importăm toate modulele noastre necesare, să transcriem clasele de streaming și să instanțiem câteva globaluri:
În primul rând, folosești pyaudio
pentru a obține rata de eșantionare a dispozitivului de intrare, indicele dispozitivului și numărul de canale:
Dacă acest lucru nu funcționează, puteți, de asemenea, să parcurgeți și să imprimați dispozitivele, așa cum se arată în următorul cod, apoi să utilizați indexul dispozitivului pentru a prelua informațiile despre dispozitiv cu pyaudio
:
Să utilizați channel_count
, sample_rate
, și dev_index
ca parametri într-un flux de microfon. În funcția de apel invers a acelui flux, utilizați un asyncio
apel invers fără blocare thread-safe pentru a pune octeții de intrare ai fluxului de microfon într-un asyncio
coada de intrare. Luați notă de obiectele buclă și input_queue create cu asyncio
și cum sunt utilizate în următorul cod:
Acum, când funcția generatorului mic_stream()
este apelat, furnizează continuu octeți de intrare atâta timp cât există date de intrare ale microfonului în coada de intrare.
Acum că știți cum să obțineți octeți de intrare de la microfon, să vedem cum să scrieți octeți audio de ieșire Amazon Polly într-un flux de ieșire a difuzorului:
Acum haideți să extindem ceea ce ați construit în postare SDK de streaming Amazon Transcribe asincron pentru Python. În următorul cod, creați un obiect executor utilizând ThreadPoolExecutor
subclasa cu trei muncitori cu concurente. Apoi adăugați un apel Amazon Translate pe transcrierea returnată finalizată în EventHandler și transmiteți acel text tradus, obiectul executor și aws_polly_tts()
funcția într-o asyncio
buclă cu loop.run_in_executor()
, care rulează funcția noastră Amazon Polly (cu text de intrare tradus) asincron la începutul următoarei iterații a asyncio
buclă.
În cele din urmă, avem loop_me()
funcţie. În ea, definiți write_chunks()
, care ia un flux Amazon Transcribe ca argument și scrie în mod asincron bucăți de intrare de microfon în flux. Apoi folosești MyEventHandler()
cu fluxul de transcriere de ieșire ca argument și creați un obiect handler. Apoi folosiți așteptați cu asyncio.gather()
și treceți write_chunks() și handlerul cu metoda handle_events() pentru a gestiona eventualele viitoare ale acestor coroutine. În cele din urmă, adunați toate buclele de evenimente și buclați loop_me()
funcționează cu run_until_complete()
. Consultați următorul cod:
Când codul precedent este rulat împreună, fără erori, puteți vorbi în microfon și vă puteți auzi rapid vocea tradusă în chineza mandarină. Funcția de detectare automată a limbii pentru Amazon Transcribe și Amazon Translate traduce orice limbă de intrare acceptată în limba țintă. Puteți vorbi destul de mult timp și, din cauza naturii neblocante a apelurilor de funcție, toată intrarea dvs. de vorbire este tradusă și vorbită, ceea ce face din acesta un instrument excelent pentru traducerea discursurilor live.
Concluzie
Deși această postare a demonstrat modul în care aceste trei API-uri AWS complet gestionate pot funcționa împreună, vă încurajăm să vă gândiți la modul în care puteți utiliza aceste servicii în alte moduri pentru a oferi suport multilingv pentru servicii sau media, cum ar fi subtitrări multilingve, pentru o fracțiune din costul actual. . Medicina, afacerile și chiar relațiile diplomatice ar putea beneficia de un serviciu de traducere în continuă îmbunătățire, cu costuri reduse și cu întreținere redusă.
Pentru mai multe informații despre baza codului de dovadă a conceptului pentru acest caz de utilizare, consultați-ne Github.
Despre Autori
Michael Trans este arhitect de soluții cu echipa Envision Engineering la Amazon Web Services. El oferă îndrumări tehnice și îi ajută pe clienți să-și accelereze capacitatea de a inova prin arătarea artei posibilului pe AWS. El a construit mai multe prototipuri în jurul AI/ML și IoT pentru clienții noștri. Mă puteți contacta pe @Mike_Trann pe Twitter.
Cameron Wilkes este arhitect de prototipuri în echipa AWS Industry Accelerator. În timp ce era în echipă, el a livrat clienților câteva prototipuri bazate pe ML pentru a demonstra „Arta posibilului” a ML pe AWS. Îi place producția muzicală, off-roading și design.
- AI
- ai art
- ai art generator
- ai robot
- Amazon Polly
- Transcriere Amazon
- Traducerea Amazon
- inteligență artificială
- certificare de inteligență artificială
- inteligența artificială în domeniul bancar
- robot cu inteligență artificială
- roboți cu inteligență artificială
- software de inteligență artificială
- Învățare automată AWS
- blockchain
- conferință blockchain ai
- coingenius
- inteligența artificială conversațională
- criptoconferință ai
- dall-e
- învățare profundă
- google ai
- masina de învățare
- Plato
- platoul ai
- Informații despre date Platon
- Jocul lui Platon
- PlatoData
- platogaming
- scara ai
- sintaxă
- Instrucțiuni tehnice
- zephyrnet