Föreställ dig en kirurg som tar videosamtal med patienter över hela världen utan att behöva en mänsklig översättare. Tänk om en nystartad företag lätt kunde expandera sin produkt över gränser och till nya geografiska marknader genom att erbjuda flytande, korrekt, flerspråkig kundsupport och försäljning, allt utan att behöva en levande mänsklig översättare? Vad händer med ditt företag när du inte längre är bunden av språket?
Det är vanligt idag att ha virtuella möten med internationella team och kunder som talar många olika språk. Oavsett om det är interna eller externa möten, går mening ofta vilse i komplexa diskussioner och du kan stöta på språkbarriärer som hindrar dig från att vara så effektiv som du skulle kunna vara.
I det här inlägget kommer du att lära dig hur du använder tre fullt hanterade AWS-tjänster (Amazon Transcribe, Amazon Translateoch Amazon Polly) för att producera en lösning för tal-till-tal-översättare i nästan realtid som snabbt kan översätta en källtalares direkta röstinmatning till ett talat, korrekt, översatt målspråk, allt med noll upplevelse av maskininlärning (ML).
Översikt över lösningen
Vår översättare består av tre helt hanterade AWS ML-tjänster som arbetar tillsammans i ett enda Python-skript genom att använda AWS SDK för Python (Boto3) för vår textöversättning och text-till-tal-delar, och en asynkron streaming-SDK för transkription av ljudingång.
Amazon Transcribe: Streamar tal till text
Den första tjänsten du använder i vår stack är Amazon Transcribe, en helt hanterad tal-till-text-tjänst som tar inmatat tal och transkriberar det till text. Amazon Transcribe har flexibla intagsmetoder, batch eller streaming, eftersom den accepterar antingen lagrade ljudfiler eller strömmande ljuddata. I det här inlägget använder du asynkron Amazon Transcribe streaming SDK för Python, som använder HTTP/2-strömningsprotokollet för att streama liveljud och ta emot livetranskriptioner.
När vi först byggde den här prototypen, stödde inte Amazon Transcribe-ströminmatning automatisk språkdetektering, men detta är inte längre fallet från och med november 2021. Både batch- och streaminginmatning stöder nu automatisk språkdetektering för alla språk som stöds. I det här inlägget visar vi hur en parameterbaserad lösning genom en sömlös flerspråkig parameterlös design är möjlig genom användning av strömmande automatisk språkdetektering. Efter att vårt transkriberade talsegment har returnerats som text skickar du en begäran till Amazon Translate om att översätta och returnera resultaten i vår Amazon Transcribe EventHandler
metod.
Amazon Translate: Toppmodernt, fullt hanterat översättnings-API
Nästa i vår stack är Amazon Translate, en neural maskinöversättningstjänst som levererar snabb, högkvalitativ, prisvärd och anpassningsbar språköversättning. Från och med juni 2022 stöder Amazon Translate översättning över 75 språk, med nya språkpar och förbättringar som görs ständigt. Amazon Translate använder modeller för djupinlärning som är värd för en mycket skalbar och motståndskraftig AWS Cloud-arkitektur för att snabbt leverera korrekta översättningar antingen i realtid eller i grupp, beroende på ditt användningsfall. Att använda Amazon Translate är enkelt och kräver ingen hantering av underliggande arkitektur eller ML-kunskaper. Amazon Translate har flera funktioner, som att skapa och använda en anpassad terminologi att hantera kartläggning mellan branschspecifika termer. För mer information om Amazon Translate-tjänstgränser, se Riktlinjer och gränser. Efter att applikationen har tagit emot den översatta texten på vårt målspråk, skickar den den översatta texten till Amazon Polly för omedelbar översatt ljuduppspelning.
Amazon Polly: Fullständigt hanterad text-till-tal API
Slutligen skickar du den översatta texten till Amazon Polly, en fullt hanterad text-till-tal-tjänst som antingen kan skicka tillbaka verklighetstrogna ljudklippsvar för omedelbar uppspelning av streaming eller batchad och sparad i Amazon enkel lagringstjänst (Amazon S3) för senare användning. Du kan styra olika aspekter av tal som uttal, volym, tonhöjd, talhastighet och mer med hjälp av standardiserade Markeringsspråk för talsyntes (SSML).
Du kan syntetisera tal för vissa Amazon Polly Neurala röster använder stilen Newscaster för att få dem att låta som en nyhetsuppläsare på TV eller radio. Du kan också upptäcka när specifika ord eller meningar i texten läses upp baserat på metadata som ingår i ljudströmmen. Detta gör att utvecklaren kan synkronisera grafisk framhävning och animationer, såsom läpprörelserna hos en avatar, med det syntetiserade talet.
Du kan ändra uttalet för särskilda ord, som företagsnamn, akronymer, främmande ord eller nybildningar, till exempel "P!nk", "ROTFL" eller "C'est la vie" (när det talas på en icke-franska röst), med hjälp av anpassade lexikon.
Arkitekturöversikt
Följande diagram illustrerar vår lösningsarkitektur.
Arbetsflödet är som följer:
- Ljud tas in av Python SDK.
- Amazon Polly konverterar talet till text, på 39 möjliga språk.
- Amazon Translate konverterar språken.
- Amazon Live Transcribe konverterar text till tal.
- Ljud matas ut till högtalarna.
Förutsättningar
Du behöver en värddator med mikrofon, högtalare och pålitlig internetanslutning. En modern bärbar dator borde fungera bra för detta eftersom ingen extra hårdvara behövs. Därefter måste du ställa in maskinen med några programvaruverktyg.
Du måste ha Python 3.7+ installerat för att använda den asynkrona Amazon Transcribe-streaming-SDK:n och för en Python-modul som heter pyaudio
, som du använder för att styra maskinens mikrofon och högtalare. Denna modul beror på ett C-bibliotek som heter portaudio.h
. Om du stöter på problem med pyaudio
fel, föreslår vi att du kontrollerar ditt operativsystem för att se om du har portaudio.h
biblioteket installerat.
För auktorisering och autentisering av servicesamtal skapar du en AWS identitets- och åtkomsthantering (IAM) tjänstroll med behörighet att anropa nödvändiga AWS-tjänster. Genom att konfigurera AWS-kommandoradsgränssnitt (AWS CLI) med denna IAM-tjänstroll kan du köra vårt skript på din maskin utan att behöva skicka in nycklar eller lösenord, eftersom AWS-biblioteken är skrivna för att använda den konfigurerade AWS CLI-användarens autentiseringsuppgifter. Detta är en bekväm metod för snabb prototypframställning och säkerställer att våra tjänster anropas av en auktoriserad identitet. Som alltid, följ principen om minsta privilegium när du tilldelar IAM-policyer när du skapar en IAM-användare eller roll.
För att sammanfatta behöver du följande förutsättningar:
- En PC, Mac eller Linux-maskin med mikrofon, högtalare och internetanslutning
- Smakämnen
portaudio.h
C-bibliotek för ditt operativsystem (brew, apt get, wget), som behövs för att pyaudio ska fungera - AWS CLI 2.0 med korrekt auktoriserad IAM-användare konfigurerad genom att köra aws configure i AWS CLI
- Python 3.7+
- Den asynkrona Amazon Transcribe Python SDK
- Följande Python-bibliotek:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
Implementera lösningen
Du kommer att förlita dig starkt på den asynkrona Amazon Transcribe-streaming-SDK:n för Python som utgångspunkt, och kommer att bygga på den specifika SDK:n. Efter att du har experimenterat med streaming-SDK:n för Python lägger du till strömmande mikrofon input genom att använda pyaudio
, ett vanligt Python-bibliotek med öppen källkod som används för att manipulera ljuddata. Sedan lägger du till Boto3-anrop till Amazon Translate och Amazon Polly för vår översättnings- och text-till-tal-funktionalitet. Slutligen strömmar du ut översatt tal genom datorns högtalare igen med pyaudio
. Python-modulen concurrent
ger dig möjligheten att köra blockeringskod i sin egen asynkrona tråd för att spela upp ditt returnerade Amazon Polly-tal på ett sömlöst, icke-blockerande sätt.
Låt oss importera alla våra nödvändiga moduler, transkribera streamingklasser och instansiera några globala:
Först använder du pyaudio
för att erhålla ingångsenhetens samplingsfrekvens, enhetsindex och kanalantal:
Om detta inte fungerar kan du också gå igenom och skriva ut dina enheter som visas i följande kod och sedan använda enhetsindexet för att hämta enhetsinformationen med pyaudio
:
Du använder channel_count
, sample_rate
och dev_index
som parametrar i en mikrofonström. I den streamens callback-funktion använder du en asyncio
icke-blockerande trådsäker återuppringning för att lägga in mikrofonströmmens indatabyte i en asyncio
ingångskö. Notera loop- och input_queue-objekten som skapats med asyncio
och hur de används i följande kod:
Nu när generatorn fungerar mic_stream()
anropas, ger den kontinuerligt indatabyte så länge det finns mikrofonindata i ingångskön.
Nu när du vet hur man får ingångsbyte från mikrofonen, låt oss titta på hur man skriver Amazon Polly-utgångsljudbytes till en högtalarutgångsström:
Låt oss nu utöka vad du byggde i inlägget Asynkron Amazon Transcribe Streaming SDK för Python. I följande kod skapar du ett exekveringsobjekt med hjälp av ThreadPoolExecutor
underklass med tre arbetare med samtidiga. Du lägger sedan till ett Amazon Translate-anrop på det slutförda returnerade transkriptet i EventHandler och skickar den översatta texten, executor-objektet och vår aws_polly_tts()
fungera till en asyncio
slinga med loop.run_in_executor()
, som kör vår Amazon Polly-funktion (med översatt inmatningstext) asynkront i början av nästa iteration av asyncio
slinga.
Slutligen har vi loop_me()
fungera. I den definierar du write_chunks()
, som tar en Amazon Transcribe-ström som ett argument och asynkront skriver bitar av strömmande mikrofonindata till den. Du använder då MyEventHandler()
med utdatatranskriptionsströmmen som argument och skapa ett hanterarobjekt. Då använder du vänta med asyncio.gather()
och skicka in write_chunks() och hanteraren med handle_events()-metoden för att hantera de eventuella framtiderna för dessa coroutines. Till sist samlar du alla eventloopar och loopar loop_me()
fungera med run_until_complete()
. Se följande kod:
När föregående kod körs tillsammans utan fel kan du tala in i mikrofonen och snabbt höra din röst översatt till mandarinkinesiska. Den automatiska språkdetekteringsfunktionen för Amazon Transcribe och Amazon Translate översätter alla inmatningsspråk som stöds till målspråket. Du kan tala ganska länge och på grund av funktionsanropens icke-blockerande karaktär översätts och talas all din inmatning, vilket gör detta till ett utmärkt verktyg för att översätta livetal.
Slutsats
Även om det här inlägget visade hur dessa tre fullt hanterade AWS API:er kan fungera sömlöst tillsammans, uppmuntrar vi dig att tänka på hur du kan använda dessa tjänster på andra sätt för att leverera flerspråkigt stöd för tjänster eller media som flerspråkig textning för en bråkdel av den nuvarande kostnaden . Medicin, affärer och till och med diplomatiska förbindelser skulle alla kunna dra nytta av en ständigt förbättrad översättningstjänst till låg kostnad och lågt underhåll.
För mer information om proof of concept-kodbasen för detta användningsfall, kolla in vår Github.
Om författarna
Michael Trans är en lösningsarkitekt med Envision Engineering-teamet på Amazon Web Services. Han ger teknisk vägledning och hjälper kunder att accelerera sin innovationsförmåga genom att visa konsten av det möjliga på AWS. Han har byggt flera prototyper kring AI/ML och IoT för våra kunder. Du kan kontakta mig @Mike_Trann på Twitter.
Cameron Wilkes är en prototyparkitekt på AWS Industry Accelerator-teamet. Medan han var i teamet levererade han flera ML-baserade prototyper till kunder för att demonstrera "Art of the Possible" av ML på AWS. Han tycker om musikproduktion, terrängåkning och design.
- AI
- ai konst
- ai art generator
- har robot
- Amazon Polly
- Amazon Transcribe
- Amazon Translate
- artificiell intelligens
- artificiell intelligenscertifiering
- artificiell intelligens inom bankväsendet
- artificiell intelligens robot
- robotar med artificiell intelligens
- programvara för artificiell intelligens
- AWS maskininlärning
- blockchain
- blockchain konferens ai
- coingenius
- konversationskonstnärlig intelligens
- kryptokonferens ai
- dalls
- djupt lärande
- du har google
- maskininlärning
- plato
- plato ai
- Platon Data Intelligence
- Platon spel
- PlatonData
- platogaming
- skala ai
- syntax
- Teknisk instruktion
- zephyrnet