Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások segítségével

Az elmúlt néhány évben az online oktatási platformokon megnőtt a videóalapú tanulás elterjedtsége, és megnőtt a kereslet az iránt, mivel ez hatékony médiumot kínál a tanulók bevonására. A nemzetközi piacokra való terjeszkedés és a kulturálisan és nyelvileg sokszínű lakosság megszólítása érdekében a vállalkozások a tartalom több nyelvre történő lokalizálásával is igyekeznek változatossá tenni tanulási kínálatukat. Ezek a vállalkozások megbízható és költséghatékony módszereket keresnek lokalizációs használati eseteik megoldására.

A tartalom lokalizálása elsősorban az eredeti hangok új nyelvekre történő lefordítását és vizuális segédeszközök, például feliratok hozzáadását foglalja magában. Hagyományosan ez a folyamat költséges, manuális, és sok időt vesz igénybe, beleértve a lokalizációs szakemberekkel való együttműködést is. Az AWS gépi tanulási (ML) szolgáltatások erejével, mint pl Amazon átirat, Amazon Translateés Amazon Polly, akkor életképes és költséghatékony lokalizációs megoldást hozhat létre. Az Amazon Transcribe segítségével létrehozhatja meglévő hang- és videofolyamainak átiratát, majd lefordíthatja ezt az átiratot több nyelvre az Amazon Translate segítségével. Ezután használhatja az Amazon Pollyt, egy szövegfelolvasó szolgáltatást, hogy a lefordított szöveget természetes hangzású emberi beszéddé alakítsa.

A lokalizáció következő lépése az, hogy feliratokat adnak a tartalomhoz, ami javíthatja a hozzáférhetőséget és a megértést, valamint segít a nézőknek a videók jobb megértésében. A videotartalom feliratozása kihívást jelenthet, mivel a lefordított beszéd nem egyezik az eredeti beszédidőzítéssel. A hang és a feliratok közötti szinkronizálás kritikus megfontolandó feladat, mivel ez leválaszthatja a közönséget a tartalomról, ha nincsenek szinkronban. Az Amazon Polly megoldást kínál erre a kihívásra az engedélyezésen keresztül beszédjegyek, amivel a generált beszédkimenettel szinkronizálható feliratfájlt hozhatunk létre.

Ebben a bejegyzésben egy AWS ML-szolgáltatásokat használó lokalizációs megoldást tekintünk át, ahol eredeti angol videót használunk, és spanyol nyelvre konvertáljuk. Arra is összpontosítunk, hogy beszédjeleket használjunk szinkronizált spanyol nyelvű feliratfájl létrehozásához.

Megoldás áttekintése

A következő ábra a megoldás architektúráját mutatja be.

A megoldás egy videofájlt és a célnyelvi beállításokat veszi be bemenetként, és az Amazon Transcribe segítségével készíti el a videó átiratát. Ezután az Amazon Translate segítségével lefordítjuk az átiratot a célnyelvre. A lefordított szöveg bemenetként szolgál az Amazon Polly számára, hogy a célnyelven generálja a hangfolyamot és a beszédjeleket. Amazon Polly visszatér beszédjel kimenet sorokkal elválasztott JSON-folyamban, amely olyan mezőket tartalmaz, mint az idő, típus, kezdet, vége és érték. Az érték a bemenetben kért beszédjel típusától függően változhat, mint pl SSML, viseme, szó vagy mondat. Példánk céljából kértük a beszédjel típus as word. Ezzel a lehetőséggel az Amazon Polly felosztja a mondatot a mondatban szereplő egyes szavaira, valamint azok kezdő- és befejezési idejére az audiofolyamban. Ezekkel a metaadatokkal a beszédjelek feldolgozása az Amazon Polly által generált megfelelő hangfolyamhoz tartozó feliratok létrehozásához.

Végül használjuk AWS Elemental MediaConvert a végső videó lefordított hanganyaggal és a megfelelő feliratokkal való megjelenítéséhez.

Az alábbi videó a megoldás végeredményét mutatja be:

AWS Step Functions munkafolyamat

Az általunk használt AWS lépésfunkciók ennek a folyamatnak a megszervezésére. A következő ábra a Step Functions munkafolyamat magas szintű nézetét mutatja (a jobb áttekinthetőség érdekében néhány lépést kihagytunk a diagramból).

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

A munkafolyamat lépései a következők:

  1. A felhasználó feltölti a forrásvideofájlt egy Amazon egyszerű tárolási szolgáltatás (Amazon S3) vödör.
  2. A S3 eseményértesítés kiváltja a AWS Lambda funkció state_machine.py (az ábrán nem látható), amely meghívja a Step Functions állapotgépet.
  3. Az első lépés, Hang átírása, meghívja a Lambda függvényt átír.py, amely az Amazon Transcribe segítségével állítja elő a forrásvideó hangjának átiratát.

A következő mintakód bemutatja, hogyan hozhat létre átírási feladatot az Amazon Transcribe használatával 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
)

A munka befejezése után a kimeneti fájlok az S3 tárolóba kerülnek, és a folyamat folytatódik a tartalom fordításának következő lépésével.

  1. A Az átírás lefordítása lépés meghívja a Lambda függvényt translate.py amely az Amazon Translate segítségével fordítja le az átiratot a célnyelvre. Itt a szinkron/valós idejű fordítást használjuk a szöveg fordítása funkció:
    # Real-time translation
    response = translate.translate_text(
        Text=transcribe_text,
        SourceLanguageCode=source_language_code,
        TargetLanguageCode=target_language_code,
    )
    

    A szinkron fordítás korlátozza a fordítható dokumentum méretét; az írás pillanatában 5,000 bájtra van beállítva. Nagyobb dokumentumméretek esetén fontolja meg a feladat létrehozásának aszinkron útvonalát start_text_translation_job és az állapot ellenőrzése ezen keresztül leírás_szöveg_fordítási_munka.

  2. A következő lépés a Lépésfüggvények Párhuzamos állapot, ahol az állapotgépünkben párhuzamos ágakat hozunk létre.
    1. Az első ágban meghívjuk a Lambda függvényt a Lambda függvényt gener_polly_audio.py Amazon Polly hangfolyamunk létrehozásához:
      # 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']

      Itt használjuk a start_speech_synthesis_task Az Amazon Polly Python SDK metódusa az Amazon Polly hangot létrehozó beszédszintézis feladat elindításához. Beállítottuk a OutputFormat nak nek mp3, amely arra utasítja az Amazon Pollyt, hogy generáljon hangfolyamot ehhez az API-híváshoz.

    2. A második ágban a Lambda függvényt hívjuk meg gener_speech_marks.py beszédjelek kimenetének generálásához:
      ....
      # 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']

  • Ismét használjuk a start_speech_synthesis_task módszert, hanem adja meg OutputFormat nak nek json, amely arra utasítja az Amazon Pollyt, hogy generáljon beszédjeleket ehhez az API-híváshoz.

A második ág következő lépésében a Lambda függvényt hívjuk meg gener_subtitles.py, amely megvalósítja azt a logikát, hogy a beszédjelek kimenetéből feliratfájlt generáljon.

A fájlban található Python modult használja webvtt_utils.py. Ez a modul több segédfunkcióval rendelkezik a feliratfájl létrehozásához; egy ilyen módszer get_phrases_from_speechmarks felelős a beszédjelek fájl elemzéséért. A beszédjelek JSON-struktúrája minden szóhoz külön-külön csak a kezdési időpontot adja meg. Az SRT-fájlhoz szükséges feliratidőzítés létrehozásához először körülbelül n (ahol n=10) szóból álló kifejezéseket hozunk létre a beszédjel-fájlban található szavak listájából. Ezután SRT fájlformátumba írjuk őket, a kezdési időpontot a kifejezés első szavától vesszük, a befejezési időponthoz pedig az (n+1) szó kezdési idejét használjuk, és abból 1-gyel kivonjuk a szekvenált bejegyzést. . A következő függvény létrehozza a kifejezéseket az SRT fájlba való írásuk előkészítéseként:

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. Az utolsó lépés, Media Convert, meghívja a Lambda függvényt create_mediaconvert_job.py az Amazon Polly hangfolyamának és a feliratfájlnak a forrásvideofájllal való kombinálása a végső kimeneti fájl létrehozásához, amelyet aztán egy S3 tárolóban tárolnak. Ez a lépés használja MediaConvert, egy fájl alapú videó-átkódolási szolgáltatás adásminőségű funkciókkal. Lehetővé teszi igény szerinti videotartalom egyszerű létrehozását, és a fejlett video- és audioképességeket egy egyszerű webes felülettel kombinálja. Itt is a Python-t használjuk Boto3 SDK létrehozásához a MediaConvert munka:
    ……
    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"])

Előfeltételek

Mielőtt elkezdené, a következő előfeltételekkel kell rendelkeznie:

Telepítse a megoldást

A megoldás AWS CDK használatával történő üzembe helyezéséhez hajtsa végre a következő lépéseket:

  1. Klónozza a raktár:
    git clone https://github.com/aws-samples/localize-content-using-aws-ml-services.git 

  2. Hogy megbizonyosodjon arról, hogy az AWS CDK bakancsos, futtassa a parancsot cdk bootstrap az adattár gyökeréből:
    $ 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. Módosítsa a munkakönyvtárat a lerakat gyökerére, és futtassa a következő parancsot:
    cdk deploy

Alapértelmezés szerint a cél hangbeállítások amerikai spanyolra vannak állítva (es-US). Ha egy másik célnyelvvel tervezi tesztelni, használja a következő parancsot:

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

A folyamat néhány percet vesz igénybe, majd egy hivatkozást jelenít meg, amelyen megtekintheti a célvideofájlt a lefordított hanggal és a lefordított feliratokkal.

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Tesztelje az oldatot

A megoldás teszteléséhez a következők egy kis részét használtuk AWS re:Invent 2017 videó a YouTube-ról, ahol az Amazon Transcribe először mutatkozott be. A megoldást saját videóddal is tesztelheted. Tesztvideónk eredeti nyelve angol. A megoldás telepítésekor megadhatja a cél hangbeállításokat, vagy használhatja az alapértelmezett célhangbeállításokat, amelyek spanyolul állítják elő a hangot és a feliratokat. A megoldás létrehoz egy S3 tárolót, amelybe fel lehet tölteni a videofájlt.

  1. Az Amazon S3 konzolon navigáljon a vödörhöz PollyBlogBucket.
    Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.
  2. Válassza ki a vödröt, navigáljon a /inputVideo könyvtárba, és töltse fel a videofájlt (a megoldást mp4 típusú videókkal teszteltük). Ezen a ponton egy S3 eseményértesítés elindítja a Lambda funkciót, amely elindítja az állapotgépet.
  3. A Step Functions konzolon tallózással keresse meg az állapotgépet (ProcessAudioWithSubtitles).
  4. Válassza ki az állapotgép egyik futtatását a megkereséséhez Grafikonfelügyelő.

Ez az egyes állapotokhoz tartozó futtatási eredményeket mutatja. A Step Functions munkafolyamat néhány percet vesz igénybe, majd ellenőrizheti, hogy az összes lépést sikeresen végrehajtotta-e.

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Tekintse át a kimenetet

A kimenet áttekintéséhez nyissa meg az Amazon S3 konzolt, és ellenőrizze, hogy az audiofájl (.mp3) és a beszédjel-fájl (.marks) tárolva van-e az S3 tárolóban az alatt. <ROOT_S3_BUCKET>/<UID>/synthesisOutput/.

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Az alábbiakban egy minta látható a lefordított szövegből előállított beszédjel fájlból:

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

Ebben a kimenetben a szöveg minden része beszédjelek szerint van felosztva:

  • idő – Az időbélyeg ezredmásodpercben a megfelelő hangfolyam kezdetétől számítva
  • típus – A beszédjel típusa (mondat, szó, viséma vagy SSML)
  • kezdet – Az objektum elejének eltolása bájtokban (nem karakterekben) a beviteli szövegben (visémajelek nélkül)
  • végén – Az objektum végének eltolása bájtokban (nem karakterekben) a beviteli szövegben (visémajelek nélkül)
  • érték – Egyes szavak a mondatban

A generált feliratfájl visszaírásra kerül az S3 tárolóba. alatt találod a fájlt <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/. Vizsgálja meg a feliratfájlt; a tartalomnak hasonlónak kell lennie a következő szöveghez:

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

A feliratfájl és az audiofájl létrehozása után a MediaConvert segítségével létrejön a végső forrásvideófájl. Ellenőrizze a MediaConvert konzolt, hogy ellenőrizze, hogy a feladat állapota van-e COMPLETE.

Amikor a MediaConvert munka befejeződött, a végső videofájl generálódik, és visszakerül az S3 tárolóba, amely a alatt található. <ROOT_S3_BUCKET>/<UID>/convertedAV/.

Ennek a telepítésnek a részeként a végső videót egy Amazon CloudFront (CDN) hivatkozásra, és megjelenik a terminálban vagy a AWS felhőképződés konzol.

Nyissa meg az URL-t egy böngészőben, hogy megtekinthesse az eredeti videót további hang- és feliratozási lehetőségekkel. Ellenőrizheti, hogy a lefordított hanganyag és a feliratok szinkronban vannak-e.

Következtetés

Ebben a bejegyzésben megvitattuk, hogyan hozhatunk létre videofájlok új nyelvi verzióit manuális beavatkozás nélkül. A tartalomkészítők ezzel a folyamattal szinkronizálhatják videóik hangját és feliratait, és elérhetik a globális közönséget.

Könnyedén integrálhatja ezt a megközelítést saját gyártási folyamataiba, hogy nagy mennyiségeket kezelhessen és az igényeinek megfelelően méretezzen. Amazon Polly használ Neurális TTS (NTTS) természetes és emberszerű szövegfelolvasó hangok előállítására. Az is támogatja beszédet generál SSML-ből, amely további szabályozást biztosít afelől, hogy az Amazon Polly hogyan generál beszédet a megadott szövegből. Az Amazon Polly emellett a különféle hangok több nyelven az Ön igényeinek kielégítésére.

Kezdje el az AWS gépi tanulási szolgáltatásait a webhelyen Termékoldal, vagy hivatkozzon a Amazon Machine Learning Solutions Lab oldal, ahol szakértőkkel együttműködve gépi tanulási megoldásokat hozhat szervezetébe.

További források

A megoldásban használt szolgáltatásokkal kapcsolatos további információkért tekintse meg a következőket:


A szerzőkről

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai. Reagan Rosario megoldástervezőként dolgozik az AWS-nél, oktatástechnológiai cégekre összpontosítva. Szereti az ügyfeleknek segíteni skálázható, magasan elérhető és biztonságos megoldások létrehozásában az AWS Cloudban. Több mint egy évtizedes tapasztalattal rendelkezik különféle technológiai munkakörökben, különös tekintettel a szoftverfejlesztésre és az építészetre.

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Anil Kodali az Amazon Web Services megoldástervezője. Együttműködik az AWS EdTech ügyfeleivel, és bevált építészeti gyakorlatokat mutat be a meglévő munkaterhelések felhőbe való migrálásához, és új munkaterhelések tervezéséhez felhő-első megközelítéssel. Mielőtt csatlakozott volna az AWS-hez, nagy kereskedőkkel dolgozott, hogy segítse őket a felhőbe való migrációban.

Lokalizálja a tartalmat több nyelvre az AWS gépi tanulási szolgáltatások PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Prasanna Saraswathi Krishnan az Amazon Web Services megoldástervezője, aki az EdTech ügyfelekkel dolgozik. Segít nekik felhőarchitektúrájukat és adatstratégiájukat a bevált gyakorlatok segítségével vezetni. Előélete az elosztott számítástechnika, a big data analitika és az adatmérnöki szakma. Szenvedélye a gépi tanulás és a természetes nyelvi feldolgozás.

Időbélyeg:

Még több AWS gépi tanulás