Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Lokalisoi sisältö useille kielille AWS-koneoppimispalveluiden avulla

Muutaman viime vuoden aikana verkkokoulutusalustoilla on havaittu videopohjaisen oppimisen omaksumisen ja kysynnän kasvun, koska se tarjoaa tehokkaan välineen oppijoiden sitouttamiseen. Laajentuakseen kansainvälisille markkinoille ja kohdellakseen kulttuurisesti ja kielellisesti monimuotoista väestöä yritykset pyrkivät myös monipuolistamaan oppimistarjontaansa lokalisoimalla sisältöä useille kielille. Nämä yritykset etsivät luotettavia ja kustannustehokkaita tapoja ratkaista lokalisoinnin käyttötapaukset.

Sisällön lokalisointi sisältää pääasiassa alkuperäisten äänien kääntämisen uusille kielille ja visuaalisten apuvälineiden, kuten tekstityksen, lisäämisen. Perinteisesti tämä prosessi on kustannuksiltaan estävä, manuaalinen ja vie paljon aikaa, mukaan lukien työskentely lokalisointiasiantuntijoiden kanssa. AWS-koneoppimispalveluiden (ML) voimalla, kuten Amazonin transkriptio, Amazon Käännäja Amazon Polly, voit luoda toteuttamiskelpoisen ja kustannustehokkaan lokalisointiratkaisun. Voit käyttää Amazon Transcribea luodaksesi transkription olemassa olevista ääni- ja videovirroistasi ja kääntää sitten tämän transkription useille kielille käyttämällä Amazon Translatea. Voit sitten käyttää Amazon Pollya, tekstistä puheeksi -palvelua, muuntaaksesi käännetyn tekstin luonnolliselta kuulostavaksi ihmispuheeksi.

Lokalisoinnin seuraava vaihe on tekstityksen lisääminen sisältöön, mikä voi parantaa käytettävyyttä ja ymmärtämistä sekä auttaa katsojia ymmärtämään videoita paremmin. Tekstityksen luominen videosisällössä voi olla haastavaa, koska käännetty puhe ei vastaa alkuperäistä puheen ajoitusta. Tämä äänen ja tekstityksen välinen synkronointi on erittäin tärkeä tehtävä, koska se saattaa katkaista yleisön sisällöstäsi, jos he eivät ole synkronoituja. Amazon Polly tarjoaa ratkaisun tähän haasteeseen mahdollistamalla puhe merkinnät, jonka avulla voit luoda tekstitystiedoston, joka voidaan synkronoida luodun puheen kanssa.

Tässä viestissä tarkastelemme AWS ML -palveluita käyttävää lokalisointiratkaisua, jossa käytämme alkuperäistä englanninkielistä videota ja muunnamme sen espanjaksi. Keskitymme myös puhemerkkien käyttöön luomaan synkronoituja espanjankielisiä tekstitystiedostoja.

Ratkaisun yleiskatsaus

Seuraava kaavio kuvaa ratkaisuarkkitehtuuria.

Ratkaisu ottaa videotiedoston ja kohdekieliasetukset syötteenä ja käyttää Amazon Transcribea videon transkription luomiseen. Käytämme sitten Amazon Translatea kääntääksemme transkription kohdekielelle. Käännetty teksti toimitetaan syötteenä Amazon Pollylle äänivirran ja puheen luomiseksi kohdekielellä. Amazon Polly palaa puhemerkin tulos rivillä erotetussa JSON-virrassa, joka sisältää kentät, kuten aika, tyyppi, alku, loppu ja arvo. Arvo voi vaihdella syötteeseen pyydetyn puhemerkin tyypin mukaan, kuten esim SSML, viseme, sana tai lause. Esimerkkiämme varten pyysimme puhemerkin tyyppi as word. Tällä vaihtoehdolla Amazon Polly jakaa lauseen yksittäisiksi sanoiksi lauseessa ja niiden alkamis- ja päättymisaikoihin äänivirrassa. Tämän metadatan avulla puhemerkit käsitellään sitten tekstityksen luomiseksi vastaavalle Amazon Pollyn luomalle äänivirralle.

Lopuksi käytämme AWS Elemental MediaConvert tehdäksesi lopullisen videon käännetyllä äänellä ja vastaavalla tekstityksellä.

Seuraava video havainnollistaa ratkaisun lopputuloksen:

AWS Step Functions -työnkulku

