Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS

V zadnjih nekaj letih so spletne izobraževalne platforme opazile povečanje sprejemanja in porast povpraševanja po učenju na podlagi videa, saj ponuja učinkovit medij za vključevanje učencev. Da bi se razširila na mednarodne trge in obravnavala kulturno in jezikovno raznoliko populacijo, si podjetja prizadevajo tudi za diverzifikacijo svoje učne ponudbe z lokalizacijo vsebine v več jezikov. Ta podjetja iščejo zanesljive in stroškovno učinkovite načine za rešitev svojih primerov uporabe lokalizacije.

Lokalizacija vsebine vključuje predvsem prevajanje izvirnih glasov v nove jezike in dodajanje vizualnih pripomočkov, kot so podnapisi. Tradicionalno je ta postopek previsok, ročni in zahteva veliko časa, vključno s sodelovanjem s strokovnjaki za lokalizacijo. Z močjo storitev strojnega učenja (ML) AWS, kot je npr Amazonski prepis, Amazon prevodin Amazon Polly, lahko ustvarite izvedljivo in stroškovno učinkovito rešitev za lokalizacijo. Z Amazon Transcribe lahko ustvarite prepis svojih obstoječih avdio in video tokov in nato ta prepis prevedete v več jezikov s pomočjo Amazon Translate. Nato lahko uporabite Amazon Polly, storitev pretvorbe besedila v govor, da pretvorite prevedeno besedilo v naravno zveneč človeški govor.

Naslednji korak lokalizacije je dodajanje podnapisov vsebini, ki lahko izboljšajo dostopnost in razumevanje ter pomagajo gledalcem bolje razumeti videoposnetke. Ustvarjanje podnapisov na video vsebini je lahko težavno, ker se prevedeni govor ne ujema z izvirnim govornim časom. Ta sinhronizacija med zvokom in podnapisi je kritična naloga, ki jo je treba upoštevati, saj lahko občinstvo prekine povezavo z vašo vsebino, če ni sinhronizirana. Amazon Polly ponuja rešitev za ta izziv z omogočanjem govorne oznake, ki ga lahko uporabite za ustvarjanje datoteke s podnapisi, ki jo je mogoče sinhronizirati z ustvarjenim govornim izhodom.

V tej objavi pregledamo rešitev za lokalizacijo z uporabo storitev AWS ML, kjer uporabimo izvirni angleški video in ga pretvorimo v španščino. Osredotočeni smo tudi na uporabo govornih oznak za ustvarjanje sinhronizirane datoteke s podnapisi v španščini.

Pregled rešitev

Naslednji diagram prikazuje arhitekturo rešitev.

Rešitev vzame video datoteko in nastavitve ciljnega jezika kot vhod ter uporabi Amazon Transcribe za ustvarjanje prepisa videa. Nato uporabimo Amazon Translate za prevod prepisa v ciljni jezik. Prevedeno besedilo je na voljo kot vhod v Amazon Polly za ustvarjanje zvočnega toka in govornih oznak v ciljnem jeziku. Amazonka Polly se vrača izpis govorne oznake v z vrsticami ločenem toku JSON, ki vsebuje polja, kot so čas, vrsta, začetek, konec in vrednost. Vrednost se lahko razlikuje glede na vrsto govorne oznake, zahtevane pri vnosu, kot npr SSML, viseme, besedo ali stavek. Za namen našega primera smo zahtevali vrsta govornega znaka as word. S to možnostjo Amazon Polly razdeli stavek na posamezne besede v stavku ter njihov začetni in končni čas v zvočnem toku. S temi metapodatki se nato govorne oznake obdelajo za ustvarjanje podnapisov za ustrezen zvočni tok, ki ga ustvari Amazon Polly.

Končno uporabimo AWS Elemental MediaConvert za upodabljanje končnega videa s prevedenim zvokom in ustreznimi podnapisi.

Naslednji videoposnetek prikazuje končni rezultat rešitve:

Potek dela AWS Step Functions

Mi uporabljamo Korak funkcije AWS orkestrirati ta proces. Naslednja slika prikazuje pogled na visoki ravni delovnega toka funkcij korakov (nekateri koraki so zaradi boljše jasnosti izpuščeni iz diagrama).

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Koraki poteka dela so naslednji:

  1. Uporabnik naloži izvorno video datoteko v Preprosta storitev shranjevanja Amazon (Amazon S3) vedro.
  2. O S3 obvestilo o dogodku sproži AWS Lambda funkcija state_machine.py (ni prikazano na diagramu), ki prikliče stroj stanja Step Functions.
  3. prvi korak, Prepis zvoka, prikliče funkcijo Lambda transscribe.py, ki uporablja Amazon Transcribe za ustvarjanje prepisa zvoka iz izvornega videa.

Naslednja vzorčna koda prikazuje, kako ustvariti opravilo prepisa z uporabo storitve Amazon Transcribe Boto3 SDK za Python:

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

Ko je opravilo končano, se izhodne datoteke shranijo v vedro S3 in postopek se nadaljuje do naslednjega koraka prevajanja vsebine.

  1. O Prevedi transkripcijo korak prikliče funkcijo Lambda translate.py ki uporablja Amazon Translate za prevajanje prepisa v ciljni jezik. Tukaj uporabljamo sinhroni prevod/prevod v realnem času z uporabo translate_text funkcija:
    # Real-time translation
    response = translate.translate_text(
        Text=transcribe_text,
        SourceLanguageCode=source_language_code,
        TargetLanguageCode=target_language_code,
    )
    

    Sinhrono prevajanje ima omejitve glede velikosti dokumenta, ki ga lahko prevede; od tega pisanja je nastavljen na 5,000 bajtov. Za večje velikosti dokumentov razmislite o uporabi asinhrone poti ustvarjanja opravila z uporabo start_text_translation_job in preverjanje stanja prek describe_text_translation_job.

  2. Naslednji korak so funkcije koraka vzporedno stanje, kjer ustvarimo vzporedne veje v našem državnem stroju.
    1. V prvi veji prikličemo funkcijo Lambda Lambda generate_polly_audio.py za ustvarjanje našega zvočnega toka Amazon Polly:
      # 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']

      Tukaj uporabljamo začetek_naloge za_sintezo_govora Amazon Polly Python SDK za sprožitev naloge sinteze govora, ki ustvari zvok Amazon Polly. Postavili smo OutputFormat do mp3, ki pove Amazon Polly, naj ustvari zvočni tok za ta klic API-ja.

    2. V drugi veji prikličemo funkcijo Lambda generate_speech_marks.py za ustvarjanje govornih oznak:
      ....
      # 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']

  • Ponovno uporabljamo začetek_naloge za_sintezo_govora metodo, vendar navedite OutputFormat do json, ki pove Amazon Polly, naj ustvari govorne oznake za ta klic API-ja.

V naslednjem koraku druge veje prikličemo funkcijo Lambda generate_subtitles.py, ki implementira logiko za ustvarjanje datoteke s podnapisi iz izpisa govornih oznak.

V datoteki uporablja modul Python webvtt_utils.py. Ta modul ima več uporabnih funkcij za ustvarjanje datoteke s podnapisi; ena taka metoda get_phrases_from_speechmarks je odgovoren za razčlenjevanje datoteke z govornimi oznakami. Struktura govornih oznak JSON zagotavlja le začetni čas za vsako besedo posebej. Za ustvarjanje časovnega razporeda podnapisov, ki je potreben za datoteko SRT, najprej ustvarimo besedne zveze s približno n (pri čemer je n=10) besed s seznama besed v datoteki govornih oznak. Nato jih zapišemo v format datoteke SRT, pri čemer vzamemo začetni čas od prve besede v frazi, za končni čas pa uporabimo začetni čas (n+1) besede in ga odštejemo za 1, da ustvarimo zaporedni vnos . Naslednja funkcija ustvari besedne zveze v pripravi za njihovo pisanje v datoteko SRT:

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. Zadnji korak, Media Convert, prikliče funkcijo Lambda create_mediaconvert_job.py da združi zvočni tok iz Amazon Polly in datoteko s podnapisi z izvorno video datoteko, da ustvari končno izhodno datoteko, ki se nato shrani v vedro S3. Ta korak uporablja MediaConvert, storitev za prekodiranje videa na podlagi datotek s funkcijami za oddajanje. Omogoča preprosto ustvarjanje video vsebine na zahtevo in združuje napredne video in avdio zmožnosti s preprostim spletnim vmesnikom. Tukaj spet uporabljamo Python Boto3 SDK za ustvarjanje a MediaConvert delo:
    ……
    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"])

