创建视频字幕 - Amazon Transcribe
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建视频字幕

Amazon Transcribe 支持 WebVTT (*.vtt) 和 SubbrIP (*.srt) 输出用作视频字幕。在设置批量视频转录作业时,您可以选择一种或两种文件类型。使用字幕功能时,将生成您选择的字幕文件和普通成绩单文件(包含其他信息)。字幕和转录文件输出到同一目的地。

字幕会同时显示文字,并在自然暂停或扬声器完成说话之前保持可见状态。

字幕支持的功能:

  • 内容编辑:任何编辑的内容都反映为PII在你的副标题和常规成绩单文件中。音频没有被更改。

  • 词汇表筛选条件:字幕文件是从转录文件生成的,因此您在标准转录输出中过滤的任何单词也会在字幕中过滤。过滤的内容显示为空格或***在你的成绩单和字幕文件中。音频没有被更改。

  • 如果给定的字幕段中有多个扬声器,则使用破折号来区分每个扬声器。这适用于 WebVTT 和 SubRip 格式;例如:

    • — 第 1 人说的文字

    • — 人物 2 说的文字

向您的 Amazon Transcribe 视频文件添加字幕

你可以使用控制台开发工具包,或者AmazonCLI有关示例,请参阅以下内容:

  1. 登录到Amazon Transcribe 控制台.

  2. 在导航窗格中,选择转录作业,然后选择创建作业按钮(右上角)。这会打开指定作业详细信页. 字幕选项位于输出数据面板。

  3. 填写您希望包含在指定作业详细信页面,然后单击下一步按钮。这会将您带到配置作业-可选的页.

  4. 单击创建作业按钮以运行您的转录作业。

此示例使用开始转录作业命令和Subtitles参数。有关更多信息,请参阅StartTranscriptionJobSubtitles

aws transcribe start-transcription-job \ --transcription-job-name job-name \ --media MediaFileUri=s3://your-S3-bucket/S3-prefix/your-filename.file-extension \ --language-code en-US \ --subtitles Formats=vtt

这是另一个使用开始转录作业命令,以及为该作业添加字幕的请求正文。

aws transcribe start-transcription-job \ --cli-input-json file://example-start-command.json

该文件示例启动命令 .json包含以下请求正文。

{ "TranscriptionJobName": "job-name", "LanguageCode": "en-US", "Media": { "MediaFileUri": "s3://your-S3-bucket/S3-prefix/your-filename.file-extension" }, "Subtitles": {"Formats": ["vtt"]} }

此示例使用Amazon SDK for Python (Boto3)使用添加字幕Subtitles参数start_誊录 _job方法。有关更多信息,请参阅 StartTranscriptionJobSubtitles

from __future__ import print_function import time import boto3 transcribe = boto3.client('transcribe') job_name = "job-name" job_uri = "s3://your-S3-bucket/S3-prefix/your-filename.file-extension" transcribe.start_transcription_job( TranscriptionJobName=job_name, Media={'MediaFileUri': job_uri}, MediaFormat='wav', LanguageCode='en-US', Subtitles={'Formats': ['vtt']} ) while True: status = transcribe.get_transcription_job(TranscriptionJobName=job_name) if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']: break print("Not ready yet...") time.sleep(5) print(status)