Демистификация субтитров Amazon Web Services (AWS): подробное руководство

Amazon Web Services (AWS) предоставляет широкий спектр услуг для удовлетворения различных потребностей в сфере облачных вычислений. Одним из таких сервисов является AWS Captioning, который позволяет создавать субтитры для аудио- и видеоконтента. В этой статье мы рассмотрим несколько методов реализации AWS Captioning и приведем примеры кода, которые помогут вам понять и использовать эту мощную функцию в своих приложениях.

Метод 1: AWS Transcribe
AWS Transcribe — это полностью управляемый сервис автоматического распознавания речи (ASR), который может преобразовывать речь в текст. Он предлагает простой способ создания точных титров из аудио- и видеофайлов. Вот пример использования AWS Transcribe для получения субтитров:

import boto3
def transcribe_audio(file_path):
    transcribe = boto3.client('transcribe')
    response = transcribe.start_transcription_job(
        TranscriptionJobName='CaptionJob',
        LanguageCode='en-US',
        Media={'MediaFileUri': 's3://bucket-name/file-path'}
    )
    print(response)
transcribe_audio('s3://my-bucket/my-audio-file.mp3')

Метод 2: AWS MediaConvert
AWS MediaConvert — это сервис перекодирования видео на основе файлов, который также может создавать субтитры. Он поддерживает широкий спектр входных и выходных форматов, что делает его пригодным для различных рабочих процессов обработки видео. Вот пример использования AWS MediaConvert для субтитров:

import boto3
def convert_video_with_captions(file_path):
    mediaconvert = boto3.client('mediaconvert')
    response = mediaconvert.create_job(
        JobTemplate='CaptioningTemplate',
        Role='arn:aws:iam::1234567890:role/MediaConvertRole',
        Settings={
            'Inputs': [{'FileInput': 's3://bucket-name/file-path'}],
            'OutputGroups': [{
                'OutputGroupSettings': {'Type': 'FILE_GROUP_SETTINGS'},
                'Outputs': [{
                    'Extension': 'mp4',
                    'NameModifier': '_captions',
                    'CaptionDescriptions': [{
                        'CaptionSelectorName': 'Default Language',
                        'DestinationSettings': {'DestinationType': 'SRT'}
                    }]
                }]
            }]
        }
    )
    print(response)
convert_video_with_captions('s3://my-bucket/my-video-file.mp4')

Метод 3: AWS Lambda и AWS Transcribe
Вы также можете использовать AWS Lambda для автоматического запуска службы AWS Transcribe всякий раз, когда новый аудио- или видеофайл загружается в корзину S3. Вот пример того, как это реализовать:

import boto3
def transcribe_audio_with_lambda(event, context):
    s3 = boto3.client('s3')
    transcribe = boto3.client('transcribe')
    file_path = event['Records'][0]['s3']['object']['key']

    response = transcribe.start_transcription_job(
        TranscriptionJobName='CaptionJob',
        LanguageCode='en-US',
        Media={'MediaFileUri': f's3://bucket-name/{file_path}'}
    )
    print(response)
def lambda_handler(event, context):
    transcribe_audio_with_lambda(event, context)