Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS

За останні кілька років онлайн-освітні платформи спостерігали збільшення запровадження та зростання попиту на навчання на основі відео, оскільки воно пропонує ефективне середовище для залучення учнів. Щоб вийти на міжнародні ринки та звернути увагу на культурно та лінгвістично різноманітне населення, компанії також шукають можливість урізноманітнити свої навчальні пропозиції шляхом локалізації вмісту кількома мовами. Ці компанії шукають надійні та економічно ефективні способи вирішення своїх випадків локалізації.

Локалізація вмісту в основному включає переклад оригінальних голосів на нові мови та додавання візуальних засобів, таких як субтитри. Традиційно цей процес є надто дорогим, ручним і займає багато часу, включаючи роботу з фахівцями з локалізації. Завдяки потужності сервісів машинного навчання (ML) AWS, таких як Амазонська розшифровка, Amazon Translate та Амазонка Поллі, ви можете створити життєздатне та економічно ефективне рішення локалізації. Ви можете використовувати Amazon Transcribe, щоб створити стенограму наявних аудіо- та відеопотоків, а потім перекласти цю стенограму кількома мовами за допомогою Amazon Translate. Потім ви можете використовувати Amazon Polly, службу перетворення тексту в мовлення, щоб перетворити перекладений текст на природно звучачу людську мову.

Наступним кроком локалізації є додавання субтитрів до вмісту, що може покращити доступність і розуміння, а також допомогти глядачам краще зрозуміти відео. Створення субтитрів у відеоконтенті може бути складним, оскільки переклад мови не збігається з оригінальним мовленням. Ця синхронізація між звуком і субтитрами є критично важливою задачею, оскільки вона може відключити аудиторію від вашого вмісту, якщо вони не синхронізовані. Amazon Polly пропонує вирішення цієї проблеми шляхом увімкнення мовленнєві знаки, який можна використовувати для створення файлу субтитрів, який можна синхронізувати зі згенерованим мовним виводом.

У цій публікації ми розглядаємо рішення локалізації за допомогою служб AWS ML, де ми використовуємо оригінальне відео англійською мовою та перетворюємо його на іспанську мову. Ми також зосереджуємося на використанні мовних позначок для створення синхронізованого файлу субтитрів іспанською мовою.

Огляд рішення

Наступна діаграма ілюструє архітектуру рішення.

Рішення приймає відеофайл і налаштування цільової мови як вхідні дані та використовує Amazon Transcribe для створення транскрипції відео. Потім ми використовуємо Amazon Translate, щоб перекласти розшифровку на цільову мову. Перекладений текст надається як вхідні дані в Amazon Polly для створення аудіопотоку та мовних позначок цільовою мовою. Amazon Polly повертається вихід мовних знаків у потоці JSON із розділеними рядками, який містить такі поля, як час, тип, початок, кінець і значення. Значення може змінюватися залежно від типу мовного знака, запитуваного у вхідних даних, наприклад SSML, вісема, слово чи речення. Для цілей нашого прикладу ми запросили тип мовного знака as word. За допомогою цього параметра Amazon Polly розбиває речення на окремі слова в реченні та час їх початку та закінчення в аудіопотоці. За допомогою цих метаданих мовні позначки потім обробляються для створення субтитрів для відповідного аудіопотоку, створеного Amazon Polly.

Нарешті використовуємо AWS Elemental MediaConvert щоб відтворити остаточне відео з перекладеним аудіо та відповідними субтитрами.

Наступне відео демонструє остаточний результат рішення:

Робочий процес AWS Step Functions

Ми використовуємо Функції кроку AWS організовувати цей процес. На наступному малюнку показано високорівневе подання робочого циклу крокових функцій (деякі кроки пропущено на діаграмі для кращої ясності).

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Етапи робочого процесу такі:

  1. Користувач завантажує вихідний відеофайл на Служба простого зберігання Amazon (Amazon S3) відро.
  2. Команда Сповіщення про подію S3 запускає AWS Lambda функція state_machine.py (не показано на схемі), який викликає автомат стану Step Functions.
  3. Перший крок, Транскрибувати аудіо, викликає функцію Лямбда transcribe.py, який використовує Amazon Transcribe для створення розшифровки аудіо з вихідного відео.

Наведений нижче приклад коду демонструє, як створити завдання транскрипції за допомогою Amazon Transcribe Бото3 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
)

Після завершення завдання вихідні файли зберігаються у відро S3, і процес продовжується до наступного кроку перекладу вмісту.

  1. Команда Перекласти транскрипцію крок викликає функцію Лямбда translate.py який використовує Amazon Translate для перекладу розшифровки на цільову мову. Тут ми використовуємо синхронний переклад/переклад у реальному часі за допомогою переклад_тексту функція:
    # Real-time translation
    response = translate.translate_text(
        Text=transcribe_text,
        SourceLanguageCode=source_language_code,
        TargetLanguageCode=target_language_code,
    )
    

    Синхронний переклад має обмеження щодо розміру документа, який він може перекласти; на момент написання цієї статті встановлено значення 5,000 байт. Для документів більшого розміру розгляньте можливість використання асинхронного маршруту створення завдання за допомогою start_text_translation_job і перевірити статус через describe_text_translation_job.

  2. Наступним кроком є ​​крокові функції Паралельні стан, де ми створюємо паралельні гілки в нашій машині стану.
    1. У першій гілці ми викликаємо функцію Lambda generate_polly_audio.py щоб створити наш аудіопотік 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']

      Тут ми використовуємо почати_завдання на_синтез_мовлення Amazon Polly Python SDK для запуску завдання синтезу мовлення, яке створює аудіо Amazon Polly. Ми встановили OutputFormat до mp3, який повідомляє Amazon Polly створити аудіопотік для цього виклику API.

    2. У другій гілці ми викликаємо функцію Lambda generate_speech_marks.py щоб згенерувати вихідні позначки мови:
      ....
      # 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']

На наступному кроці другої гілки ми викликаємо функцію Lambda generate_subtitles.py, який реалізує логіку генерації файлу субтитрів із виведення мовних позначок.

Він використовує модуль Python у файлі webvtt_utils.py. Цей модуль має кілька службових функцій для створення файлу субтитрів; один із таких методів get_phrases_from_speechmarks відповідає за аналіз файлу мовних позначок. Структура мовних позначок JSON надає лише час початку для кожного слова окремо. Щоб створити хронометраж субтитрів, необхідний для файлу SRT, ми спочатку створюємо фрази приблизно з n (де n=10) слів зі списку слів у файлі мовних позначок. Потім ми записуємо їх у формат файлу SRT, беручи час початку з першого слова у фразі, а для часу закінчення ми використовуємо час початку (n+1) слова та віднімаємо його на 1, щоб створити послідовний запис . Наступна функція створює фрази для підготовки до запису їх у файл 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. Останній крок, Медіа Конвертувати, викликає функцію Лямбда create_mediaconvert_job.py щоб об’єднати аудіопотік із Amazon Polly і файл субтитрів із вихідним відеофайлом для створення остаточного вихідного файлу, який потім зберігається у відрі S3. Цей крок використовує MediaConvert, служба перекодування відео на основі файлів із функціями трансляції. Він дозволяє легко створювати вміст відео на вимогу та поєднує розширені відео та аудіо можливості з простим веб-інтерфейсом. Тут ми знову використовуємо Python Бото3 SDK для створення a MediaConvert робота:
    ……
    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"])

Передумови

Перш ніж почати, у вас повинні бути такі передумови:

Розгорніть рішення

Щоб розгорнути рішення за допомогою AWS CDK, виконайте такі дії:

  1. Клонуйте Сховище:
    git clone https://github.com/aws-samples/localize-content-using-aws-ml-services.git 

  2. Щоб переконатися, що AWS CDK є завантажений, запустіть команду cdk bootstrap з кореня сховища:
    $ 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. Змініть робочий каталог на корінь сховища та виконайте таку команду:
    cdk deploy

За замовчуванням для параметрів цільового аудіо встановлено іспанську (США) (es-US). Якщо ви плануєте перевірити його з іншою цільовою мовою, скористайтеся такою командою:

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

Процес триває кілька хвилин, після чого відображається посилання, за яким можна переглянути цільовий відеофайл із перекладеним аудіо та перекладеними субтитрами.

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Перевірте розчин

Щоб перевірити це рішення, ми використали невелику частину наведеного нижче Відео AWS re:Invent 2017 з YouTube, де вперше було представлено Amazon Transcribe. Ви також можете перевірити рішення за допомогою власного відео. Оригінальна мова нашого тестового відео – англійська. Під час розгортання цього рішення можна вказати параметри цільового аудіо або використати параметри цільового аудіо за замовчуванням, які використовують іспанську мову для створення аудіо та субтитрів. Рішення створює сегмент S3, який можна використовувати для завантаження відеофайлу.

  1. На консолі Amazon S3 перейдіть до сегмента PollyBlogBucket.
    Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  2. Виберіть відро, перейдіть до /inputVideo і завантажте відеофайл (рішення перевірено з відео типу mp4). У цей момент сповіщення про подію S3 запускає функцію Lambda, яка запускає кінцевий автомат.
  3. На консолі Step Functions перейдіть до кінцевого автомата (ProcessAudioWithSubtitles).
  4. Виберіть один із запусків кінцевого автомата, щоб знайти Інспектор графів.

Це показує результати запуску для кожного стану. Робочий цикл функцій кроку займає кілька хвилин, після чого ви можете перевірити, чи всі кроки виконано успішно.

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Перегляньте результат

Щоб переглянути результат, відкрийте консоль Amazon S3 і перевірте, чи аудіофайл (.mp3) і файл мовної позначки (.marks) зберігаються у відрі S3 у розділі <ROOT_S3_BUCKET>/<UID>/synthesisOutput/.

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Нижче наведено зразок файлу мовних позначок, згенерованого з перекладеного тексту:

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

У цьому виводі кожна частина тексту розбита на мовні знаки:

  • час – Мітка часу в мілісекундах від початку відповідного аудіопотоку
  • тип – Тип мовного знака (речення, слово, візема або SSML)
  • старт – Зсув у байтах (не символах) початку об’єкта у вхідному тексті (не враховуючи позначки візем)
  • кінець – Зсув у байтах (не символах) кінця об’єкта у вхідному тексті (не враховуючи позначки візем)
  • значення – Окремі слова в реченні

Згенерований файл субтитрів записується назад у відро S3. Ви можете знайти файл під <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/. Перегляньте файл субтитрів; зміст має бути схожим на наступний текст:

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

Після створення файлу субтитрів і аудіофайлу за допомогою MediaConvert створюється остаточний вихідний відеофайл. Перевірте консоль MediaConvert, щоб перевірити, чи є статус завдання COMPLETE.

Після завершення завдання MediaConvert створюється остаточний відеофайл і зберігається назад у відро S3, яке можна знайти під <ROOT_S3_BUCKET>/<UID>/convertedAV/.

У рамках цього розгортання остаточне відео розповсюджується через an Amazon CloudFront (CDN) і відображається в терміналі або в AWS CloudFormation Консоль.

Відкрийте URL-адресу в браузері, щоб переглянути оригінальне відео з додатковими параметрами аудіо та субтитрів. Ви можете перевірити, чи синхронізовано перекладене аудіо та субтитри.

Висновок

У цій публікації ми обговорили, як створити нові мовні версії відеофайлів без необхідності втручання вручну. Творці вмісту можуть використовувати цей процес для синхронізації звуку та субтитрів своїх відео та охоплення глобальної аудиторії.

Ви можете легко інтегрувати цей підхід у власні виробничі лінії, щоб обробляти великі обсяги та масштабувати відповідно до ваших потреб. Amazon Поллі використовує Neural TTS (NTTS) створювати природні та схожі на людські голоси тексту в мовлення. Він також підтримує генерування мови з SSML, що дає вам додатковий контроль над тим, як Amazon Polly генерує мову з наданого тексту. Amazon Polly також надає a різноманітність різних голосів кількома мовами для підтримки ваших потреб.

Почніть роботу зі службами машинного навчання AWS, відвідавши веб-сайт Сторінка продукту, або зверніться до Лабораторія рішень машинного навчання Amazon сторінка, де ви можете співпрацювати з експертами, щоб запровадити рішення машинного навчання для вашої організації.

Додаткові ресурси

Щоб отримати додаткові відомості про служби, які використовуються в цьому рішенні, див.


Про авторів

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Рейган Розаріо працює архітектором рішень в AWS, зосереджуючись на компаніях освітніх технологій. Йому подобається допомагати клієнтам створювати масштабовані, високодоступні та безпечні рішення в хмарі AWS. Він має більш ніж десятирічний досвід роботи на різних технологічних посадах, зосереджуючись на розробці програмного забезпечення та архітектурі.

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Аніл Кодалі є архітектором рішень Amazon Web Services. Він працює з клієнтами AWS EdTech, навчаючи їх найкращими архітектурними методами переміщення наявних робочих навантажень у хмару та проектування нових робочих навантажень із підходом, орієнтованим на хмару. До того, як приєднатися до AWS, він працював з великими роздрібними торговцями, щоб допомогти їм з міграцією в хмару.

Локалізуйте вміст кількома мовами за допомогою сервісів машинного навчання AWS PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Прасанна Сарасваті Крішнан є архітектором рішень Amazon Web Services, який працює з клієнтами EdTech. Він допомагає їм розвивати їхню хмарну архітектуру та стратегію даних, використовуючи найкращі практики. Його досвід роботи в області розподілених обчислень, аналітики великих даних та розробки даних. Він захоплюється машинним навчанням і обробкою природної мови.

Часова мітка:

Більше від AWS Машинне навчання