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)