In de afgelopen jaren hebben online onderwijsplatforms een toename gezien in de acceptatie van en een toename van de vraag naar op video gebaseerd leren, omdat het een effectief medium biedt om leerlingen te betrekken. Om uit te breiden naar internationale markten en een cultureel en taalkundig diverse bevolking aan te spreken, proberen bedrijven ook hun leeraanbod te diversifiรซren door inhoud in meerdere talen te lokaliseren. Deze bedrijven zijn op zoek naar betrouwbare en kosteneffectieve manieren om hun gebruiksscenario's voor lokalisatie op te lossen.
Het lokaliseren van inhoud omvat voornamelijk het vertalen van originele stemmen in nieuwe talen en het toevoegen van visuele hulpmiddelen zoals ondertitels. Traditioneel is dit proces onbetaalbaar, handmatig en kost het veel tijd, inclusief het werken met lokalisatiespecialisten. Met de kracht van AWS machine learning (ML)-services zoals: Amazon Transcribe, Amazon Vertalen en Amazon Polly, kunt u een levensvatbare en kosteneffectieve lokalisatieoplossing creรซren. Je kunt Amazon Transcribe gebruiken om een โโtranscript van je bestaande audio- en videostreams te maken en dit transcript vervolgens in meerdere talen te vertalen met Amazon Translate. Vervolgens kunt u Amazon Polly, een tekst-naar-spraakservice, gebruiken om de vertaalde tekst om te zetten in natuurlijk klinkende menselijke spraak.
De volgende stap van lokalisatie is het toevoegen van ondertitels aan de inhoud, wat de toegankelijkheid en het begrip kan verbeteren en kijkers kan helpen de video's beter te begrijpen. Het maken van ondertitels op video-inhoud kan een uitdaging zijn omdat de vertaalde spraak niet overeenkomt met de oorspronkelijke spraaktiming. Deze synchronisatie tussen audio en ondertitels is een cruciale taak om te overwegen, omdat het het publiek kan loskoppelen van uw inhoud als ze niet synchroon lopen. Amazon Polly biedt een oplossing voor deze uitdaging door het inschakelen van spraaktekens, waarmee u een ondertitelingsbestand kunt maken dat kan worden gesynchroniseerd met de gegenereerde spraakuitvoer.
In dit bericht bespreken we een lokalisatieoplossing met AWS ML-services waarbij we een originele Engelse video gebruiken en deze naar het Spaans converteren. We richten ons ook op het gebruik van spraakmarkeringen om een โโgesynchroniseerd ondertitelbestand in het Spaans te maken.
Overzicht oplossingen
Het volgende diagram illustreert de oplossingsarchitectuur.
De oplossing neemt een videobestand en de doeltaalinstellingen als invoer en gebruikt Amazon Transcribe om een โโtranscriptie van de video te maken. Vervolgens gebruiken we Amazon Translate om het transcript te vertalen naar de doeltaal. De vertaalde tekst wordt als input aan Amazon Polly geleverd om de audiostream en spraakmarkeringen in de doeltaal te genereren. Amazon Polly keert terug spraakmarkering uitvoer in een door regels gescheiden JSON-stream, die de velden bevat zoals tijd, type, begin, einde en waarde. De waarde kan variรซren afhankelijk van het type spraakmarkering dat in de invoer wordt gevraagd, zoals: SSML, viseem, woord of zin. Voor het doel van ons voorbeeld hebben we gevraagd om de spraakmarkeringstype as word
. Met deze optie splitst Amazon Polly een zin op in de afzonderlijke woorden in de zin en hun begin- en eindtijden in de audiostream. Met deze metadata worden de spraakmarkeringen vervolgens verwerkt om de ondertitels te genereren voor de bijbehorende audiostream die wordt gegenereerd door Amazon Polly.
Ten slotte gebruiken we AWS Elementaire MediaConvert om de uiteindelijke video weer te geven met de vertaalde audio en bijbehorende ondertitels.
De volgende video toont het uiteindelijke resultaat van de oplossing:
AWS Step Functions-workflow
Wij gebruiken AWS Stap Functies om dit proces te orkestreren. De volgende afbeelding toont een overzicht op hoog niveau van de workflow Step Functions (sommige stappen zijn weggelaten uit het diagram voor meer duidelijkheid).
De workflowstappen zijn als volgt:
- Een gebruiker uploadt het bronvideobestand naar een Amazon eenvoudige opslagservice (Amazon S3) emmer.
- De S3-gebeurtenismelding triggert de AWS Lambda functie state_machine.py (niet weergegeven in het diagram), die de statusmachine Step Functions aanroept.
- De eerste stap, Audio transcriberen, roept de Lambda-functie op transcriberen.py, die Amazon Transcribe gebruikt om een โโtranscript van de audio van de bronvideo te genereren.
De volgende voorbeeldcode laat zien hoe u een transcriptietaak maakt met de Amazon Transcribe Boto3 Python-SDK:
Nadat de taak is voltooid, worden de uitvoerbestanden opgeslagen in de S3-bucket en gaat het proces verder met de volgende stap van het vertalen van de inhoud.
- De Transcriptie vertalen stap roept de Lambda-functie op vertalen.py die Amazon Translate gebruikt om het transcript naar de doeltaal te vertalen. Hier gebruiken we de synchrone/real-time vertaling met behulp van de vertalen_tekst functie:
Synchrone vertaling heeft beperkingen op de documentgrootte die het kan vertalen; op het moment van schrijven is het ingesteld op 5,000 bytes. Overweeg voor grotere documentformaten een asynchrone route te gebruiken voor het maken van de taak met start_text_translation_job en de status controleren via description_text_translation_job.
- De volgende stap is een Step Functions Parallel state, waar we parallelle vertakkingen creรซren in onze toestandsmachine.
- In de eerste tak roepen we de Lambda-functie aan, de Lambda-functie genereer_polly_audio.py om onze Amazon Polly-audiostream te genereren:
Hier gebruiken we de start_spraak_synthese_taak methode van de Amazon Polly Python SDK om de spraaksynthesetaak te activeren die de Amazon Polly-audio creรซert. We zetten de
OutputFormat
naarmp3
, die Amazon Polly vertelt om een โโaudiostream te genereren voor deze API-aanroep. - In de tweede tak roepen we de Lambda-functie op generator_speech_marks.py om de uitvoer van spraakmarkeringen te genereren:
- In de eerste tak roepen we de Lambda-functie aan, de Lambda-functie genereer_polly_audio.py om onze Amazon Polly-audiostream te genereren:
- We gebruiken weer de start_spraak_synthese_taak methode maar specificeer
OutputFormat
naarjson
, die Amazon Polly vertelt om spraakmarkeringen te genereren voor deze API-aanroep.
In de volgende stap van de tweede tak roepen we de Lambda-functie op genereer_ondertitels.py, die de logica implementeert om een โโondertitelbestand te genereren uit de uitvoer van spraakmarkeringen.
Het gebruikt de Python-module in het bestand webvtt_utils.py. Deze module heeft meerdere hulpprogramma's om het ondertitelbestand te maken; een dergelijke methode get_phrases_from_speechmarks
is verantwoordelijk voor het ontleden van het bestand met spraakmarkeringen. De JSON-structuur voor spraakmarkeringen biedt alleen de starttijd voor elk afzonderlijk woord. Om de timing van de ondertiteling voor het SRT-bestand te creรซren, maken we eerst zinnen van ongeveer n (waarbij n=10) woorden uit de lijst met woorden in het bestand met spraakmarkeringen. Vervolgens schrijven we ze in het SRT-bestandsformaat, waarbij we de starttijd nemen vanaf het eerste woord in de zin, en voor de eindtijd gebruiken we de starttijd van het (n+1) woord en trekken dit af met 1 om de gesequenteerde invoer te maken . De volgende functie maakt de zinnen ter voorbereiding op het schrijven naar het SRT-bestand:
- De laatste stap, Media Convert, roept de Lambda-functie op create_mediaconvert_job.py om de audiostream van Amazon Polly en het ondertitelbestand te combineren met het bronvideobestand om het uiteindelijke uitvoerbestand te genereren, dat vervolgens wordt opgeslagen in een S3-bucket. Deze stap gebruikt
MediaConvert
, een op bestanden gebaseerde videotranscoderingsservice met functies van uitzendkwaliteit. Hiermee kunt u eenvoudig video-on-demand inhoud maken en geavanceerde video- en audiomogelijkheden combineren met een eenvoudige webinterface. Ook hier gebruiken we de Python Boto3 SDK om een โโte makenMediaConvert
functie:
Voorwaarden
Voordat u aan de slag gaat, moet u aan de volgende vereisten voldoen:
Implementeer de oplossing
Voer de volgende stappen uit om de oplossing te implementeren met behulp van de AWS CDK:
- Kloon het bewaarplaats:
- Om er zeker van te zijn dat de AWS CDK is: bootstrap, voer de opdracht uit
cdk bootstrap
vanuit de root van de repository: - Wijzig de werkmap naar de hoofdmap van de repository en voer de volgende opdracht uit:
Standaard zijn de doelaudio-instellingen ingesteld op Amerikaans Spaans (es-US
). Als u van plan bent om het met een andere doeltaal te testen, gebruikt u de volgende opdracht:
Het proces duurt een paar minuten, waarna een link wordt weergegeven die u kunt gebruiken om het doelvideobestand met de vertaalde audio en vertaalde ondertitels te bekijken.
Test de oplossing
Om deze oplossing te testen, hebben we een klein deel van het volgende gebruikt: AWS re:Invent 2017-video van YouTube, waar Amazon Transcribe voor het eerst werd geรฏntroduceerd. Je kunt de oplossing ook testen met je eigen video. De originele taal van onze testvideo is Engels. Wanneer u deze oplossing implementeert, kunt u de doelaudio-instellingen specificeren of u kunt de standaard doelaudio-instellingen gebruiken, die Spaans gebruiken voor het genereren van audio en ondertitels. De oplossing creรซert een S3-bucket die kan worden gebruikt om het videobestand naar te uploaden.
- Navigeer op de Amazon S3-console naar de bucket
PollyBlogBucket
. - Kies de emmer, navigeer naar de
/inputVideo
directory, en upload het videobestand (de oplossing is getest met video's van het type mp4). Op dit punt activeert een S3-gebeurtenismelding de Lambda-functie, die de statusmachine start. - Blader in de Step Functions-console naar de statusmachine (
ProcessAudioWithSubtitles
). - Kies een van de runs van de staatsmachine om de . te lokaliseren Grafiek Inspecteur.
Dit toont de uitvoeringsresultaten voor elke staat. De workflow van Step Functions duurt enkele minuten, waarna u kunt controleren of alle stappen met succes zijn voltooid.
Bekijk de uitvoer
Om de uitvoer te bekijken, opent u de Amazon S3-console en controleert u of het audiobestand (.mp3) en het spraakmarkeringsbestand (.marks) zijn opgeslagen in de S3-bucket onder <ROOT_S3_BUCKET>/<UID>/synthesisOutput/
.
Het volgende is een voorbeeld van het spraakmarkeringsbestand dat is gegenereerd op basis van de vertaalde tekst:
In deze uitvoer wordt elk deel van de tekst uitgesplitst in termen van spraakmarkeringen:
- niet de tijd of โ De tijdstempel in milliseconden vanaf het begin van de corresponderende audiostream
- type dan: โ Het type spraakmarkering (zin, woord, viseme of SSML)
- begin โ De offset in bytes (geen tekens) van het begin van het object in de invoertekst (exclusief viseme-markeringen)
- einde โ De offset in bytes (geen tekens) van het einde van het object in de invoertekst (exclusief viseme-markeringen)
- waarde โ Individuele woorden in de zin
Het gegenereerde ondertitelbestand wordt teruggeschreven naar de S3-bucket. U vindt het bestand onder <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/
. Inspecteer het ondertitelbestand; de inhoud moet lijken op de volgende tekst:
Nadat het ondertitelingsbestand en het audiobestand zijn gegenereerd, wordt het uiteindelijke bronvideobestand gemaakt met MediaConvert. Controleer de MediaConvert-console om te controleren of de taakstatus is COMPLETE
.
Wanneer de MediaConvert-taak is voltooid, wordt het uiteindelijke videobestand gegenereerd en weer opgeslagen in de S3-bucket, die u kunt vinden onder <ROOT_S3_BUCKET>/<UID>/convertedAV/
.
Als onderdeel van deze implementatie wordt de uiteindelijke video gedistribueerd via een Amazon CloudFront (CDN)-link en weergegeven in de terminal of in de AWS CloudFormatie console.
Open de URL in een browser om de originele video te bekijken met extra opties voor audio en ondertitels. U kunt controleren of de vertaalde audio en ondertitels synchroon lopen.
Conclusie
In dit bericht hebben we besproken hoe u nieuwe taalversies van videobestanden kunt maken zonder handmatige tussenkomst. Contentmakers kunnen dit proces gebruiken om de audio en ondertitels van hun video's te synchroniseren en een wereldwijd publiek te bereiken.
U kunt deze aanpak eenvoudig integreren in uw eigen productiepijplijnen om grote volumes te verwerken en op te schalen volgens uw behoeften. Amazon Polly gebruikt Neurale TTS (NTTS) om natuurlijke en mensachtige tekst-naar-spraak-stemmen te produceren. Het ondersteunt ook spraak genereren vanuit SSML, waarmee je extra controle hebt over hoe Amazon Polly spraak genereert uit de aangeleverde tekst. Amazon Polly biedt ook een verscheidenheid aan verschillende stemmen in meerdere talen om uw behoeften te ondersteunen.
Ga aan de slag met AWS machine learning-services door naar de: product pagina, of verwijs de Amazon Machine Learning Solutions-lab pagina waar u kunt samenwerken met experts om machine learning-oplossingen naar uw organisatie te brengen.
Extra middelen
Raadpleeg het volgende voor meer informatie over de services die in deze oplossing worden gebruikt:
Over de auteurs
Reagan Rosario werkt als solution architect bij AWS met een focus op onderwijstechnologiebedrijven. Hij helpt klanten graag bij het bouwen van schaalbare, zeer beschikbare en veilige oplossingen in de AWS Cloud. Hij heeft meer dan tien jaar ervaring in verschillende technologische rollen, met een focus op software-engineering en architectuur.
Anil Kodali is Solutions Architect bij Amazon Web Services. Hij werkt samen met AWS EdTech-klanten en begeleidt hen met best practices op het gebied van architectuur voor het migreren van bestaande workloads naar de cloud en het ontwerpen van nieuwe workloads met een cloud-first-aanpak. Voordat hij bij AWS kwam, werkte hij met grote retailers om hen te helpen met hun cloudmigraties.
Prasanna Saraswathi Krishnan is Solutions Architect bij Amazon Web Services en werkt samen met EdTech-klanten. Hij helpt hen hun cloudarchitectuur en datastrategie te sturen met behulp van best practices. Zijn achtergrond ligt in gedistribueerde computing, big data-analyse en data-engineering. Hij is gepassioneerd door machine learning en natuurlijke taalverwerking.
- AI
- ai kunst
- ai kunst generator
- je hebt een robot
- Amazon ML Solutions-lab
- Amazon Polly
- Amazon Transcribe
- Amazon Vertalen
- kunstmatige intelligentie
- certificering van kunstmatige intelligentie
- kunstmatige intelligentie in het bankwezen
- kunstmatige intelligentie robot
- kunstmatige intelligentie robots
- kunstmatige intelligentiesoftware
- AWS-machine learning
- blockchain
- blockchain conferentie ai
- vindingrijk
- conversatie kunstmatige intelligentie
- crypto conferentie ai
- van dall
- diepgaand leren
- google ai
- machine learning
- Plato
- plato ai
- Plato gegevensintelligentie
- Plato-spel
- PlatoData
- platogamen
- schaal ai
- syntaxis
- zephyrnet