AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.

AWS makine öğrenimi hizmetlerini kullanarak içeriği birden çok dilde yerelleştirin

Son birkaç yılda, çevrimiçi eğitim platformları, öğrencilerin katılımı için etkili bir ortam sunduğu için video tabanlı öğrenmelerin benimsenmesinde ve talepte bir artış gördü. Uluslararası pazarlara açılmak ve kültürel ve dilsel olarak çeşitli bir nüfusa hitap etmek için işletmeler, içeriği birden çok dile yerelleştirerek öğrenme tekliflerini çeşitlendirmeye de bakıyorlar. Bu işletmeler, yerelleştirme kullanım örneklerini çözmek için güvenilir ve uygun maliyetli yollar arıyor.

İçeriği yerelleştirmek, esas olarak orijinal seslerin yeni dillere çevrilmesini ve altyazı gibi görsel yardımcıların eklenmesini içerir. Geleneksel olarak, bu süreç maliyet açısından engelleyicidir, manueldir ve yerelleştirme uzmanlarıyla çalışmak da dahil olmak üzere çok zaman alır. Aşağıdakiler gibi AWS makine öğrenimi (ML) hizmetlerinin gücüyle Amazon Yazısı, Amazon Tercüme, ve Amazon Polly, uygulanabilir ve uygun maliyetli bir yerelleştirme çözümü oluşturabilirsiniz. Mevcut ses ve video akışlarınızın dökümünü oluşturmak için Amazon Transcribe'ı kullanabilir ve ardından bu dökümü Amazon Translate'i kullanarak birden çok dile çevirebilirsiniz. Ardından, çevrilmiş metni kulağa doğal gelen insan konuşmasına dönüştürmek için bir metinden konuşmaya hizmeti olan Amazon Polly'yi kullanabilirsiniz.

Yerelleştirmenin bir sonraki adımı, içeriğe erişilebilirliği ve anlamayı iyileştirebilecek ve izleyicilerin videoları daha iyi anlamalarına yardımcı olabilecek altyazılar eklemektir. Video içeriğinde altyazı oluşturma, çevrilen konuşma orijinal konuşma zamanlaması ile eşleşmediğinden zor olabilir. Ses ve altyazılar arasındaki bu senkronizasyon, dikkate alınması gereken kritik bir görevdir, çünkü senkronize olmazlarsa izleyicilerin içeriğinizle bağlantısını kesebilir. Amazon Polly, etkinleştirme yoluyla bu zorluğa bir çözüm sunuyor Konuşma işaretleriOluşturulan konuşma çıkışıyla senkronize edilebilecek bir altyazı dosyası oluşturmak için kullanabileceğiniz .

Bu gönderide, orijinal bir İngilizce video kullandığımız ve bunu İspanyolca'ya dönüştürdüğümüz AWS ML hizmetlerini kullanan bir yerelleştirme çözümünü inceliyoruz. Ayrıca İspanyolca'da senkronize edilmiş bir altyazı dosyası oluşturmak için konuşma işaretlerini kullanmaya odaklanıyoruz.

Çözüme genel bakış

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

Çözüm, girdi olarak bir video dosyası ve hedef dil ayarlarını alır ve videonun dökümünü oluşturmak için Amazon Transcribe'ı kullanır. Ardından, dökümü hedef dile çevirmek için Amazon Translate'i kullanırız. Çevrilen metin, hedef dilde ses akışını ve konuşma işaretlerini oluşturmak için Amazon Polly'ye bir girdi olarak sağlanır. Amazon Polly geri dönüyor konuşma işareti çıkışı zaman, tür, başlangıç, bitiş ve değer gibi alanları içeren satırla ayrılmış bir JSON akışında. Değer, girişte istenen konuşma işaretinin türüne göre değişebilir, örneğin: SSML, mengene, kelime veya cümle. Örneğimiz için, şunu istedik: konuşma işareti türü as word. Bu seçenekle Amazon Polly, bir cümleyi cümle içindeki tek tek kelimelere ve ses akışındaki başlangıç ​​ve bitiş zamanlarına böler. Bu meta verilerle, konuşma işaretleri daha sonra Amazon Polly tarafından oluşturulan ilgili ses akışı için altyazıları oluşturmak üzere işlenir.

Son olarak, kullanıyoruz AWS Elemental MediaConvert son videoyu çevrilmiş ses ve ilgili altyazılarla birlikte oluşturmak için.

