I løbet af de sidste par år har online uddannelsesplatforme oplevet en stigning i anvendelsen af og en stigning i efterspørgslen efter videobaseret læring, fordi det tilbyder et effektivt medium til at engagere eleverne. For at udvide til internationale markeder og henvende sig til en kulturelt og sproglig mangfoldig befolkning, kigger virksomheder også på at diversificere deres læringstilbud ved at lokalisere indhold til flere sprog. Disse virksomheder leder efter pålidelige og omkostningseffektive måder at løse deres lokaliseringsbrug.
Lokalisering af indhold omfatter hovedsageligt oversættelse af originale stemmer til nye sprog og tilføjelse af visuelle hjælpemidler såsom undertekster. Traditionelt er denne proces uoverkommelig, manuel og tager meget tid, herunder at arbejde med lokaliseringsspecialister. Med kraften fra AWS machine learning (ML) tjenester som f.eks Amazon Transcrib, Amazon Oversætog Amazon Polly, kan du skabe en levedygtig og en omkostningseffektiv lokaliseringsløsning. Du kan bruge Amazon Transcribe til at oprette en transskription af dine eksisterende lyd- og videostreams og derefter oversætte denne transskription til flere sprog ved hjælp af Amazon Translate. Du kan derefter bruge Amazon Polly, en tekst-til-tale-tjeneste, til at konvertere den oversatte tekst til naturligt klingende menneskelig tale.
Det næste trin i lokaliseringen er at tilføje undertekster til indholdet, hvilket kan forbedre tilgængeligheden og forståelsen og hjælpe seerne med at forstå videoerne bedre. Oprettelse af undertekster på videoindhold kan være udfordrende, fordi den oversatte tale ikke matcher den oprindelige taletiming. Denne synkronisering mellem lyd og undertekster er en kritisk opgave at overveje, fordi den kan afbryde publikum fra dit indhold, hvis de ikke er synkroniserede. Amazon Polly tilbyder en løsning på denne udfordring gennem aktivering talemærker, som du kan bruge til at oprette en undertekstfil, der kan synkroniseres med det genererede taleoutput.
I dette indlæg gennemgår vi en lokaliseringsløsning ved hjælp af AWS ML-tjenester, hvor vi bruger en original engelsk video og konverterer den til spansk. Vi fokuserer også på at bruge talemærker til at oprette en synkroniseret undertekstfil på spansk.
Løsningsoversigt
Følgende diagram illustrerer løsningsarkitekturen.
Løsningen tager en videofil og målsprogindstillingerne som input og bruger Amazon Transcribe til at lave en transskription af videoen. Vi bruger derefter Amazon Translate til at oversætte transskriptionen til målsproget. Den oversatte tekst leveres som input til Amazon Polly for at generere lydstrømmen og talemærker på målsproget. Amazon Polly vender tilbage output af talemærke i en linjeafgrænset JSON-stream, som indeholder felterne som tid, type, start, slut og værdi. Værdien kan variere afhængigt af typen af talemærke, der anmodes om i inputtet, som f.eks SSML, viseme, ord eller sætning. Med henblik på vores eksempel anmodede vi om talemærketype as word
. Med denne mulighed opdeler Amazon Polly en sætning i dens individuelle ord i sætningen og deres start- og sluttider i lydstrømmen. Med disse metadata behandles talemærkerne derefter for at generere underteksterne til den tilsvarende lydstrøm genereret af Amazon Polly.
Til sidst bruger vi AWS Elemental MediaConvert for at gengive den endelige video med den oversatte lyd og tilhørende undertekster.
Følgende video viser det endelige resultat af løsningen:
AWS Step Functions arbejdsgang
Vi anvender AWS-trinfunktioner at orkestrere denne proces. Følgende figur viser et overblik over arbejdsgangen Trinfunktioner (nogle trin er udeladt fra diagrammet for bedre klarhed).
Workflow-trinene er som følger:
- En bruger uploader kildevideofilen til en Amazon Simple Storage Service (Amazon S3) spand.
- S3 begivenhedsmeddelelse udløser AWS Lambda funktion state_machine.py (ikke vist i diagrammet), som kalder Trinfunktions-tilstandsmaskinen.
- Det første skridt, Transskriber lyd, påberåber sig Lambda-funktionen transcribe.py, som bruger Amazon Transcribe til at generere en transskription af lyden fra kildevideoen.
Følgende eksempelkode viser, hvordan man opretter et transskriptionsjob ved hjælp af Amazon Transcribe Boto3 Python SDK:
Når jobbet er fuldført, gemmes outputfilerne i S3-bøtten, og processen fortsætter til næste trin med at oversætte indholdet.
- Oversæt transskription trin aktiverer Lambda-funktionen translate.py som bruger Amazon Translate til at oversætte transskriptionen til målsproget. Her bruger vi den synkrone/realtidsoversættelse ved hjælp af oversæt_tekst fungere:
Synkron oversættelse har begrænsninger for den dokumentstørrelse, den kan oversætte; Når dette skrives, er det sat til 5,000 bytes. For større dokumentstørrelser kan du overveje at bruge en asynkron rute til at oprette jobbet ved hjælp af start_text_translation_job og kontrol af status via beskriv_tekst_oversættelsesjob.
- Det næste trin er et Trinfunktioner Parallel stat, hvor vi skaber parallelle grene i vores statsmaskine.
- I den første gren kalder vi Lambda-funktionen Lambda-funktionen gener_polly_audio.py for at generere vores Amazon Polly lydstream:
Her bruger vi start_tale_syntese_opgave metode af Amazon Polly Python SDK til at udløse talesynteseopgaven, der skaber Amazon Polly-lyden. Vi indstiller
OutputFormat
tilmp3
, som fortæller Amazon Polly at generere en lydstrøm til dette API-kald. - I den anden gren kalder vi Lambda-funktionen gener_speech_marks.py for at generere talemærker output:
- I den første gren kalder vi Lambda-funktionen Lambda-funktionen gener_polly_audio.py for at generere vores Amazon Polly lydstream:
- Vi bruger igen start_tale_syntese_opgave metode, men angiv
OutputFormat
tiljson
, som fortæller Amazon Polly at generere talemærker for dette API-kald.
I det næste trin i den anden gren påberåber vi os Lambda-funktionen gener_subtitles.py, som implementerer logikken til at generere en undertekstfil fra talemærkeoutputtet.
Den bruger Python-modulet i filen webvtt_utils.py. Dette modul har flere hjælpefunktioner til at oprette undertekstfilen; en sådan metode get_phrases_from_speechmarks
er ansvarlig for at parse talemærkefilen. Talen markerer JSON-strukturen giver kun starttidspunktet for hvert ord individuelt. For at skabe den underteksttiming, der kræves til SRT-filen, opretter vi først sætninger på omkring n (hvor n=10) ord fra listen over ord i talemærkefilen. Derefter skriver vi dem ind i SRT-filformatet, idet vi tager starttidspunktet fra det første ord i sætningen, og til sluttidspunktet bruger vi starttidspunktet for ordet (n+1) og trækker det fra med 1 for at skabe den sekvenserede post . Følgende funktion opretter sætningerne som forberedelse til at skrive dem til SRT-filen:
- Det sidste trin, Medier Konverter, påberåber sig Lambda-funktionen create_mediaconvert_job.py at kombinere lydstrømmen fra Amazon Polly og undertekstfilen med kildevideofilen for at generere den endelige outputfil, som derefter gemmes i en S3-bøtte. Dette trin bruger
MediaConvert
, en filbaseret videoomkodningstjeneste med broadcast-kvalitetsfunktioner. Det giver dig mulighed for nemt at oprette video-on-demand-indhold og kombinerer avancerede video- og lydfunktioner med en enkel webgrænseflade. Her bruger vi igen Python Boto3 SDK til at oprette enMediaConvert
job:
Forudsætninger
Før du går i gang, skal du have følgende forudsætninger:
Implementer løsningen
Udfør følgende trin for at implementere løsningen ved hjælp af AWS CDK:
- Klon Repository:
- For at sikre, at AWS CDK er bootstrappet, kør kommandoen
cdk bootstrap
fra roden af depotet: - Skift arbejdsbiblioteket til roden af depotet og kør følgende kommando:
Som standard er mållydindstillingerne sat til amerikansk spansk (es-US
). Hvis du planlægger at teste det med et andet målsprog, skal du bruge følgende kommando:
Processen tager et par minutter at fuldføre, hvorefter den viser et link, som du kan bruge til at se målvideofilen med den oversatte lyd og oversatte undertekster.
Test løsningen
For at teste denne løsning brugte vi en lille del af følgende AWS re: Invent 2017-video fra YouTube, hvor Amazon Transcribe først blev introduceret. Du kan også teste løsningen med din egen video. Originalsproget i vores testvideo er engelsk. Når du implementerer denne løsning, kan du angive mållydindstillingerne, eller du kan bruge standardindstillingerne for mållyd, som bruger spansk til at generere lyd og undertekster. Løsningen skaber en S3 bucket, som kan bruges til at uploade videofilen til.
- På Amazon S3-konsollen skal du navigere til bøtten
PollyBlogBucket
. - Vælg spanden, naviger til
/inputVideo
mappe, og upload videofilen (løsningen er testet med videoer af typen mp4). På dette tidspunkt udløser en S3-hændelsesmeddelelse Lambda-funktionen, som starter tilstandsmaskinen. - På Step Functions-konsollen skal du gå til tilstandsmaskinen (
ProcessAudioWithSubtitles
). - Vælg en af kørslen af tilstandsmaskinen for at finde Grafinspektør.
Dette viser kørselsresultaterne for hver stat. Trinfunktioner-arbejdsgangen tager et par minutter at fuldføre, hvorefter du kan kontrollere, om alle trinene er gennemført.
Gennemgå outputtet
For at gennemgå outputtet skal du åbne Amazon S3-konsollen og kontrollere, om lydfilen (.mp3) og talemærkefilen (.marks) er gemt i S3-bøtten under <ROOT_S3_BUCKET>/<UID>/synthesisOutput/
.
Følgende er et eksempel på talemærkefilen, der er genereret fra den oversatte tekst:
I dette output er hver del af teksten opdelt i form af talemærker:
- tid – Tidsstemplet i millisekunder fra begyndelsen af den tilsvarende lydstrøm
- typen – Typen af talemærke (sætning, ord, viseme eller SSML)
- starte – Forskydningen i bytes (ikke tegn) for objektets start i inputteksten (ikke inklusive visemærker)
- ende – Forskydningen i bytes (ikke tegn) af objektets ende i inputteksten (ikke inklusive visemærker)
- værdi – Individuelle ord i sætningen
Den genererede undertekstfil skrives tilbage til S3-bøtten. Du kan finde filen under <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/
. Undersøg undertekstfilen; indholdet skal ligne følgende tekst:
Efter at undertekstfilen og lydfilen er genereret, oprettes den endelige kildevideofil ved hjælp af MediaConvert. Tjek MediaConvert-konsollen for at kontrollere, om jobstatus er COMPLETE
.
Når MediaConvert-jobbet er færdigt, genereres den endelige videofil og gemmes tilbage i S3-bøtten, som kan findes under <ROOT_S3_BUCKET>/<UID>/convertedAV/
.
Som en del af denne implementering distribueres den endelige video gennem en Amazon CloudFront (CDN) link og vises i terminalen eller i AWS CloudFormation konsol.
Åbn URL'en i en browser for at se den originale video med yderligere muligheder for lyd og undertekster. Du kan kontrollere, at den oversatte lyd og undertekster er synkroniseret.
Konklusion
I dette indlæg diskuterede vi, hvordan man opretter nye sprogversioner af videofiler uden behov for manuel indgriben. Indholdsskabere kan bruge denne proces til at synkronisere lyden og underteksterne på deres videoer og nå ud til et globalt publikum.
Du kan nemt integrere denne tilgang i dine egne produktionspipelines for at håndtere store mængder og skalere efter dine behov. Amazon Polly bruger Neural TTS (NTTS) at producere naturlige og menneskelignende tekst-til-tale stemmer. Det understøtter også generere tale fra SSML, som giver dig yderligere kontrol over, hvordan Amazon Polly genererer tale ud fra den angivne tekst. Amazon Polly giver også en mange forskellige stemmer på flere sprog for at understøtte dine behov.
Kom godt i gang med AWS maskinlæringstjenester ved at besøge Produkt side, eller henvise til Amazon Machine Learning Solutions Lab side, hvor du kan samarbejde med eksperter for at bringe maskinlæringsløsninger til din organisation.
Yderligere ressourcer
For mere information om de tjenester, der bruges i denne løsning, henvises til følgende:
Om forfatterne
Reagan Rosario arbejder som løsningsarkitekt hos AWS med fokus på uddannelsesteknologivirksomheder. Han elsker at hjælpe kunder med at bygge skalerbare, højst tilgængelige og sikre løsninger i AWS Cloud. Han har mere end ti års erfaring med at arbejde i en række teknologiroller med fokus på software engineering og arkitektur.
Anil Kodali er en løsningsarkitekt med Amazon Web Services. Han arbejder med AWS EdTech-kunder og vejleder dem med arkitektonisk bedste praksis til at migrere eksisterende arbejdsbelastninger til skyen og designe nye arbejdsbelastninger med en cloud-first-tilgang. Før han kom til AWS, arbejdede han med store detailhandlere for at hjælpe dem med deres skymigreringer.
Prasanna Saraswathi Krishnan er en løsningsarkitekt med Amazon Web Services, der arbejder med EdTech-kunder. Han hjælper dem med at drive deres cloud-arkitektur og datastrategi ved hjælp af bedste praksis. Hans baggrund er i distribueret computing, big data analytics og data engineering. Han brænder for maskinlæring og naturlig sprogbehandling.
- AI
- ai kunst
- ai kunst generator
- en robot
- Amazon ML Solutions Lab
- Amazon Polly
- Amazon Transcrib
- Amazon Oversæt
- kunstig intelligens
- certificering af kunstig intelligens
- kunstig intelligens i banksektoren
- kunstig intelligens robot
- kunstig intelligens robotter
- software til kunstig intelligens
- AWS maskinindlæring
- blockchain
- blockchain konference ai
- coingenius
- samtale kunstig intelligens
- kryptokonference ai
- dalls
- dyb læring
- du har google
- machine learning
- plato
- platon ai
- Platon Data Intelligence
- Platon spil
- PlatoData
- platogaming
- skala ai
- syntaks
- zephyrnet