Predpogoji

Preden začnete, morate imeti naslednje predpogoje:

Uvedite rešitev

Če želite uvesti rešitev z uporabo AWS CDK, dokončajte naslednje korake:

  1. Kloniraj Skladišče:
    git clone https://github.com/aws-samples/localize-content-using-aws-ml-services.git 

  2. Za zagotovitev, da je AWS CDK škorenj, zaženite ukaz cdk bootstrap iz korena repozitorija:
    $ 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. Spremenite delovni imenik v koren skladišča in zaženite naslednji ukaz:
    cdk deploy

Privzeto so ciljne zvočne nastavitve nastavljene na ameriško španščino (es-US). Če ga nameravate preizkusiti z drugim ciljnim jezikom, uporabite naslednji ukaz:

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

Postopek traja nekaj minut, nato pa se prikaže povezava, ki jo lahko uporabite za ogled ciljne video datoteke s prevedenim zvokom in prevedenimi podnapisi.

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Preizkusite raztopino

Za preizkus te rešitve smo uporabili majhen del naslednjega Video AWS re:Invent 2017 iz YouTuba, kjer je bil prvič predstavljen Amazon Transcribe. Rešitev lahko preizkusite tudi s svojim videom. Izvirni jezik našega testnega videa je angleščina. Ko uvedete to rešitev, lahko določite nastavitve ciljnega zvoka ali pa uporabite privzete nastavitve ciljnega zvoka, ki za generiranje zvoka in podnapisov uporablja španščino. Rešitev ustvari vedro S3, ki ga je mogoče uporabiti za nalaganje video datoteke.

  1. Na konzoli Amazon S3 se pomaknite do vedra PollyBlogBucket.
    Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  2. Izberite vedro, pojdite na /inputVideo in naložite video datoteko (rešitev je testirana z videoposnetki tipa mp4). Na tej točki obvestilo o dogodku S3 sproži funkcijo Lambda, ki zažene stanje stroj.
  3. Na konzoli Step Functions poiščite stanje avtomata (ProcessAudioWithSubtitles).
  4. Izberite enega od zagonov državnega stroja, da poiščete Inšpektor grafov.

To prikazuje rezultate teka za vsako državo. Dokončanje delovnega toka funkcij korakov traja nekaj minut, nato pa lahko preverite, ali so vsi koraki uspešno zaključeni.

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Preglejte rezultat

Če želite pregledati izpis, odprite konzolo Amazon S3 in preverite, ali sta zvočna datoteka (.mp3) in datoteka z govornimi oznakami (.marks) shranjeni v vedru S3 pod <ROOT_S3_BUCKET>/<UID>/synthesisOutput/.

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Sledi vzorec datoteke govornih oznak, ustvarjene iz prevedenega besedila:

{"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"}

V tem izpisu je vsak del besedila razdeljen glede na govorne oznake:

  • čas – Časovni žig v milisekundah od začetka ustreznega zvočnega toka
  • tip – Vrsta govorne oznake (stavek, beseda, visem ali SSML)
  • Začetek – Odmik v bajtih (ne znakih) začetka predmeta v vhodnem besedilu (brez visemskih oznak)
  • konec – Odmik v bajtih (ne znakih) konca predmeta v vhodnem besedilu (brez visemskih oznak)
  • vrednost – Posamezne besede v povedi

Ustvarjena datoteka s podnapisi se zapiše nazaj v vedro S3. Datoteko najdete pod <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/. Preglejte datoteko s podnapisi; vsebina naj bo podobna naslednjemu besedilu:

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

Ko sta datoteka s podnapisi in zvočna datoteka ustvarjena, se s programom MediaConvert ustvari končna izvorna video datoteka. Preverite konzolo MediaConvert, da preverite, ali je status opravila COMPLETE.

Ko je opravilo MediaConvert končano, se ustvari končna video datoteka in shrani nazaj v vedro S3, ki ga najdete pod <ROOT_S3_BUCKET>/<UID>/convertedAV/.

Kot del te uvedbe se končni videoposnetek distribuira prek Amazon CloudFront (CDN) in prikazana v terminalu ali v Oblikovanje oblaka AWS konzola.

Odprite URL v brskalniku, da si ogledate izvirni video z dodatnimi možnostmi za zvok in podnapise. Lahko preverite, ali so prevedeni zvok in podnapisi sinhronizirani.

zaključek

V tej objavi smo razpravljali o tem, kako ustvariti nove jezikovne različice video datotek brez potrebe po ročnem posredovanju. Ustvarjalci vsebine lahko s tem postopkom sinhronizirajo zvok in podnapise svojih videoposnetkov ter dosežejo globalno občinstvo.

Ta pristop lahko enostavno vključite v svoje lastne proizvodne cevovode za obvladovanje velikih količin in obsega glede na vaše potrebe. Amazon Polly uporablja Nevralni TTS (NTTS) ustvariti naravne in človeškim podobne glasove besedila v govor. Prav tako podpira generiranje govora iz SSML, ki vam daje dodaten nadzor nad tem, kako Amazon Polly ustvarja govor iz ponujenega besedila. Amazon Polly ponuja tudi a raznolikost različnih glasov v več jezikih za podporo vašim potrebam.

Začnite uporabljati storitve strojnega učenja AWS tako, da obiščete Stran izdelka, ali se obrnite na Amazonski laboratorij za strojno učenje stran, kjer lahko sodelujete s strokovnjaki, da v svojo organizacijo uvedete rešitve strojnega učenja.

Dodatni viri

Za več informacij o storitvah, ki se uporabljajo v tej rešitvi, glejte naslednje:


O avtorjih

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai. Reagan Rosario dela kot arhitekt rešitev pri AWS, ki se osredotoča na izobraževalna tehnološka podjetja. Strankam rad pomaga zgraditi razširljive, visoko razpoložljive in varne rešitve v oblaku AWS. Ima več kot desetletje izkušenj z delom na različnih tehnoloških vlogah, s poudarkom na programskem inženiringu in arhitekturi.

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Anil Kodali je arhitekt rešitev pri Amazon Web Services. Sodeluje s strankami AWS EdTech in jih vodi z najboljšimi arhitekturnimi praksami za selitev obstoječih delovnih obremenitev v oblak in načrtovanje novih delovnih obremenitev s pristopom, ki je na prvem mestu v oblaku. Preden se je pridružil AWS, je sodeloval z velikimi trgovci na drobno, da bi jim pomagal pri njihovih migracijah v oblak.

Lokalizirajte vsebino v več jezikov z uporabo storitev strojnega učenja AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Prasanna Saraswathi Krishnan je arhitekt rešitev pri Amazon Web Services, ki dela s strankami EdTech. Pomaga jim upravljati njihovo arhitekturo v oblaku in podatkovno strategijo z uporabo najboljših praks. Njegovo ozadje je porazdeljeno računalništvo, analitika velikih podatkov in podatkovni inženiring. Navdušen je nad strojnim učenjem in obdelavo naravnega jezika.

Časovni žig:

Več od Strojno učenje AWS