Aşağıdaki video, çözümün nihai sonucunu göstermektedir:

AWS Step Functions iş akışı

Biz kullanmak AWS Basamak İşlevleri Bu süreci düzenlemek için. Aşağıdaki şekil, Step Functions iş akışının üst düzey bir görünümünü göstermektedir (daha iyi anlaşılır olması için bazı adımlar şemadan çıkarılmıştır).

AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.

İş akışı adımları aşağıdaki gibidir:

  1. Bir kullanıcı kaynak video dosyasını bir Amazon Basit Depolama Hizmeti (Amazon S3) kovası.
  2. The S3 olay bildirimi tetikler AWS Lambda işlev durum_makinesi.py (şemada gösterilmemiştir), bu da Step Functions durum makinesini çağırır.
  3. İlk adım, Sesi metne dönüştür, Lambda işlevini çağırır transkripsiyon.py, kaynak videodan sesin bir dökümünü oluşturmak için Amazon Transcribe'ı kullanır.

Aşağıdaki örnek kod, Amazon Transcribe kullanılarak bir transkripsiyon işinin nasıl oluşturulacağını gösterir. Boto3 Python SDK'sı:

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

İş tamamlandıktan sonra çıktı dosyaları S3 kovasına kaydedilir ve süreç, içeriği çevirmenin sonraki adımına devam eder.

  1. The Transkripsiyonu çevir adım Lambda işlevini çağırır tercüme.py Bu, transkripti hedef dile çevirmek için Amazon Translate'i kullanır. Burada, senkron/gerçek zamanlı çeviriyi kullanarak tercüme_metni işlevi:
    # Real-time translation
    response = translate.translate_text(
        Text=transcribe_text,
        SourceLanguageCode=source_language_code,
        TargetLanguageCode=target_language_code,
    )
    

    Eşzamanlı çevirinin, çevirebileceği belge boyutuyla ilgili sınırları vardır; bu yazı itibariyle, 5,000 bayta ayarlanmıştır. Daha büyük belge boyutları için, aşağıdakileri kullanarak işi oluşturmak için eşzamansız bir yol kullanmayı düşünün. start_text_translation_iş ve durumu kontrol ederek tarif_metin_translation_iş.

  2. Bir sonraki adım, bir Adım İşlevleridir. Paralel durum makinemizde paralel dallar oluşturduğumuz durum.
    1. İlk dalda Lambda işlevini, Lambda işlevini çağırıyoruz. create_polly_audio.py Amazon Polly ses akışımızı oluşturmak için:
      # 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']

      Burada kullandığımız start_speech_synthesis_task Amazon Polly sesini oluşturan konuşma sentezi görevini tetiklemek için Amazon Polly Python SDK yöntemi. biz ayarladık OutputFormat için mp3Bu, Amazon Polly'ye bu API çağrısı için bir ses akışı oluşturmasını söyler.

    2. İkinci dalda Lambda fonksiyonunu çağırıyoruz. create_speech_marks.py konuşma işaretleri çıktısı oluşturmak için:
      ....
      # 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']

  • yine kullanırız start_speech_synthesis_task yöntem ama belirtin OutputFormat için json, Amazon Polly'ye bu API çağrısı için konuşma işaretleri oluşturmasını söyler.

İkinci dalın bir sonraki adımında Lambda işlevini çağırıyoruz. create_subtitles.pykonuşma işaretleri çıktısından bir altyazı dosyası oluşturmak için mantığı uygulayan .

Dosyadaki Python modülünü kullanır webvtt_utils.py. Bu modül, altyazı dosyasını oluşturmak için birden çok yardımcı işleve sahiptir; böyle bir yöntem get_phrases_from_speechmarks konuşma işaretleri dosyasının ayrıştırılmasından sorumludur. Konuşma işaretleri JSON yapısı, her bir kelime için ayrı ayrı sadece başlangıç ​​zamanı sağlar. SRT dosyası için gereken altyazı zamanlamasını oluşturmak için, önce konuşma işaretleri dosyasındaki kelimeler listesinden yaklaşık n (n=10) kelimelik ifadeler oluşturuyoruz. Daha sonra SRT dosya formatına, cümledeki ilk kelimeden başlangıç ​​zamanını alarak ve bitiş zamanı için (n+1) kelimenin başlangıç ​​zamanını kullanarak sıralı girişi oluşturmak için 1 ile çıkarıyoruz. . Aşağıdaki işlev, cümleleri SRT dosyasına yazmaya hazırlanırken oluşturur:

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. Son adım, Medya Dönüştürme, Lambda işlevini çağırır create_mediaconvert_job.py Amazon Polly'den gelen ses akışını ve altyazı dosyasını kaynak video dosyasıyla birleştirerek daha sonra bir S3 klasöründe depolanan son çıktı dosyasını oluşturmak. Bu adım kullanır MediaConvert, yayın düzeyinde özelliklere sahip dosya tabanlı bir video kod dönüştürme hizmeti. Kolayca isteğe bağlı video içeriği oluşturmanıza olanak tanır ve gelişmiş video ve ses özelliklerini basit bir web arabirimiyle birleştirir. Burada yine Python kullanıyoruz Boto3 oluşturmak için SDK MediaConvert Görev:
    ……
    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"])

Önkoşullar

Başlamadan önce, aşağıdaki ön koşullara sahip olmanız gerekir:

Çözümü dağıtın

Çözümü AWS CDK kullanarak dağıtmak için aşağıdaki adımları tamamlayın:

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

  2. AWS CDK'nin olduğundan emin olmak için desteksiz, komutu çalıştır cdk bootstrap deponun kökünden:
    $ 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. Çalışma dizinini havuzun kök dizinine değiştirin ve aşağıdaki komutu çalıştırın:
    cdk deploy

Varsayılan olarak, hedef ses ayarları ABD İspanyolcası (es-US). Farklı bir hedef dil ile test etmeyi planlıyorsanız, aşağıdaki komutu kullanın:

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

İşlemin tamamlanması birkaç dakika sürer, ardından hedef video dosyasını çevrilmiş ses ve çevrilmiş altyazılarla birlikte görüntülemek için kullanabileceğiniz bir bağlantı görüntülenir.

AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.

Çözümü test edin

Bu çözümü test etmek için aşağıdakilerin küçük bir kısmını kullandık. AWS re:Invent 2017 videosu Amazon Transcribe'ın ilk kez tanıtıldığı YouTube'dan. Çözümü kendi videonuzla da test edebilirsiniz. Test videomuzun orijinal dili İngilizce'dir. Bu çözümü dağıttığınızda, hedef ses ayarlarını belirtebilir veya ses ve altyazı oluşturmak için İspanyolca'yı kullanan varsayılan hedef ses ayarlarını kullanabilirsiniz. Çözüm, video dosyasını yüklemek için kullanılabilecek bir S3 klasörü oluşturur.

  1. Amazon S3 konsolunda kovaya gidin PollyBlogBucket.
    AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.
  2. Kovayı seçin, /inputVideo dizini ve video dosyasını yükleyin (çözüm mp4 türündeki videolarla test edilmiştir). Bu noktada, bir S3 olay bildirimi, durum makinesini başlatan Lambda işlevini tetikler.
  3. Step Functions konsolunda durum makinesine göz atın (ProcessAudioWithSubtitles).
  4. Yerini bulmak için durum makinesinin çalıştırmalarından birini seçin. Grafik Denetçisi.

Bu, her durum için çalıştırma sonuçlarını gösterir. Step Functions iş akışının tamamlanması birkaç dakika sürer ve ardından tüm adımların başarıyla tamamlanıp tamamlanmadığını doğrulayabilirsiniz.

AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.

Çıktıyı gözden geçirin

Çıktıyı gözden geçirmek için Amazon S3 konsolunu açın ve ses dosyasının (.mp3) ve konuşma işareti dosyasının (.marks) altındaki S3 klasöründe depolanıp saklanmadığını kontrol edin. <ROOT_S3_BUCKET>/<UID>/synthesisOutput/.

AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.

Aşağıda, çevrilmiş metinden oluşturulan konuşma işareti dosyasının bir örneği verilmiştir:

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

Bu çıktıda, metnin her bölümü konuşma işaretleri açısından bölünmüştür:

  • zaman – İlgili ses akışının başlangıcından itibaren milisaniye cinsinden zaman damgası
  • tip – Konuşma işaretinin türü (cümle, sözcük, sözcük öbeği veya SSML)
  • başlama – Giriş metnindeki nesnenin başlangıcının bayt (karakter değil) cinsinden ofseti (viseme işaretleri hariç)
  • son – Giriş metninde nesnenin sonunun bayt cinsinden (karakter değil) uzaklığı (viseme işaretleri hariç)
  • değer - Cümledeki tek tek kelimeler

