通过批处理转录作业确定语言 - Amazon Transcribe
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

通过批处理转录作业确定语言

将语言识别与批处理作业结合使用,以识别媒体文件中的主要语言。如果你的媒体文件包含多种语言,你的转录将仅基于主导语言创建。

为了提高语言识别准确性,您可以提供您认为可能存在的语言列表。从此列表中,Amazon Transcribe 选择最接近的匹配语言来转录音频。如果您提供的语言代码都没有匹配媒体中使用的语言,那么您的转录准确性会降低 — 这是因为 Amazon Transcribe 会优先考虑您选择的语言。尽管您可以包含的语言代码数量没有限制,但我们建议使用五个或更少的语言代码以获得最佳效率和准确性。

提示

提供一部分语言选项对于转录区域方言特别有用。例如,如果您知道您的媒体文件包含英国的英语方言,但您不确定存在哪种口音,请向 Amazon Transcribe 提供en-GBen-AB, 和en-WL然后省略其他英语语言代码。

以下是一个信心分数的例子,如何使用媒体文件与一位新西兰英语人士和一位美国英语人士一起使用媒体文件:

没有提供任何语言代码 提供语言代码(en-US、en-nz、en-au)
"language_identification": [ { "score": "0.4633", "code": "en-NZ" }, { "score": "0.2386", "code": "en-US" }, { "score": "0.1711", "code": "en-AU" }, { "score": "0.0662", "code": "en-IE" }, { "score": "0.0607", "code": "en-ZA" } ],
"language_identification": [ { "score": "0.5336", "code": "en-NZ" }, { "score": "0.2681", "code": "en-US" }, { "score": "0.1983", "code": "en-AU" } ],

正如您在上表中看到的,指定至少一种语言代码可以提高语言识别信心水平。

您可以将批量语言识别与任何其他 Amazon Transcribe 功能结合使用。如果将语言识别与其他功能结合起来,则只能使用这些功能支持的语言。

重要

如果您在启用内容密文的情况下使用自动语言识别功能,请确保媒体文件的语言为支持密文. 如果不支持文件中的语言,那么你的成绩单是编辑并且没有警告或工作失败。

如果将语言识别与语言模型、词汇过滤器或自定义词汇结合使用,则必须使用LanguageIdSettings请求中的参数。使用此参数,您可以为您提供的每种语言代码指定一种语言模型、一个词汇过滤器和一个自定义词汇表。请注意,每种语言代码必须与您在请求中指定的语言代码匹配。有关此参数在请求中的样子,请参阅AmazonCLIAmazon开发工具包下拉面板。

为了获得最佳结果,请确保您的媒体文件包含至少 30 秒的语音。

您可以使用在批处理转录作业中使用自动语言识别Amazon Transcribe ConscribeAmazonCLI,或者Amazon开发工具包;有关示例,请参阅以下内容:

  1. 登录到Amazon Transcribe 控制台.

  2. 在导航窗格中,选择转录作业,然后选择创建作业按钮(右上角)。这会打开为任务详细信息页.

  3. Job 设置面板中,找到语言设置部分然后选择自动语言识别. 您还可以选择多种语言(从选择语言下拉框)如果你知道文件包含哪种语言。此选项可以提高准确性,但不是必需的。

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

  5. 单击创建作业按钮以运行转录作业。

此示例使用开始转录-工作命令和IdentifyLanguage参数。有关更多信息,请参阅StartTranscriptionJobLanguageIdSettings

选项 1:不含language-id-settings参数。

aws transcribe start-transcription-job \ --transcription-job-name job-name \ --media MediaFileUri=s3://your-S3-bucket/S3-prefix/your-filename.file-extension \ --identify-language

选项 2:使用language-id-settings参数。

aws transcribe start-transcription-job \ --transcription-job-name job-name \ --media MediaFileUri=s3://your-S3-bucket/S3-prefix/your-filename.file-extension \ --identify-language --language-id-settings "{\"en-US\":{\"VocabularyName\":\"your-en-US-vocabulary\", \"VocabularyFilterName\":\"your-en-US-vocabulary-filter\",\"LanguageModelName\":\"your-en-US-language-model\"}, \"en-AU\":{\"VocabularyName\":\"your-en-AU-vocabulary\"}}

这是另一个使用开始转录-工作命令,以及识别语言的请求正文。

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

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

{ "TranscriptionJobName": "job-name", "Media": { "MediaFileUri": "s3://your-S3-bucket/S3-prefix/your-filename.file-extension" }, "IdentifyLanguage": "true" }

此示例使用Amazon SDK for Python (Boto3)使用IdentifyLanguage参数start_Trancription_job方法。有关更多信息,请参阅StartTranscriptionJobLanguageIdSettings

选项 1:不含LanguageIdSettings参数。

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', IdentifyLanguage=True ) 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)

选项 2:使用LanguageIdSettings参数。

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', IdentifyLanguage=True, LanguageIdSettings={ 'en-US': { 'VocabularyName': 'your-en-US-vocabulary', 'VocabularyFilterName': 'your-en-US-vocabulary-filter', 'LanguageModelName': 'your-en-US-language-model' } } ) 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)