Käytämme AWS-vaihetoiminnot ohjaamaan tätä prosessia. Seuraavassa kuvassa on korkean tason näkymä Step Functions -työnkulusta (jotkut vaiheet on jätetty pois kaaviosta selvyyden vuoksi).

Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Työnkulun vaiheet ovat seuraavat:

  1. Käyttäjä lataa lähdevideotiedoston Amazonin yksinkertainen tallennuspalvelu (Amazon S3)-kauha.
  2. - S3 tapahtumailmoitus laukaisee AWS Lambda toiminto state_machine.py (ei näy kaaviossa), joka kutsuu Step Functions -tilakoneen.
  3. Ensimmäinen askel, Literoi ääni, kutsuu Lambda-funktion transcribe.py, joka käyttää Amazon Transcribea luomaan transkription lähdevideon äänestä.

Seuraava esimerkkikoodi näyttää kuinka luodaan transkriptiotyö Amazon Transcriben avulla Boto3 Python SDK:

response = transcribe.start_transcription_job(
    TranscriptionJobName = jobName,
    MediaFormat=media_format,
    Media = {"MediaFileUri": "s3://"+bucket+"/"+mediaconvert_video_filename},
    OutputBucketName=bucket,
    OutputKey=outputKey,
    IdentifyLanguage=True
)

Kun työ on valmis, tulostiedostot tallennetaan S3-säihöön ja prosessi jatkuu sisällön kääntämisen seuraavaan vaiheeseen.

  1. - Käännä transkriptio vaihe kutsuu lambda-funktion translate.py joka käyttää Amazon Translatea kääntämään transkription kohdekielelle. Tässä käytämme synkronista/reaaliaikaista käännöstä käyttämällä käännä_teksti toiminto:
    # Real-time translation
    response = translate.translate_text(
        Text=transcribe_text,
        SourceLanguageCode=source_language_code,
        TargetLanguageCode=target_language_code,
    )
    

    Synkronisella käännöksellä on rajoituksia sen käännettävälle asiakirjalle. tätä kirjoitettaessa se on asetettu 5,000 XNUMX tavuun. Jos asiakirjakoko on suurempi, harkitse asynkronisen reitin käyttämistä työn luomiseen käyttämällä aloita_tekstin_käännöstyö ja tilan tarkistaminen kautta kuvaus_tekstin_käännöstyö.

  2. Seuraava vaihe on askelfunktiot Parallel tila, jossa luomme rinnakkaisia ​​haaroja tilakoneeseemme.
    1. Ensimmäisessä haarassa kutsumme Lambda-funktion Lambda-funktion gener_polly_audio.py luodaksesi Amazon Polly -äänistreamimme:
      # Set up the polly and translate services
      client = boto3.client('polly')
      
      # Use the translated text to create the synthesized speech
      response = client.start_speech_synthesis_task(
                   Engine="standard", LanguageCode="es", OutputFormat="mp3",
                   SampleRate="22050", Text=polly_text, VoiceId="Miguel",
                   TextType="text",
                   OutputS3BucketName="S3-bucket-name",
                   OutputS3KeyPrefix="-polly-recording")
      audio_task_id = response['SynthesisTask']['TaskId']

      Tässä käytämme start_speech_synthesis_task Amazon Polly Python SDK:n menetelmä käynnistää puhesynteesitehtävä, joka luo Amazon Polly -äänen. Asetamme OutputFormat että mp3, joka käskee Amazon Pollya luomaan äänivirran tälle API-kutsulle.

    2. Toisessa haarassa kutsumme Lambda-funktion gener_speech_marks.py luodaksesi puhemerkkien tulosteen:
      ....
      # Use the translated text to create the speech marks
      response = client.start_speech_synthesis_task(
                   Engine="standard", LanguageCode="es", OutputFormat="json",
                   SampleRate="22050", Text=polly_text, VoiceId="Miguel",
                   TextType="text", SpeechMarkTypes=['word'],
                   OutputS3BucketName="S3-bucket-name", 
                   OutputS3KeyPrefix="-polly-speech-marks")
      speechmarks_task_id = response['SynthesisTask']['TaskId']

  • Käytämme jälleen start_speech_synthesis_task menetelmä, mutta määritä OutputFormat että json, joka käskee Amazon Pollya luomaan puhemerkit tälle API-kutsulle.

Toisen haaran seuraavassa vaiheessa kutsumme Lambda-funktion gener_subtitles.py, joka toteuttaa logiikan tekstitystiedoston luomiseksi puhemerkkien lähdöstä.