Oluşturulan altyazı dosyası S3 kovasına geri yazılır. dosyanın altında bulabilirsiniz <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/. Altyazı dosyasını inceleyin; içerik aşağıdaki metne benzer olmalıdır:

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

Altyazı dosyası ve ses dosyası oluşturulduktan sonra, MediaConvert kullanılarak nihai kaynak video dosyası oluşturulur. İş durumunun doğru olup olmadığını doğrulamak için MediaConvert konsolunu kontrol edin. COMPLETE.

MediaConvert işi tamamlandığında, son video dosyası oluşturulur ve altında bulunabilen S3 kovasına geri kaydedilir. <ROOT_S3_BUCKET>/<UID>/convertedAV/.

Bu dağıtımın bir parçası olarak, son video bir Amazon CloudFront (CDN) bağlantısı ve terminalde veya AWS CloudFormation konsol.

Orijinal videoyu ek ses ve altyazı seçenekleriyle görüntülemek için URL'yi bir tarayıcıda açın. Çevrilen ses ve altyazıların senkronize olduğunu doğrulayabilirsiniz.

Sonuç

Bu yazıda, manuel müdahaleye gerek kalmadan video dosyalarının yeni dil versiyonlarının nasıl oluşturulacağını tartıştık. İçerik oluşturucular, videolarının ses ve altyazılarını senkronize etmek ve küresel bir kitleye ulaşmak için bu süreci kullanabilir.

Büyük hacimleri işlemek ve ihtiyaçlarınıza göre ölçeklendirmek için bu yaklaşımı kendi üretim hatlarınıza kolayca entegre edebilirsiniz. Amazon Polly'nin kullandığı Nöral TTS (NTTS) doğal ve insan benzeri metin-konuşma sesleri üretmek. Ayrıca destekler SSML'den konuşma oluşturma, size Amazon Polly'nin sağlanan metinden nasıl konuşma oluşturduğu konusunda ek kontrol sağlar. Amazon Polly ayrıca bir çeşitli farklı sesler ihtiyaçlarınızı desteklemek için birden fazla dilde.

adresini ziyaret ederek AWS makine öğrenimi hizmetlerini kullanmaya başlayın. Ürün sayfasıveya başvurun Amazon Makine Öğrenimi Çözümleri Laboratuvarı Kuruluşunuza makine öğrenimi çözümleri getirmek için uzmanlarla işbirliği yapabileceğiniz sayfa.

Ek kaynaklar

Bu çözümde kullanılan hizmetler hakkında daha fazla bilgi için aşağıdakilere bakın:


yazarlar hakkında

AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai. reagan rosario AWS'de eğitim teknolojisi şirketlerine odaklanan bir çözüm mimarı olarak çalışıyor. Müşterilerin AWS Cloud'da ölçeklenebilir, yüksek düzeyde kullanılabilir ve güvenli çözümler oluşturmasına yardımcı olmayı seviyor. Yazılım mühendisliği ve mimarisine odaklanarak çeşitli teknoloji rollerinde çalışan on yıldan fazla bir deneyime sahiptir.

AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.Anıl Kodali Amazon Web Services ile bir Çözüm Mimarıdır. AWS EdTech müşterileriyle birlikte çalışarak, mevcut iş yüklerini buluta geçirmeye ve bulut öncelikli bir yaklaşımla yeni iş yükleri tasarlamaya yönelik en iyi mimari uygulamalar konusunda onlara rehberlik ediyor. AWS'ye katılmadan önce, bulut geçişlerinde onlara yardımcı olmak için büyük perakendecilerle çalıştı.

AWS makine öğrenimi hizmetleri PlatoBlockchain Data Intelligence'ı kullanarak içeriği birden fazla dilde yerelleştirin. Dikey Arama. Ai.Prasanna Saraswathi Krishnan Amazon Web Services ile EdTech müşterileri ile çalışan bir Çözüm Mimarıdır. En iyi uygulamaları kullanarak bulut mimarilerini ve veri stratejilerini yönlendirmelerine yardımcı olur. Geçmişi dağıtık bilgi işlem, büyük veri analitiği ve veri mühendisliğidir. Makine öğrenimi ve doğal dil işleme konusunda tutkulu.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi