Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS

Selama beberapa tahun terakhir, platform pendidikan online telah melihat peningkatan adopsi dan peningkatan permintaan untuk pembelajaran berbasis video karena menawarkan media yang efektif untuk melibatkan pelajar. Untuk memperluas ke pasar internasional dan mengatasi populasi yang beragam secara budaya dan bahasa, bisnis juga mencari diversifikasi penawaran pembelajaran mereka dengan melokalkan konten ke dalam berbagai bahasa. Bisnis ini mencari cara yang andal dan hemat biaya untuk menyelesaikan kasus penggunaan pelokalan mereka.

Melokalkan konten terutama mencakup menerjemahkan suara asli ke dalam bahasa baru dan menambahkan alat bantu visual seperti subtitle. Secara tradisional, proses ini mahal, manual, dan memakan banyak waktu, termasuk bekerja dengan spesialis pelokalan. Dengan kecanggihan layanan pembelajaran mesin (ML) AWS seperti Amazon Transkripsikan, Amazon Terjemahan, dan Amazon Polly, Anda dapat membuat solusi pelokalan yang layak dan hemat biaya. Anda dapat menggunakan Amazon Transcribe untuk membuat transkrip streaming audio dan video yang ada, lalu menerjemahkan transkrip ini ke dalam berbagai bahasa menggunakan Amazon Translate. Anda kemudian dapat menggunakan Amazon Polly, layanan text-to-speech, untuk mengonversi teks yang diterjemahkan menjadi ucapan manusia yang terdengar alami.

Langkah pelokalan berikutnya adalah menambahkan subtitel ke konten, yang dapat meningkatkan aksesibilitas dan pemahaman, serta membantu pemirsa memahami video dengan lebih baik. Pembuatan subtitel pada konten video dapat menjadi tantangan karena ucapan yang diterjemahkan tidak sesuai dengan waktu bicara aslinya. Sinkronisasi antara audio dan subtitel ini merupakan tugas penting untuk dipertimbangkan karena dapat memutuskan penonton dari konten Anda jika mereka tidak sinkron. Amazon Polly menawarkan solusi untuk tantangan ini dengan mengaktifkan tanda bicara, yang dapat Anda gunakan untuk membuat file subtitle yang dapat disinkronkan dengan output ucapan yang dihasilkan.

Dalam posting ini, kami meninjau solusi pelokalan menggunakan layanan AWS ML di mana kami menggunakan video asli bahasa Inggris dan mengubahnya menjadi bahasa Spanyol. Kami juga fokus menggunakan tanda ucapan untuk membuat file subtitle yang disinkronkan dalam bahasa Spanyol.

Ikhtisar solusi

Diagram berikut menggambarkan arsitektur solusi.

Solusinya mengambil file video dan pengaturan bahasa target sebagai input dan menggunakan Amazon Transcribe untuk membuat transkripsi video. Kami kemudian menggunakan Amazon Translate untuk menerjemahkan transkrip ke bahasa target. Teks yang diterjemahkan diberikan sebagai masukan ke Amazon Polly untuk menghasilkan aliran audio dan tanda ucapan dalam bahasa target. Amazon Polly kembali keluaran tanda bicara dalam aliran JSON yang dibatasi garis, yang berisi bidang seperti waktu, jenis, awal, akhir, dan nilai. Nilainya dapat bervariasi tergantung pada jenis tanda ucapan yang diminta dalam input, seperti SSML, viseme, kata, atau kalimat. Untuk tujuan contoh kami, kami meminta jenis tanda bicara as word. Dengan opsi ini, Amazon Polly memecah kalimat menjadi kata-kata tersendiri dalam kalimat dan waktu mulai dan berakhirnya di aliran audio. Dengan metadata ini, tanda ucapan kemudian diproses untuk menghasilkan subtitle untuk aliran audio terkait yang dihasilkan oleh Amazon Polly.

Akhirnya, kami menggunakan Konversi Media Elemen AWS untuk membuat video akhir dengan audio yang diterjemahkan dan subtitle yang sesuai.

Video berikut menunjukkan hasil akhir dari solusi:

Alur kerja AWS Step Functions