Se käyttää Python-moduulia tiedostossa webvtt_utils.py. Tässä moduulissa on useita aputoimintoja tekstitystiedoston luomiseen; yksi tällainen menetelmä get_phrases_from_speechmarks on vastuussa puhemerkkitiedoston jäsentämisestä. Puhemerkkien JSON-rakenne tarjoaa vain aloitusajan jokaiselle sanalle erikseen. SRT-tiedoston edellyttämän tekstityksen ajoituksen luomiseksi luomme ensin noin n (missä n=10) sanan lausekkeet puhemerkkitiedoston sanaluettelosta. Sitten kirjoitamme ne SRT-tiedostomuotoon ottamalla aloitusaika lauseen ensimmäisestä sanasta, ja lopetushetkellä käytämme (n+1) sanan alkamisaikaa ja vähennämme sen 1:llä sekvenssimerkinnän luomiseksi. . Seuraava toiminto luo lauseet valmistellakseen niiden kirjoittamista SRT-tiedostoon:

def get_phrases_from_speechmarks(words, transcript):
.....

    for item in items:
        # if it is a new phrase, then get the start_time of the first item
        if n_phrase:
            phrase["start_time"] = get_time_code(words[c]["start_time"])
            n_phrase = False

        else:
            if c == len(words) - 1:
                phrase["end_time"] = get_time_code(words[c]["start_time"])
            else:
                phrase["end_time"] = get_time_code(words[c + 1]["start_time"] - 1)

        # in either case, append the word to the phrase...
        phrase["words"].append(item)
        x += 1

        # now add the phrase to the phrases, generate a new phrase, etc.
        if x == 10 or c == (len(items) - 1):
            # print c, phrase
            if c == (len(items) - 1):
                if phrase["end_time"] == '':
                    start_time = words[c]["start_time"]
                    end_time = int(start_time) + 500
                    phrase["end_time"] = get_time_code(end_time)

            phrases.append(phrase)
            phrase = new_phrase()
            n_phrase = True
            x = 0

        .....

    return phrases

  1. Viimeinen vaihe, Media Convert, kutsuu Lambda-funktion create_mediaconvert_job.py yhdistää Amazon Pollyn äänivirran ja tekstitystiedoston lähdevideotiedostoon lopullisen tulostetiedoston luomiseksi, joka sitten tallennetaan S3-ämpäriin. Tämä vaihe käyttää MediaConvert, tiedostopohjainen videon transkoodauspalvelu, jossa on lähetystason ominaisuuksia. Sen avulla voit helposti luoda video-on-demand -sisältöä ja yhdistää edistyneet video- ja ääniominaisuudet yksinkertaiseen verkkokäyttöliittymään. Tässä taas käytämme Pythonia Boto3 SDK luoda a MediaConvert Job:
    ……
    job_metadata = {'asset_id': asset_id, 'application': "createMediaConvertJob"}
    mc_client = boto3.client('mediaconvert', region_name=region)
    endpoints = mc_client.describe_endpoints()
    mc_endpoint_url = endpoints['Endpoints'][0]['Url']
    
    mc = boto3.client('mediaconvert', region_name=region, endpoint_url=mc_endpoint_url, verify=True)
    
    mc.create_job(Role=mediaconvert_role_arn, UserMetadata=job_metadata, Settings=mc_data["Settings"])

Edellytykset

Ennen kuin aloitat, sinulla on oltava seuraavat edellytykset:

Ota ratkaisu käyttöön

Voit ottaa ratkaisun käyttöön AWS CDK:n avulla suorittamalla seuraavat vaiheet:

  1. Kloonaa säilytyspaikka:
    git clone https://github.com/aws-samples/localize-content-using-aws-ml-services.git 

  2. Varmistaaksesi, että AWS CDK on bootstrapatun, suorita komento cdk bootstrap arkiston juuresta:
    $ cdk bootstrap
    ⏳ Bootstrapping environment aws://<acct#>/<region>...
    Trusted accounts for deployment: (none)
    Trusted accounts for lookup: (none)
    Using default execution policy of 'arn:aws:iam::aws:policy/AdministratorAccess'. Pass '--cloudformation-execution-policies' to customize.
    ✅ Environment aws://<acct#>/<region> bootstrapped (no changes).

  3. Vaihda työhakemisto arkiston juureksi ja suorita seuraava komento:
    cdk deploy

Oletusarvoisesti kohdeääniasetukset on asetettu Yhdysvaltain espanjaksi (es-US). Jos aiot testata sitä toisella kohdekielellä, käytä seuraavaa komentoa:

cdk deploy --parameters pollyLanguageCode=<pollyLanguageCode> 
           --parameters pollyVoiceId=<pollyVoiceId>
           --parameters pollyEngine=<pollyEngine> 
           --parameters mediaConvertLangShort=<mediaConvertLangShort>
           --parameters mediaConvertLangLong=<mediaConvertLangLong>
           --parameters targetLanguageCode=<targetLanguageCode>

Prosessi kestää muutaman minuutin, minkä jälkeen se näyttää linkin, jonka avulla voit tarkastella kohdevideotiedostoa käännetyllä äänellä ja käännetyillä tekstityksillä.

Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Testaa ratkaisu

Tämän ratkaisun testaamiseen käytimme pientä osaa seuraavista AWS re:Invent 2017 -video YouTubesta, jossa Amazon Transcribe esiteltiin ensimmäisen kerran. Voit myös testata ratkaisua omalla videollasi. Testivideomme alkuperäinen kieli on englanti. Kun otat tämän ratkaisun käyttöön, voit määrittää kohdeääniasetukset tai käyttää oletusarvoisia kohdeääniasetuksia, jotka käyttävät espanjaa äänen ja tekstityksen luomiseen. Ratkaisu luo S3-ämpäri, johon voidaan ladata videotiedosto.

  1. Navigoi Amazon S3 -konsolissa ämpäriin PollyBlogBucket.
    Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  2. Valitse kauha ja siirry kohtaan /inputVideo hakemistoon ja lataa videotiedosto (ratkaisu on testattu mp4-tyyppisillä videoilla). Tässä vaiheessa S3-tapahtumailmoitus laukaisee Lambda-toiminnon, joka käynnistää tilakoneen.
  3. Selaa Step Functions -konsolissa tilakoneeseen (ProcessAudioWithSubtitles).
  4. Valitse jokin tilakoneen ajoista löytääksesi Graafin tarkastaja.

Tämä näyttää kunkin osavaltion ajon tulokset. Step Functions -työnkulku kestää muutaman minuutin, minkä jälkeen voit varmistaa, että kaikki vaiheet on suoritettu onnistuneesti.

Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Tarkista tulos

Voit tarkastella tulostetta avaamalla Amazon S3 -konsolin ja tarkistamalla, onko äänitiedosto (.mp3) ja puhemerkkitiedosto (.marks) tallennettu alla olevaan S3-alueeseen. <ROOT_S3_BUCKET>/<UID>/synthesisOutput/.

Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Seuraavassa on esimerkki käännetystä tekstistä luodusta puhemerkkitiedostosta:

{"time":6,"type":"word","start":2,"end":6,"value":"Qué"}
{"time":109,"type":"word","start":7,"end":10,"value":"tal"}
{"time":347,"type":"word","start":11,"end":13,"value":"el"}
{"time":453,"type":"word","start":14,"end":20,"value":"idioma"}
{"time":1351,"type":"word","start":22,"end":24,"value":"Ya"}
{"time":1517,"type":"word","start":25,"end":30,"value":"sabes"}
{"time":2240,"type":"word","start":32,"end":38,"value":"hablé"}
{"time":2495,"type":"word","start":39,"end":44,"value":"antes"}
{"time":2832,"type":"word","start":45,"end":50,"value":"sobre"}
{"time":3125,"type":"word","start":51,"end":53,"value":"el"}
{"time":3227,"type":"word","start":54,"end":59,"value":"hecho"}
{"time":3464,"type":"word","start":60,"end":62,"value":"de"}

Tässä tulosteessa jokainen tekstin osa on jaettu puhemerkkien mukaan:

  • aika – Aikaleima millisekunteina vastaavan äänivirran alusta
  • tyyppi – Puhemerkin tyyppi (lause, sana, viseemi tai SSML)
  • Alkaa – Syöttötekstin objektin alun siirtymä tavuina (ei merkkeinä) (ei sisällä viseemimerkkejä)
  • loppu – Objektin lopun siirtymä tavuina (ei merkkeinä) syöttötekstissä (ei sisällä viseemiä)
  • arvo – Yksittäiset sanat lauseessa

Luotu tekstitystiedosto kirjoitetaan takaisin S3-ämpäriin. Löydät tiedoston alta <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/. Tarkista tekstitystiedosto; sisällön tulee olla samanlainen kuin seuraava teksti:

1
00:00:00,006 --> 00:00:03,226
¿Qué tal el idioma? Ya sabes, hablé antes sobre el

2
00:00:03,227 --> 00:00:06,065
hecho de que el año pasado lanzamos Polly y Lex,

3
00:00:06,066 --> 00:00:09,263
pero hay muchas otras cosas que los constructores quieren hacer

4
00:00:09,264 --> 00:00:11,642
con el lenguaje. Y una de las cosas que ha

5
00:00:11,643 --> 00:00:14,549
sido interesante es que ahora hay tantos datos que están

Kun tekstitystiedosto ja äänitiedosto on luotu, lopullinen lähdevideotiedosto luodaan MediaConvertilla. Tarkista MediaConvert-konsolista, onko työn tila COMPLETE.

Kun MediaConvert-työ on valmis, lopullinen videotiedosto luodaan ja tallennetaan takaisin S3-ämpäriin, joka löytyy kohdasta <ROOT_S3_BUCKET>/<UID>/convertedAV/.

Osana tätä käyttöönottoa lopullinen video jaetaan Amazon CloudFront (CDN) linkki ja näkyy päätteessä tai AWS-pilven muodostuminen konsoli.

Avaa URL-osoite selaimessa nähdäksesi alkuperäisen videon ääni- ja tekstitysvaihtoehtoineen. Voit varmistaa, että käännetty ääni ja tekstitykset ovat synkronoituja.

Yhteenveto

Tässä viestissä keskustelimme siitä, kuinka luoda uusia kieliversioita videotiedostoista ilman manuaalista puuttumista. Sisällöntuottajat voivat käyttää tätä prosessia synkronoidakseen videoidensa äänen ja tekstitykset ja tavoittaakseen maailmanlaajuisen yleisön.

Voit helposti integroida tämän lähestymistavan omiin tuotantoputkiisi käsitelläksesi suuria määriä ja mittakaavaa tarpeidesi mukaan. Amazon Polly käyttää Neuraalinen TTS (NTTS) tuottaa luonnollisia ja ihmisen kaltaisia ​​tekstistä puheeksi -ääniä. Se myös tukee puheen tuottaminen SSML:stä, joka antaa sinulle lisähallinnan siihen, kuinka Amazon Polly luo puhetta annetusta tekstistä. Amazon Polly tarjoaa myös a erilaisia ​​ääniä useilla kielillä tarpeidesi tueksi.

Aloita AWS-koneoppimispalvelujen käyttö vierailemalla osoitteessa Tuotesivu, tai viittaa Amazon Machine Learning Solutions Lab sivu, jolla voit tehdä yhteistyötä asiantuntijoiden kanssa tuodaksesi koneoppimisratkaisuja organisaatioosi.

Lisäresurssit

Lisätietoja tässä ratkaisussa käytetyistä palveluista on seuraavassa osoitteessa:


Tietoja kirjoittajista

Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai. Reagan Rosario toimii ratkaisuarkkitehtina AWS:ssä keskittyen koulutusteknologian yrityksiin. Hän rakastaa auttaa asiakkaita rakentamaan skaalautuvia, erittäin saatavilla olevia ja turvallisia ratkaisuja AWS-pilveen. Hänellä on yli vuosikymmenen kokemus erilaisista teknologiatehtävistä, keskittyen ohjelmistosuunnitteluun ja arkkitehtuuriin.

Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Anil Kodali on ratkaisuarkkitehti Amazon Web Services -palvelussa. Hän työskentelee AWS EdTech -asiakkaiden kanssa ohjaten heitä parhaiden arkkitehtonisten käytäntöjen avulla olemassa olevien työkuormien siirtämiseen pilveen ja uusien työkuormien suunnitteluun pilvilähtöisesti. Ennen AWS:ään liittymistään hän työskenteli suurten jälleenmyyjien kanssa auttaakseen heitä heidän pilvisiirroissaan.

Lokalisoi sisältö useille kielille käyttämällä AWS-koneoppimispalveluita PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Prasanna Saraswathi Krishnan on Amazon Web Services -palveluarkkitehti, joka työskentelee EdTech-asiakkaiden kanssa. Hän auttaa heitä ohjaamaan pilviarkkitehtuuriaan ja datastrategiaansa parhaiden käytäntöjen avulla. Hänen taustansa on hajautetun laskennan, big datan analytiikan ja tietotekniikan parissa. Hän on intohimoinen koneoppimiseen ja luonnolliseen kielen käsittelyyn.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen