Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid

Viimastel aastatel on veebipõhistel haridusplatvormidel videopõhise õppe kasutuselevõtt ja nõudlus selle järele kasvanud, kuna see pakub õppijate kaasamiseks tõhusat vahendit. Rahvusvahelistele turgudele laienemiseks ning kultuuriliselt ja keeleliselt mitmekesise elanikkonnaga tegelemiseks soovivad ettevõtted mitmekesistada oma õppepakkumisi, lokaliseerides sisu mitmesse keelde. Need ettevõtted otsivad usaldusväärseid ja kulutõhusaid viise lokaliseerimise kasutusjuhtude lahendamiseks.

Sisu lokaliseerimine hõlmab peamiselt originaalhäälte tõlkimist uutesse keeltesse ja visuaalsete abivahendite (nt subtiitrid) lisamist. Traditsiooniliselt on see protsess kulukas, käsitsi ja võtab palju aega, sealhulgas lokaliseerimisspetsialistidega töötamine. Tänu AWS-i masinõppe (ML) teenustele nagu Amazoni transkribeerimine, Amazoni tõlgeja Amazon Polly, saate luua elujõulise ja kulutõhusa lokaliseerimislahenduse. Saate kasutada Amazon Transcribe'i, et luua oma olemasolevatest heli- ja videovoogudest transkriptsioon ja seejärel tõlkida see ärakiri Amazon Translate'i abil mitmesse keelde. Seejärel saate kasutada teksti kõneks muutmise teenust Amazon Polly, et teisendada tõlgitud tekst loomuliku kõlaga inimkõneks.

Lokaliseerimise järgmine samm on lisada sisule subtiitrid, mis võivad parandada juurdepääsetavust ja arusaamist ning aidata vaatajatel videoid paremini mõista. Subtiitrite loomine videosisule võib olla keeruline, kuna tõlgitud kõne ei ühti algse kõne ajastusega. Heli ja subtiitrite vaheline sünkroonimine on kriitilise tähtsusega ülesanne, kuna see võib vaatajaskonna teie sisust lahti ühendada, kui nad pole sünkroonis. Amazon Polly pakub sellele väljakutsele lahendust lubamise kaudu kõnemärgid, mille abil saate luua subtiitrite faili, mida saab genereeritud kõneväljundiga sünkroonida.

Selles postituses vaatame üle lokaliseerimislahenduse, mis kasutab AWS ML teenuseid, kus kasutame originaalset ingliskeelset videot ja teisendame selle hispaania keelde. Samuti keskendume kõnemärkide kasutamisele hispaaniakeelse sünkroonitud subtiitrite faili loomiseks.

Lahenduse ülevaade

Järgnev diagramm illustreerib lahenduse arhitektuuri.

Lahendus võtab sisendiks videofaili ja sihtkeele sätted ning kasutab videost transkriptsiooni loomiseks rakendust Amazon Transcribe. Seejärel kasutame ärakirja sihtkeelde tõlkimiseks Amazon Translate'i. Tõlgitud tekst antakse Amazon Polly sisendiks, et luua sihtkeeles helivoogu ja kõnemärke. Amazon Polly naaseb kõnemärgi väljund readega piiritletud JSON-voos, mis sisaldab selliseid välju nagu aeg, tüüp, algus, lõpp ja väärtus. Väärtus võib varieeruda olenevalt sisendis taotletava kõnemärgi tüübist, näiteks SSML, viseme, sõna või lause. Meie näite jaoks taotlesime kõnemärgi tüüp as word. Selle valikuga jagab Amazon Polly lause üksikuteks sõnadeks lauses ning nende algus- ja lõpuajaks helivoos. Nende metaandmete abil töödeldakse seejärel kõnemärke, et luua Amazon Polly loodud vastava helivoo subtiitrid.

Lõpuks kasutame AWS Elemental MediaConvert lõpliku video renderdamiseks koos tõlgitud heli ja vastavate subtiitritega.

Järgmine video näitab lahenduse lõpptulemust:

AWS-i sammufunktsioonide töövoog

Me kasutame AWS-i astmefunktsioonid selle protsessi korraldamiseks. Järgmisel joonisel on kujutatud sammufunktsioonide töövoo kõrgetasemelist vaadet (mõned sammud on parema selguse huvides diagrammist välja jäetud).

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Töövoo etapid on järgmised.

  1. Kasutaja laadib lähtevideofaili üles Amazoni lihtne salvestusteenus (Amazon S3) kopp.
  2. . S3 sündmuse teatis käivitab AWS Lambda funktsioon state_machine.py (pole diagrammil näidatud), mis kutsub esile astmefunktsioonide olekumasina.
  3. Esimene samm, Heli transkribeerimine, kutsub esile lambda funktsiooni transscribe.py, mis kasutab Amazon Transcribe'i, et genereerida lähtevideo helist transkriptsioon.

Järgmine näidiskood näitab, kuidas Amazon Transcribe'i abil transkriptsioonitööd luua Boto3 Pythoni SDK:

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

Pärast töö lõpetamist salvestatakse väljundfailid S3 ämbrisse ja protsess jätkub sisu tõlkimise järgmise sammuga.

  1. . Transkriptsiooni tõlkimine samm kutsub esile lambda funktsiooni translate.py mis kasutab Amazoni tõlget, et tõlkida ärakiri sihtkeelde. Siin kasutame sünkroonset/reaalajas tõlget, kasutades translate_text funktsioon:
    # Real-time translation
    response = translate.translate_text(
        Text=transcribe_text,
        SourceLanguageCode=source_language_code,
        TargetLanguageCode=target_language_code,
    )
    

    Sünkroontõlkel on tõlgitava dokumendi suuruse piirangud; selle kirjutamise seisuga on see seatud 5,000 baiti. Suuremate dokumentide puhul kaaluge töö loomiseks asünkroonse marsruudi kasutamist algus_teksti_tõlketöö ja oleku kontrollimine kaudu kirjelda_teksti_tõlke_tööd.

  2. Järgmine samm on astmefunktsioonid Parallel olek, kus loome oma olekumasinas paralleelsed harud.
    1. Esimeses harus kutsume välja Lambda funktsiooni Lambda funktsiooni gener_polly_audio.py meie Amazon Polly helivoo loomiseks:
      # 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']

      Siin kasutame start_speech_synthesis_task Amazon Polly Python SDK meetod, et käivitada kõnesünteesi ülesanne, mis loob Amazon Polly heli. Panime paika OutputFormat et mp3, mis käsib Amazon Pollyl selle API-kõne jaoks helivoogu genereerida.

    2. Teises harus kutsume esile lambda funktsiooni gener_speech_marks.py kõnemärkide väljundi genereerimiseks:
      ....
      # 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']

  • Me kasutame taas start_speech_synthesis_task meetod, kuid täpsustage OutputFormat et json, mis käsib Amazon Pollyl selle API-kõne jaoks kõnemärgid genereerida.

Teise haru järgmises etapis kutsume välja lambda funktsiooni gener_subtitles.py, mis rakendab kõnemärkide väljundist subtiitrite faili genereerimise loogikat.

See kasutab failis Pythoni moodulit webvtt_utils.py. Sellel moodulil on subtiitrite faili loomiseks mitu utiliidi funktsiooni; üks selline meetod get_phrases_from_speechmarks vastutab kõnemärkide faili sõelumise eest. Kõnemärkide JSON-i struktuur pakub iga sõna jaoks eraldi algusaega. SRT-faili jaoks vajaliku subtiitrite ajastuse loomiseks loome esmalt kõnemärkide faili sõnade loendist umbes n-sõnalised fraasid (kus n=10). Seejärel kirjutame need SRT-failivormingusse, võttes algusaja fraasi esimesest sõnast ja lõpuaja jaoks kasutame (n+1) sõna algusaega ja lahutame selle 1-ga, et luua järjestatud kirje. . Järgmine funktsioon loob fraasid nende SRT-faili kirjutamise ettevalmistamiseks:

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. Viimane samm, Meedia Convert, kutsub esile lambda funktsiooni create_mediaconvert_job.py ühendada Amazon Polly helivoog ja subtiitrite fail lähtevideofailiga, et genereerida lõplik väljundfail, mis seejärel salvestatakse S3 ämbrisse. See samm kasutab MediaConvert, failipõhine video ümberkodeerimise teenus, millel on leviedastustaseme funktsioonid. See võimaldab teil hõlpsalt luua tellitavat videosisu ning ühendab täiustatud video- ja helivõimalused lihtsa veebiliidesega. Siin kasutame taas Pythonit Boto3 SDK loomiseks a MediaConvert töökoht:
    ……
    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"])

Eeldused

Enne alustamist peavad teil olema järgmised eeltingimused:

Rakendage lahendus

Lahenduse juurutamiseks AWS CDK abil toimige järgmiselt.

  1. Kloonige Hoidla:
    git clone https://github.com/aws-samples/localize-content-using-aws-ml-services.git 

  2. Veendumaks, et AWS CDK on alglaaditud, käivitage käsk cdk bootstrap hoidla juurest:
    $ 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. Muutke töökataloog hoidla juureks ja käivitage järgmine käsk:
    cdk deploy

Vaikimisi on sihtheli seaded seatud USA hispaania keelele (es-US). Kui kavatsete seda testida mõne muu sihtkeelega, kasutage järgmist käsku:

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

Protsessi lõpuleviimiseks kulub mõni minut, pärast mida kuvatakse link, mida saate kasutada sihtvideofaili vaatamiseks koos tõlgitud heli ja tõlgitud subtiitritega.

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Testige lahendust

Selle lahenduse testimiseks kasutasime väikest osa järgnevast AWS re:Invent 2017 video YouTube'ist, kus Amazon Transcribe esmakordselt tutvustati. Lahendust saab testida ka oma videoga. Meie testvideo originaalkeel on inglise keel. Selle lahenduse juurutamisel saate määrata sihthelisätted või kasutada sihtheli vaikesätteid, mis kasutavad heli ja subtiitrite loomiseks hispaania keelt. Lahendus loob S3 ämbri, kuhu saab videofaili üles laadida.

  1. Navigeerige Amazon S3 konsoolis ämbrisse PollyBlogBucket.
    Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  2. Valige ämber, liikuge jaotisse /inputVideo kataloogi ja laadige üles videofail (lahendust testitakse mp4 tüüpi videotega). Sel hetkel käivitab S3 sündmuse teatis lambda funktsiooni, mis käivitab olekumasina.
  3. Sirvige sammufunktsioonide konsoolil olekumasin (ProcessAudioWithSubtitles).
  4. Valige üks olekumasina käitamistest, et leida Graafiku inspektor.

See näitab iga osariigi käitamise tulemusi. Step Functions töövoo lõpuleviimiseks kulub mõni minut, pärast mida saate kontrollida, kas kõik sammud on edukalt lõpule viidud.

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Vaadake väljund üle

Väljundi ülevaatamiseks avage Amazon S3 konsool ja kontrollige, kas helifail (.mp3) ja kõnemärgifail (.marks) on salvestatud all olevasse S3 ämbrisse. <ROOT_S3_BUCKET>/<UID>/synthesisOutput/.

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Järgmine on tõlgitud tekstist genereeritud kõnemärgifaili näidis:

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

Selles väljundis on iga tekstiosa jaotatud kõnemärkide järgi:

  • aeg – ajatempel millisekundites vastava helivoo algusest
  • tüüp - kõnemärgi tüüp (lause, sõna, viseem või SSML)
  • algus – Sisendteksti objekti alguse nihe baitides (mitte tähemärkides) (ei sisalda viseemimärke)
  • lõpp – Objekti lõpu nihe baitides (mitte tähemärkides) sisendtekstis (ei sisalda viseemimärke)
  • väärtus – üksikud sõnad lauses

Loodud subtiitrite fail kirjutatakse tagasi S3 ämbrisse. Faili leiate alt <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/. Kontrollige subtiitrite faili; sisu peaks olema sarnane järgmise tekstiga:

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

Pärast subtiitrite faili ja helifaili loomist luuakse MediaConverti abil lõplik lähtevideofail. Kontrollige MediaConverti konsooli, et kontrollida, kas töö olek on COMPLETE.

Kui MediaConvert töö on lõpetatud, genereeritakse lõplik videofail ja salvestatakse see tagasi S3 ämbrisse, mille leiate <ROOT_S3_BUCKET>/<UID>/convertedAV/.

Selle juurutamise osana levitatakse lõplikku videot rakenduse kaudu Amazon CloudFront (CDN) link ja kuvatakse terminalis või AWS CloudFormation konsooli.

Avage URL brauseris, et vaadata originaalvideot koos heli ja subtiitrite lisavalikutega. Saate kontrollida, kas tõlgitud heli ja subtiitrid on sünkroonis.

Järeldus

Selles postituses arutasime, kuidas luua videofailidest uusi keeleversioone ilma käsitsi sekkumiseta. Sisuloojad saavad seda protsessi kasutada oma videote heli ja subtiitrite sünkroonimiseks ning ülemaailmse vaatajaskonnani jõudmiseks.

Saate hõlpsasti integreerida selle lähenemisviisi oma tootmistorudesse, et hallata suuri mahtusid ja mastaapi vastavalt oma vajadustele. Amazon Polly kasutab Neuraalne TTS (NTTS) luua loomulikke ja inimlikke tekst-kõneks muutvaid hääli. Samuti toetab kõne genereerimine SSML-ist, mis annab teile täiendava kontrolli selle üle, kuidas Amazon Polly esitatud tekstist kõnet genereerib. Amazon Polly pakub ka a mitmesuguseid erinevaid hääli mitmes keeles, et toetada teie vajadusi.

Alustage AWS-i masinõppeteenustega, külastades veebilehte Toote lehtvõi viidake Amazoni masinõppelahenduste labor leht, kus saate teha koostööd ekspertidega, et tuua oma organisatsiooni masinõppelahendusi.

Lisaressursid

Selles lahenduses kasutatavate teenuste kohta lisateabe saamiseks vaadake järgmist.


Autoritest

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai. Reagan Rosario töötab lahenduste arhitektina AWSis, keskendudes haridustehnoloogia ettevõtetele. Talle meeldib aidata klientidel luua AWS-i pilves skaleeritavaid, väga kättesaadavaid ja turvalisi lahendusi. Tal on rohkem kui kümneaastane töökogemus erinevates tehnoloogiaalastes rollides, keskendudes tarkvaratehnikale ja arhitektuurile.

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Anil Kodali on Amazon Web Servicesi lahenduste arhitekt. Ta töötab AWS EdTechi klientidega, juhendades neid parimate arhitektuuriliste tavadega olemasolevate töökoormuste pilve üleviimiseks ja uute töökoormuste kujundamiseks pilvepõhise lähenemisviisiga. Enne AWS-iga liitumist töötas ta suurte jaemüüjatega, et aidata neil pilve migratsioonil.

Lokaliseerige sisu mitmesse keelde, kasutades AWS-i masinõppeteenuseid PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Prasanna Saraswathi Krishnan on Amazon Web Servicesi lahenduste arhitekt, kes töötab EdTechi klientidega. Ta aitab neil parimaid tavasid kasutades juhtida oma pilvearhitektuuri ja andmestrateegiat. Tema taust on hajutatud andmetöötlus, suurandmete analüütika ja andmetehnika. Ta on kirglik masinõppe ja loomuliku keele töötlemise vastu.

Ajatempel:

Veel alates AWS-i masinõpe