Kami menggunakan Fungsi Langkah AWS untuk mengatur proses ini. Gambar berikut menunjukkan tampilan tingkat tinggi dari alur kerja Fungsi Langkah (beberapa langkah dihilangkan dari diagram untuk kejelasan yang lebih baik).

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Langkah-langkah alur kerjanya adalah sebagai berikut:

  1. Seorang pengguna mengunggah file video sumber ke Layanan Penyimpanan Sederhana Amazon (Amazon S3).
  2. Grafik Pemberitahuan acara S3 memicu AWS Lambda fungsi state_machine.py (tidak ditampilkan dalam diagram), yang memanggil mesin status Step Functions.
  3. Langkah pertama, Transkripsikan audio, memanggil fungsi Lambda transkrip.py, yang menggunakan Amazon Transcribe untuk menghasilkan transkrip audio dari video sumber.

Kode contoh berikut menunjukkan cara membuat tugas transkripsi menggunakan Amazon Transcribe bot3 SDK Python:

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

Setelah pekerjaan selesai, file output disimpan ke dalam ember S3 dan proses berlanjut ke langkah berikutnya untuk menerjemahkan konten.

  1. Grafik Terjemahkan transkripsi langkah memanggil fungsi Lambda terjemahkan.py yang menggunakan Amazon Translate untuk menerjemahkan transkrip ke bahasa target. Di sini, kami menggunakan terjemahan sinkron/waktu nyata menggunakan terjemahkan_teks fungsi:
    # Real-time translation
    response = translate.translate_text(
        Text=transcribe_text,
        SourceLanguageCode=source_language_code,
        TargetLanguageCode=target_language_code,
    )
    

    Terjemahan sinkron memiliki batasan pada ukuran dokumen yang dapat diterjemahkan; pada tulisan ini, itu diatur ke 5,000 byte. Untuk ukuran dokumen yang lebih besar, pertimbangkan untuk menggunakan rute asinkron untuk membuat pekerjaan menggunakan mulai_teks_translasi_pekerjaan dan memeriksa status melalui deskripsikan_teks_terjemahan_pekerjaan.

  2. Langkah selanjutnya adalah Fungsi Langkah Paralel negara, di mana kita membuat cabang paralel di mesin negara kita.
    1. Di cabang pertama, kami memanggil fungsi Lambda fungsi Lambda menghasilkan_polly_audio.py untuk menghasilkan aliran audio Amazon Polly kami:
      # 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']

      Di sini kita menggunakan mulai_ucapan_sintesis_tugas metode Amazon Polly Python SDK untuk memicu tugas sintesis ucapan yang membuat audio Amazon Polly. Kami mengatur OutputFormat untuk mp3, yang memberi tahu Amazon Polly untuk menghasilkan aliran audio untuk panggilan API ini.

    2. Di cabang kedua, kami memanggil fungsi Lambda menghasilkan_speech_marks.py untuk menghasilkan keluaran tanda bicara:
      ....
      # 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']

  • Kami kembali menggunakan mulai_ucapan_sintesis_tugas metode tetapi tentukan OutputFormat untuk json, yang memberi tahu Amazon Polly untuk membuat tanda ucapan untuk panggilan API ini.

Pada langkah berikutnya dari cabang kedua, kita memanggil fungsi Lambda menghasilkan_subtitle.py, yang mengimplementasikan logika untuk menghasilkan file subtitle dari keluaran tanda ucapan.

Ini menggunakan modul Python dalam file webvtt_utils.py. Modul ini memiliki beberapa fungsi utilitas untuk membuat file subtitle; salah satu metode tersebut get_phrases_from_speechmarks bertanggung jawab untuk mengurai file tanda ucapan. Struktur JSON tanda ucapan hanya menyediakan waktu mulai untuk setiap kata satu per satu. Untuk membuat pengaturan waktu subtitle yang diperlukan untuk file SRT, pertama-tama kita buat frasa sekitar n (di mana n=10) kata dari daftar kata dalam file tanda ucapan. Kemudian kami menulisnya ke dalam format file SRT, mengambil waktu mulai dari kata pertama dalam frasa, dan untuk waktu akhir kami menggunakan waktu mulai dari kata (n+1) dan menguranginya dengan 1 untuk membuat entri berurutan . Fungsi berikut membuat frasa sebagai persiapan untuk menulisnya ke file 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. Langkah terakhir, Media Convert, memanggil fungsi Lambda buat_mediaconvert_job.py untuk menggabungkan aliran audio dari Amazon Polly dan file subtitle dengan file video sumber untuk menghasilkan file output akhir, yang kemudian disimpan dalam bucket S3. Langkah ini menggunakan MediaConvert, layanan transcoding video berbasis file dengan fitur tingkat siaran. Ini memungkinkan Anda untuk dengan mudah membuat konten video-on-demand dan menggabungkan kemampuan video dan audio tingkat lanjut dengan antarmuka web yang sederhana. Di sini lagi kita menggunakan Python bot3 SDK untuk membuat MediaConvert pekerjaan:
    โ€ฆโ€ฆ
    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"])

Prasyarat

Sebelum memulai, Anda harus memiliki prasyarat berikut:

Terapkan solusinya

Untuk menerapkan solusi menggunakan AWS CDK, selesaikan langkah-langkah berikut:

  1. Clone file gudang:
    git clone https://github.com/aws-samples/localize-content-using-aws-ml-services.git 

  2. Untuk memastikan AWS CDK adalah bootstrap, jalankan perintah cdk bootstrap dari root repositori:
    $ 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. Ubah direktori kerja ke root repositori dan jalankan perintah berikut:
    cdk deploy

Secara default, pengaturan audio target diatur ke Bahasa Spanyol AS (es-US). Jika Anda berencana untuk mengujinya dengan bahasa target yang berbeda, gunakan perintah berikut:

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

Prosesnya memakan waktu beberapa menit untuk diselesaikan, setelah itu akan ditampilkan tautan yang dapat Anda gunakan untuk melihat file video target dengan audio yang diterjemahkan dan subtitle yang diterjemahkan.

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Uji solusinya

Untuk menguji solusi ini, kami menggunakan sebagian kecil dari berikut ini: Video AWS re:Invent 2017 dari YouTube, tempat Amazon Transcribe pertama kali diperkenalkan. Anda juga dapat menguji solusinya dengan video Anda sendiri. Bahasa asli dari video pengujian kami adalah bahasa Inggris. Saat Anda menggunakan solusi ini, Anda dapat menentukan pengaturan audio target atau Anda dapat menggunakan pengaturan audio target default, yang menggunakan bahasa Spanyol untuk menghasilkan audio dan subtitle. Solusinya membuat ember S3 yang dapat digunakan untuk mengunggah file video.

  1. Di konsol Amazon S3, navigasikan ke bucket PollyBlogBucket.
    Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.
  2. Pilih ember, navigasikan ke /inputVideo direktori, dan unggah file video (solusinya diuji dengan video bertipe mp4). Pada titik ini, pemberitahuan peristiwa S3 memicu fungsi Lambda, yang memulai mesin status.
  3. Pada konsol Step Functions, telusuri ke mesin status (ProcessAudioWithSubtitles).
  4. Pilih salah satu menjalankan mesin negara untuk menemukan Inspektur Grafik.

Ini menunjukkan hasil run untuk setiap negara bagian. Alur kerja Step Functions membutuhkan waktu beberapa menit untuk diselesaikan, setelah itu Anda dapat memverifikasi apakah semua langkah berhasil diselesaikan.

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Tinjau hasilnya

Untuk meninjau output, buka konsol Amazon S3 dan periksa apakah file audio (.mp3) dan file tanda ucapan (.marks) disimpan di bucket S3 di bawah <ROOT_S3_BUCKET>/<UID>/synthesisOutput/.

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Berikut ini adalah contoh file tanda ucapan yang dihasilkan dari teks terjemahan:

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

Dalam output ini, setiap bagian teks dipecah dalam hal tanda bicara:

  • waktu โ€“ Stempel waktu dalam milidetik dari awal aliran audio yang sesuai
  • mengetik โ€“ Jenis tanda ujaran (kalimat, kata, viseme, atau SSML)
  • awal โ€“ Offset dalam byte (bukan karakter) dari awal objek dalam teks input (tidak termasuk tanda viseme)
  • akhir โ€“ Offset dalam byte (bukan karakter) dari akhir objek dalam teks input (tidak termasuk tanda viseme)
  • nilai โ€“ Kata-kata individu dalam kalimat

File subtitle yang dihasilkan ditulis kembali ke bucket S3. Anda dapat menemukan file di bawah <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/. Periksa file subtitle; konten harus mirip dengan teks berikut:

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

Setelah file subtitle dan file audio dihasilkan, file video sumber akhir dibuat menggunakan MediaConvert. Periksa konsol MediaConvert untuk memverifikasi apakah status pekerjaan adalah COMPLETE.

Ketika pekerjaan MediaConvert selesai, file video akhir dibuat dan disimpan kembali ke bucket S3, yang dapat ditemukan di bawah <ROOT_S3_BUCKET>/<UID>/convertedAV/.

Sebagai bagian dari penerapan ini, video final didistribusikan melalui sebuah Amazon CloudFront (CDN) dan ditampilkan di terminal atau di Formasi AWS Cloud konsol.

Buka URL di browser untuk melihat video asli dengan opsi tambahan untuk audio dan subtitle. Anda dapat memverifikasi bahwa audio dan subtitle yang diterjemahkan sudah sinkron.

Kesimpulan

Dalam posting ini, kami membahas cara membuat versi bahasa baru dari file video tanpa memerlukan intervensi manual. Pembuat konten dapat menggunakan proses ini untuk menyinkronkan audio dan subtitle video mereka dan menjangkau pemirsa global.

Anda dapat dengan mudah mengintegrasikan pendekatan ini ke dalam jalur produksi Anda sendiri untuk menangani volume dan skala besar sesuai kebutuhan Anda. Amazon Polly menggunakan TTS saraf (NTTS) untuk menghasilkan suara text-to-speech yang alami dan seperti manusia. Ini juga mendukung menghasilkan pidato dari SSML, yang memberi Anda kontrol tambahan atas cara Amazon Polly menghasilkan ucapan dari teks yang disediakan. Amazon Polly juga menyediakan berbagai suara yang berbeda dalam berbagai bahasa untuk mendukung kebutuhan Anda.

Mulai layanan pembelajaran mesin AWS dengan mengunjungi halaman produk, atau rujuk ke Lab Solusi Pembelajaran Mesin Amazon halaman tempat Anda dapat berkolaborasi dengan pakar untuk menghadirkan solusi machine learning ke organisasi Anda.

Sumber daya tambahan

Untuk informasi selengkapnya tentang layanan yang digunakan dalam solusi ini, lihat berikut ini:


Tentang penulis

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Reagan Rosario bekerja sebagai arsitek solusi di AWS yang berfokus pada perusahaan teknologi pendidikan. Dia senang membantu pelanggan membangun solusi yang skalabel, sangat tersedia, dan aman di AWS Cloud. Dia memiliki lebih dari satu dekade pengalaman bekerja di berbagai peran teknologi, dengan fokus pada rekayasa perangkat lunak dan arsitektur.

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Anil Kodali adalah Arsitek Solusi dengan Amazon Web Services. Dia bekerja dengan pelanggan AWS EdTech, membimbing mereka dengan praktik terbaik arsitektur untuk memigrasikan beban kerja yang ada ke cloud dan merancang beban kerja baru dengan pendekatan cloud-first. Sebelum bergabung dengan AWS, dia bekerja dengan pengecer besar untuk membantu mereka dengan migrasi cloud mereka.

Lokalkan konten ke dalam berbagai bahasa menggunakan layanan pembelajaran mesin AWS PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Prasanna Saraswathi Krishnan adalah Arsitek Solusi dengan Amazon Web Services yang bekerja dengan pelanggan EdTech. Dia membantu mereka mendorong arsitektur cloud dan strategi data mereka menggunakan praktik terbaik. Latar belakangnya adalah komputasi terdistribusi, analitik data besar, dan rekayasa data. Dia bersemangat tentang pembelajaran mesin dan pemrosesan bahasa alami.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS