Se for deg en kirurg som tar videosamtaler med pasienter over hele verden uten behov for en menneskelig oversetter. Hva om en nystartet bedrift enkelt kunne utvide produktet sitt på tvers av landegrenser og inn i nye geografiske markeder ved å tilby flytende, nøyaktig, flerspråklig kundestøtte og salg, alt uten behov for en levende menneskelig oversetter? Hva skjer med virksomheten din når du ikke lenger er bundet av språk?
Det er vanlig i dag å ha virtuelle møter med internasjonale team og kunder som snakker mange forskjellige språk. Enten det er interne eller eksterne møter, går mening ofte seg vill i komplekse diskusjoner, og du kan støte på språkbarrierer som hindrer deg i å være så effektiv som du kunne vært.
I dette innlegget vil du lære hvordan du bruker tre fullt administrerte AWS-tjenester (Amazon Transcribe, Amazon Oversettog Amazon Polly) for å produsere en tale-til-tale-oversetterløsning i nær sanntid som raskt kan oversette en kildetalers direkte stemmeinndata til et muntlig, nøyaktig, oversatt målspråk, alt uten maskinlæring (ML).
Oversikt over løsning
Oversetteren vår består av tre fullt administrerte AWS ML-tjenester som jobber sammen i et enkelt Python-skript ved å bruke AWS SDK for Python (Boto3) for tekstoversettelse og tekst-til-tale-deler, og en asynkron streaming-SDK for transkripsjon av lydinndata.
Amazon Transkribering: Streaming av tale til tekst
Den første tjenesten du bruker i stabelen vår er Amazon Transcribe, en fullt administrert tale-til-tekst-tjeneste som tar inn tale og transkriberer den til tekst. Amazon Transcribe har fleksible inntaksmetoder, batch eller streaming, fordi den aksepterer enten lagrede lydfiler eller streaming av lyddata. I dette innlegget bruker du asynkron Amazon Transcribe streaming SDK for Python, som bruker HTTP/2-strømmeprotokollen for å streame direkte lyd og motta direkte transkripsjoner.
Da vi først bygde denne prototypen, støttet ikke Amazon Transcribe streaming-inntak automatisk språkdeteksjon, men dette er ikke lenger tilfellet fra og med november 2021. Både batch- og streaming-inntak støtter nå automatisk språkdeteksjon for alle støttede språk. I dette innlegget viser vi hvordan en parameterbasert løsning gjennom en sømløs flerspråklig parameterløs design er mulig ved bruk av streaming automatisk språkdeteksjon. Etter at vårt transkriberte talesegment er returnert som tekst, sender du en forespørsel til Amazon Translate om å oversette og returnere resultatene i vår Amazon Transcribe EventHandler
metoden.
Amazon Translate: State-of-the-art, fullt administrert oversettelses-API
Neste i stabelen vår er Amazon Translate, en nevral maskinoversettelsestjeneste som leverer rask, høykvalitets, rimelig og tilpassbar språkoversettelse. Fra juni 2022 støtter Amazon Translate oversettelse på tvers av 75 språk, med nye språkpar og forbedringer som gjøres kontinuerlig. Amazon Translate bruker dyplæringsmodeller som er vert for en svært skalerbar og spenstig AWS Cloud-arkitektur for raskt å levere nøyaktige oversettelser enten i sanntid eller batch, avhengig av din brukssituasjon. Å bruke Amazon Translate er enkelt og krever ingen administrasjon av underliggende arkitektur eller ML-ferdigheter. Amazon Translate har flere funksjoner, som å lage og bruke en tilpasset terminologi å håndtere kartlegging mellom bransjespesifikke termer. For mer informasjon om Amazon Translate-tjenestegrenser, se Retningslinjer og grenser. Etter at applikasjonen mottar den oversatte teksten på målspråket vårt, sender den den oversatte teksten til Amazon Polly for umiddelbar oversatt lydavspilling.
Amazon Polly: Fullt administrert tekst-til-tale API
Til slutt sender du den oversatte teksten til Amazon Polly, en fullt administrert tekst-til-tale-tjeneste som enten kan sende tilbake naturtro lydklippsvar for umiddelbar streaming-avspilling eller gruppert og lagret i Amazon enkel lagringstjeneste (Amazon S3) for senere bruk. Du kan kontrollere ulike aspekter av tale som uttale, volum, tonehøyde, talehastighet og mer ved å bruke standardiserte Markup Language for talesyntese (SSML).
Du kan syntetisere tale for visse Amazon Polly Nevrale stemmer bruke Newscaster-stilen for å få dem til å høres ut som en TV- eller radionyhetsoppleser. Du kan også oppdage når spesifikke ord eller setninger i teksten blir sagt basert på metadataene som er inkludert i lydstrømmen. Dette lar utvikleren synkronisere grafisk fremheving og animasjoner, for eksempel leppebevegelsene til en avatar, med den syntetiserte talen.
Du kan endre uttalen av bestemte ord, for eksempel firmanavn, akronymer, fremmedord eller neologismer, for eksempel "P!nk", "ROTFL" eller "C'est la vie" (når det snakkes på en ikke-fransk stemme), ved å bruke tilpassede leksikon.
Arkitekturoversikt
Følgende diagram illustrerer løsningsarkitekturen.
Arbeidsflyten er som følger:
- Lyd inntas av Python SDK.
- Amazon Polly konverterer talen til tekst, på 39 mulige språk.
- Amazon Translate konverterer språkene.
- Amazon Live Transcribe konverterer tekst til tale.
- Lyd sendes ut til høyttalere.
Forutsetninger
Du trenger en vertsmaskin satt opp med mikrofon, høyttalere og pålitelig internettforbindelse. En moderne bærbar PC bør fungere bra for dette fordi ingen ekstra maskinvare er nødvendig. Deretter må du sette opp maskinen med noen programvareverktøy.
Du må ha Python 3.7+ installert for å bruke den asynkrone Amazon Transcribe streaming SDK og for en Python-modul kalt pyaudio
, som du bruker til å kontrollere maskinens mikrofon og høyttalere. Denne modulen avhenger av et C-bibliotek kalt portaudio.h
. Hvis du støter på problemer med pyaudio
feil, foreslår vi at du sjekker operativsystemet ditt for å se om du har portaudio.h
bibliotek installert.
For autorisasjon og autentisering av serviceanrop oppretter du en AWS identitets- og tilgangsadministrasjon (IAM) tjenesterolle med tillatelser til å ringe de nødvendige AWS-tjenestene. Ved å konfigurere AWS kommandolinjegrensesnitt (AWS CLI) med denne IAM-tjenesterollen kan du kjøre skriptet vårt på maskinen din uten å måtte sende inn nøkler eller passord, fordi AWS-bibliotekene er skrevet for å bruke den konfigurerte AWS CLI-brukerens legitimasjon. Dette er en praktisk metode for rask prototyping og sikrer at tjenestene våre blir oppringt av en autorisert identitet. Som alltid, følg prinsippet om minste privilegium når du tildeler IAM-policyer når du oppretter en IAM-bruker eller -rolle.
For å oppsummere trenger du følgende forutsetninger:
- En PC-, Mac- eller Linux-maskin med mikrofon, høyttalere og internettforbindelse
- De
portaudio.h
C-bibliotek for operativsystemet ditt (brew, apt get, wget), som er nødvendig for at pyaudio skal fungere - AWS CLI 2.0 med riktig autorisert IAM-bruker konfigurert ved å kjøre aws configure i AWS CLI
- Python 3.7+
- Den asynkrone Amazon Transcribe Python SDK
- Følgende Python-biblioteker:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
Implementer løsningen
Du vil stole sterkt på den asynkrone Amazon Transcribe streaming-SDK-en for Python som utgangspunkt, og kommer til å bygge på toppen av den spesifikke SDK-en. Etter at du har eksperimentert med streaming-SDK for Python, legger du til streaming mikrofon input ved å bruke pyaudio
, et ofte brukt Python åpen kildekode-bibliotek som brukes til å manipulere lyddata. Deretter legger du til Boto3-anrop til Amazon Translate og Amazon Polly for vår oversettelses- og tekst-til-tale-funksjonalitet. Til slutt strømmer du ut oversatt tale gjennom datamaskinens høyttalere igjen med pyaudio
. Python-modulen concurrent
gir deg muligheten til å kjøre blokkeringskode i sin egen asynkrone tråd for å spille av den returnerte Amazon Polly-talen din på en sømløs, ikke-blokkerende måte.
La oss importere alle nødvendige moduler, transkribere strømmeklasser og instansiere noen globaler:
Først bruker du pyaudio
for å få inndataenhetens samplingsfrekvens, enhetsindeks og kanalantall:
Hvis dette ikke fungerer, kan du også gå gjennom og skrive ut enhetene dine som vist i følgende kode, og deretter bruke enhetsindeksen til å hente enhetsinformasjonen med pyaudio
:
Du bruker channel_count
, sample_rate
og dev_index
som parametere i en mikrofonstrøm. I den strømmens tilbakeringingsfunksjon bruker du en asyncio
ikke-blokkerende trådsikker tilbakeringing for å sette inngangsbytene til mikrofonstrømmen i en asyncio
inndatakø. Legg merke til loop- og input_queue-objektene som er opprettet med asyncio
og hvordan de brukes i følgende kode:
Nå når generatoren fungerer mic_stream()
kalles, gir den kontinuerlig input-byte så lenge det er mikrofoninngangsdata i inngangskøen.
Nå som du vet hvordan du får inngangsbyte fra mikrofonen, la oss se på hvordan du skriver Amazon Polly utgangslydbyte til en høyttalerutgangsstrøm:
La oss nå utvide det du bygde i innlegget Asynkron Amazon Transcribe Streaming SDK for Python. I den følgende koden oppretter du et eksekveringsobjekt ved å bruke ThreadPoolExecutor
underklasse med tre arbeidere med samtidig. Du legger deretter til et Amazon Translate-anrop på det ferdigstilte returnerte transkripsjonen i EventHandler og sender den oversatte teksten, eksekveringsobjektet og vår aws_polly_tts()
fungere til en asyncio
løkke med loop.run_in_executor()
, som kjører vår Amazon Polly-funksjon (med oversatt inndatatekst) asynkront ved starten av neste iterasjon av asyncio
sløyfe.
Endelig har vi loop_me()
funksjon. I den definerer du write_chunks()
, som tar en Amazon Transcribe-strøm som et argument og asynkront skriver biter av streaming-mikrofoninndata til den. Da bruker du MyEventHandler()
med utgangstranskripsjonsstrømmen som argument og lag et behandlerobjekt. Da bruker du avvente med asyncio.gather()
og send inn write_chunks() og behandler med handle_events()-metoden for å håndtere den eventuelle fremtiden til disse koroutinene. Til slutt samler du alle hendelsesløkkene og sløyfer loop_me()
funksjon med run_until_complete()
. Se følgende kode:
Når den foregående koden kjøres sammen uten feil, kan du snakke inn i mikrofonen og raskt høre stemmen din oversatt til mandarin-kinesisk. Den automatiske språkdeteksjonsfunksjonen for Amazon Transcribe og Amazon Translate oversetter alle støttede inndataspråk til målspråket. Du kan snakke i ganske lang tid, og på grunn av funksjonssamtalenes ikke-blokkerende natur, blir alle dine taleinndata oversatt og talt, noe som gjør dette til et utmerket verktøy for å oversette levende taler.
konklusjonen
Selv om dette innlegget demonstrerte hvordan disse tre fullt administrerte AWS API-ene kan fungere sømløst sammen, oppfordrer vi deg til å tenke på hvordan du kan bruke disse tjenestene på andre måter for å levere flerspråklig støtte for tjenester eller medier som flerspråklig teksting for en brøkdel av dagens kostnad . Medisin, forretninger og til og med diplomatiske forbindelser kan alle dra nytte av en stadig bedre oversettelsestjeneste til lave kostnader og lite vedlikehold.
For mer informasjon om proof of concept-kodebasen for denne brukssaken, sjekk ut vår Github.
Om forfatterne
Michael Tran er en løsningsarkitekt med Envision Engineering-teamet hos Amazon Web Services. Han gir teknisk veiledning og hjelper kunder med å akselerere deres evne til innovasjon gjennom å vise kunsten til det mulige på AWS. Han har bygget flere prototyper rundt AI/ML, og IoT for våre kunder. Du kan kontakte meg @Mike_Trann på Twitter.
Cameron Wilkes er en Prototyping Architect på AWS Industry Accelerator-teamet. Mens han var på teamet leverte han flere ML-baserte prototyper til kunder for å demonstrere «Art of the Possible» til ML på AWS. Han liker musikkproduksjon, off-roading og design.
- AI
- ai kunst
- ai art generator
- du har en robot
- Amazon Polly
- Amazon Transcribe
- Amazon Oversett
- kunstig intelligens
- sertifisering av kunstig intelligens
- kunstig intelligens i bankvirksomhet
- kunstig intelligens robot
- kunstig intelligens roboter
- programvare for kunstig intelligens
- AWS maskinlæring
- blockchain
- blockchain konferanse ai
- coingenius
- samtale kunstig intelligens
- kryptokonferanse ai
- dall sin
- dyp læring
- google det
- maskinlæring
- plato
- plato ai
- Platon Data Intelligence
- Platon spill
- PlatonData
- platogaming
- skala ai
- syntaks
- Teknisk fremgangsmåte
- zephyrnet