

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

# 使用 Amazon Chime SDK 实时转录
<a name="meeting-transcription"></a>

您可以使用 Amazon Chime SDK 实时转录生成用户归属的实时会议记录。Amazon Chime SDK 实时转录与 Amazon Transcribe 和 Amazon Transcribe Medical 服务集成，可在会议进行期间生成 Amazon Chime SDK 会议记录。

Amazon Chime SDK 实时转录分别处理每个用户的音频，以提高多人场景中的准确性。Amazon Chime SDK 使用其主动说话者算法来选择前两个主动说话者，然后通过单个流将其音频以不同的频道发送到 Amazon Transcribe。会议参与者通过 Amazon Chime SDK 数据消息接收用户归属的转录。您可以通过多种方式使用转录，例如显示字幕、创建会议记录或使用转录进行内容分析。

在会议转录期间，实时转录使用一个流到 Amazon Transcribe。适用标准 Amazon Transcribe 和 Amazon Transcribe Medical 费用。有关更多信息，请参阅 [Amazon Transcribe 定价](https://aws.amazon.com/transcribe/pricing/)。有关使用量或账单的问题，请联系您的 AWS 客户经理。

**重要**  
[默认情况下，Amazon Transcribe 可能会使用和存储该服务处理的音频内容来开发和改进 AWS AI/ML 服务，详见服务条款第 50 节。AWS](https://aws.amazon.com/service-terms/)使用 Amazon Transcribe 时可能需要遵守联邦和州有关录制或拦截电子通信的法律或法规。您和您的最终用户有责任遵守与录音有关的所有适用法律，包括适当通知录制会话或通信中的所有参与者正在录制会话或通信，并获得他们的同意。通过 AWS 使用 Organizations 配置 AI 服务选择退出政策，您可以选择不使用音频内容来开发和改进 AWS AI/ML 服务。 AWS 

**Topics**
+ [系统架构](#sys-architecture)
+ [账单和使用情况](#billing-and-usage)
+ [为 Amazon Chime SDK 实时转录配置账户](configure-transcribe.md)
+ [选择 Amazon Chime SDK 实时转录选项](transcription-options.md)
+ [启动和停止 Amazon Chime SDK 实时转录](initiate-transcription.md)
+ [Amazon Chime SDK 实时转录参数](#transcription-parameters)
+ [了解 Amazon Chime SDK 实时转录事件](transcription-events.md)
+ [了解 Amazon Chime SDK 实时转录消息](process-msgs.md)
+ [处理收到的 Amazon Chime SDK 实时转录事件](delivery-examples.md)
+ [解析 Amazon Chime SDK 转录](parse-transcripts.md)

## 系统架构
<a name="sys-architecture"></a>

Amazon Chime SDK 通过与您的 Amazon Transcribe 或 Amazon Transcribe Medical 账户的服务端集成，创建实时会议转录，无需音频离开 AWS 网络。为了提高准确性，用户的音频会被单独处理，然后混合到会议中。Amazon Chime SDK 使用其主动说话者算法来选择前两个主动说话者，然后通过单个流将其的音频以不同的频道发送到 Amazon Transcribe 或 Amazon Transcribe Medical。为了减少延迟，用户归属的转录将通过数据消息直接发送给每位会议参与者。使用媒体管道捕获会议音频时，还会捕获会议的转录信息。

![\[会议转录数据流示意图。\]](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/transcription-architecture.png)


## 账单和使用情况
<a name="billing-and-usage"></a>

在会议转录期间，实时转录使用一个流到 Amazon Transcribe 或 Amazon Transcribe Medical。适用标准 Amazon Transcribe 和 Amazon Transcribe Medical 费用。有关更多信息，请参阅 [Amazon Transcribe 定价](https://aws.amazon.com/transcribe/pricing/)。有关使用量或账单的问题，请联系您的 AWS 客户经理。

# 为 Amazon Chime SDK 实时转录配置账户
<a name="configure-transcribe"></a>

在使用 Amazon Chime SDK 直播转录之前，必须授予亚马逊 Chime SDK 在账户中调用 Amazon Transcribe 和 Amazon Transcribe Medical 的权限。 AWS 为此，您可以将 Chime 转录服务相关角色添加到您的账户。有关为实时转录创建服务相关角色的信息，请参阅 *Amazon Chime SDK 管理指南*中的[使用带实时转录的角色](https://docs.aws.amazon.com/chime-sdk/latest/ag/using-service-linked-roles-transcription.html)。有关 IAM 服务相关角色的更多信息，请参阅 *IAM 用户指南*中的[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。

# 选择 Amazon Chime SDK 实时转录选项
<a name="transcription-options"></a>

当您使用 Amazon Chime SDK 实时转录时，您使用您的 AWS 账户中的 [Amazon Transcribe](https://aws.amazon.com/transcribe/) 或 [Amazon Transcribe Medical](https://aws.amazon.com/transcribe/medical/)。您可以访问 [Amazon Transcribe 支持的所有流传输语言](https://docs.aws.amazon.com/transcribe/latest/dg/what-is-transcribe.html)，以及[自定义词汇表](https://docs.aws.amazon.com/transcribe/latest/dg/how-vocabulary.html)和[词汇筛选器](https://docs.aws.amazon.com/transcribe/latest/dg/filter-unwanted-words.html)等功能。使用 Amazon Transcribe Medical 时，您可以选择医学专业、对话类型，也可以选择提供任何自定义词汇。适用标准 Amazon Transcribe 和 Amazon Transcribe Medical 费用。

选择转录选项的过程要遵循以下步骤。

## 第 1 步：选择转录服务
<a name="choose-service"></a>

您需要决定使用哪种转录服务，[Amazon Transcribe](https://aws.amazon.com/transcribe/) 或者 [Amazon Transcribe Medical](https://aws.amazon.com/transcribe/medical/)。

如果您的用例需要医疗语音转文本功能，则可能需要使用 Amazon Transcribe Medical。对于所有其他使用案例，您可能需要使用 Amazon Transcribe。

您可以在调用 `StartMeetingTranscription` API 时指定要使用的转录服务：
+ 要使用 Amazon Transcribe，请使用 `EngineTranscribeSettings` 指定 `TranscriptionConfiguration`。
+ 要使用 Amazon Transcribe Medical，请使用 `EngineTranscribeMedicalSettings` 指定 `TranscriptionConfiguration`。

## 第 2 步：选择转录区域
<a name="choose-region"></a>

您需要为转录服务选择一个 AWS 区域。[有关 Amazon Transcribe 和 Amazon Transcribe Medical 可用 AWS 区域的信息，请参阅区域服务表AWS 。](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

 通常，会议的媒体区域和转录区域之间的最低延迟可提供最佳的用户体验。为了实现最低延迟，请尽可能将相同区域用于媒体和转录。但是，在选择区域时，您可能需要考虑其他因素，例如监管要求或您配置 Amazon Transcribe 或 Amazon Transcribe Medical 的区域。

Amazon Transcribe 和 Amazon Transcribe Medical 功能，例如自定义词汇表或词汇筛选器，因地区而异。如果您配置其中任何一项功能，则应在打算使用实时转录的所有 AWS 区域中进行相同的配置。或者，您可以为所有会议使用相同的 Amazon Transcribe 区域。

您可以指定转录服务使用的区域。为此，您可以在调用 `StartMeetingTranscription` API 时将区域名称添加到转录引擎设置的 `Region` 字段中。如果您未指定区域，Amazon Chime SDK 会尝试在会议的媒体区域使用转录服务。要让 Amazon Chime SDK 为您选择转录服务的区域，请在 `Region` 字段中指定 `auto`。这样，Amazon Chime 会根据会议的媒体区域选择转录服务区域，如下表所示。有关 `StartMeetingTranscription` API 的更多信息，请参阅本指南中的 [启动和停止 Amazon Chime SDK 实时转录](initiate-transcription.md)。

**注意**  
亚马逊 Chime SDK 选择的转录区域可能会发生变化， AWS因为亚马逊 Chime SDK、Amazon Transcribe 和 Amazon Transcribe Medical 提供了更多可用区域。

**Amazon Transcribe 的自动区域选择**  



|  Amazon Chime SDK 媒体区域  |  区域代码  |  转录区域  | 
| --- | --- | --- | 
|  美国东部（俄亥俄州）  |  us-east-2  | us-east-2  | 
|  美国东部（弗吉尼亚州北部）  |  us-east-1  | us-east-1  | 
|  美国西部（北加利福尼亚）  |  us-west-1  | us-west-2 | 
|  美国西部（俄勒冈州）  |  us-west-2  | us-west-2  | 
|  非洲（开普敦）**\$1**  |  af-south-1  | eu-west-2  | 
|  亚太地区（孟买）  |  ap-south-1  | eu-west-2 | 
|  亚太地区（首尔）  |  ap-northeast-2  | ap-northeast-2 | 
|  亚太地区（新加坡）  |  ap-southeast-1  | ap-northeast-1 | 
|  亚太地区（悉尼）  |  ap-southeast-2  | ap-southeast-2 | 
|  亚太地区（东京）  |  ap-northeast-1  | ap-northeast-1 | 
|  加拿大（中部）  |  ca-central-1  | ca-central-1 | 
|  欧洲地区（法兰克福）   |  eu-central-1  | eu-central-1  | 
|  欧洲地区（爱尔兰）  |  eu-west-1  | eu-west-1 | 
|  欧洲地区（伦敦）  |  eu-west-2  | eu-west-2  | 
|  欧洲地区（米兰）**\$1**  |  eu-south-1  | eu-central-1  | 
|  欧洲地区（巴黎）  |  eu-west-3  | eu-central-1  | 
|  欧洲地区（斯德哥尔摩）  |  eu-north-1  | eu-central-1 | 
|  南美洲（圣保罗）  |  sa-east-1  | sa-east-1 | 
|  GovCloud （美国东部）  |  us-gov-east-1  |  us-gov-west-1  | 
|  GovCloud （美国西部）  |  us-gov-west-1  |  us-gov-west-1  | 

**Amazon Transcribe Medical 的自动区域选择**  



|  Amazon Chime SDK 媒体区域  |  区域代码  |  转录区域  | 
| --- | --- | --- | 
|  美国东部（俄亥俄州）  |  us-east-2  | us-east-2 | 
|  美国东部（弗吉尼亚州北部）  |  us-east-1  | us-east-1 | 
|  美国西部（北加利福尼亚）  |  us-west-1  | us-west-2 | 
|  美国西部（俄勒冈州）  |  us-west-2  | us-west-2 | 
|  非洲（开普敦）**\$1**  |  af-south-1  |  eu-west-1  | 
|  亚太地区（孟买）  |  ap-south-1  | eu-west-1  | 
|  亚太地区（首尔）  |  ap-northeast-2  | us-west-2 | 
|  亚太地区（新加坡）  |  ap-southeast-1  | ap-southeast-2 | 
|  亚太地区（悉尼）  |  ap-southeast-2  | ap-southeast-2 | 
|  亚太地区（东京）  |  ap-northeast-1  | us-west-2 | 
|  加拿大（中部）  |  ca-central-1  | ca-central-1 | 
|  欧洲地区（法兰克福）   |  eu-central-1  | eu-west-1 | 
|  欧洲地区（爱尔兰）  |  eu-west-1  | eu-west-1 | 
|  欧洲地区（伦敦）  |  eu-west-2  | us-east-1 | 
|  欧洲地区（米兰）**\$1**  |  eu-south-1  | eu-west-1 | 
|  欧洲地区（巴黎）  |  eu-west-3  | eu-west-1 | 
|  欧洲地区（斯德哥尔摩）  |  eu-north-1  | eu-west-1 | 
|  南美洲（圣保罗）  |  sa-east-1  | us-east-1 | 

**注意**  
要在标有星号 (**\$1**) 的区域中使用实时转录，必须先在您的 AWS 账户中启用该区域。有关更多信息，请参阅 AWS 一般参考中的[启用区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)。

有关区域和每个服务终端节点的更多信息，请参阅：
+ [Amazon Chime SDK 媒体区域](https://docs.aws.amazon.com/chime-sdk/latest/dg/chime-sdk-meetings-regions.html)
+ [Amazon Transcribe 终端节点和限额](https://docs.aws.amazon.com/general/latest/gr/transcribe.html#transcribe_region)
+ [Amazon Transcribe Medical 终端节点和限额](https://docs.aws.amazon.com/general/latest/gr/transcribe-medical.html)

## 第 3 步：查看服务限额
<a name="transcribe-quotas"></a>

每个带有实时转录功能的 Amazon Chime SDK 会议只需要一个 HTTP/2 流到 Amazon Transcribe 或 Amazon Transcribe Medical。这两项服务都有区域服务限额，包括并发 HTTP/2 流的数量和每秒的始流交易量。有关限额的更多信息，请参阅《Amazon Transcribe 开发人员指南》**中的[准则和限额](https://docs.aws.amazon.com/transcribe/latest/dg/limits-guidelines.html)。有关增加配额的信息，请参阅 AWS 控制台中的 Service Quotas。

# 启动和停止 Amazon Chime SDK 实时转录
<a name="initiate-transcription"></a>

您可以使用 Amazon Chime SDK [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_StartMeetingTranscription.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_StartMeetingTranscription.html) API 通过将 `TranscriptionConfiguration` 应用至会议来启动会议转录。Amazon Chime SDK 控制器将配置异步转发给会议。启动会议转录成功或失败通过亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 和亚马逊发送的消息来表示。 EventBridge

**开始转录**  
此示例显示如何使用 Amazon Transcribe 开始实时转录。

```
POST /meetings/meetingId/transcription?operation=start HTTP/1.1 
Content-type: application/json
{
    "TranscriptionConfiguration": {
        "EngineTranscribeSettings": {
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_ResponseSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_ResponseSyntax)": "en-US",  
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_ResponseSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_ResponseSyntax)": "tag",
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": "profanity",
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": "lingo",
            "Region": "us-east-1"
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": true,  
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": "high",  
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": "PII",  
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": "PII",  
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": "ALL",  
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestSyntax)": "language-model"
        }
    }
}
```

此示例显示如何使用 Amazon Transcribe Medical 开始实时转录。

```
POST /meetings/meetingId/transcription?operation=start HTTP/1.1 
Content-type: application/json
{  
    "TranscriptionConfiguration": {
        "EngineTranscribeMedicalSettings": {
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html)": "en-US",
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html)": "PRIMARYCARE",
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html)": "CONVERSATION",
            "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html)": "lingo",
            "Region": "us-east-1",
           "[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html)": "PHI", 
        }
   }
}
```

`StartMeetingTranscription` — 开始会议转录。  
`meetingId` — 由 [CreateMeeting API](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html#API_CreateMeeting_ResponseSyntax) 返回的会议 ID。  
`TranscriptionConfiguration` — 封装实时转录的参数。您必须精确指定一个配置，`EngineTranscribeSettings` 或 `EngineTranscribeMedicalSettings`。

`EngineTranscribeSettings` — 指定 Amazon Transcribe 的使用并将其设置传递给 [https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestParameters](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html#API_streaming_StartStreamTranscription_RequestParameters)。  
`LanguageCode` – 必需。  
`VocabularyFilterMethod`：可选。  
`VocabularyFilterName`：可选。  
`VocabularyName`：可选。  
`Region`：可选。  
`EnablePartialResultsStabilization`：可选。  
`PartialResultsStability`：可选。  
` ContentIdentificationType`：可选。  
`ContentRedactionType`：可选。  
`PiiEntityTypes `：可选。  
`LanguageModelName`：可选。

`EngineTranscribeMedicalSettings` — 指定 Amazon Transcribe Medical 的使用并将其设置传递给 [https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html#API_streaming_StartMedicalStreamTranscription_RequestParameters](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartMedicalStreamTranscription.html#API_streaming_StartMedicalStreamTranscription_RequestParameters)。  
`LanguageCode` – 必需。  
`Speciality` – 必需。  
`Type` – 必需。  
`VocabularyName`：可选。  
`Region`：可选。  
` ContentIdentificationType`：可选。

**响应**  
Amazon Transcribe 和 Amazon Transcribe Medical 会作出以下响应：
+ 带空主体的 `OK` (200)，如果将 `TranscriptionConfiguration` 成功应用于会议。

**错误消息**  
Amazon Transcribe 和 Amazon Transcribe Medical 会显示以下错误消息：
+ **BadRequestException (400)：**输入参数与服务的限制不符。
+ **ForbiddenException (403)：**永久禁止客户端提出请求。
+ **NotFoundException (404)：**`meetingId`不存在。
+ **ResourceLimitExceededException (400)：**请求超过资源限制。例如，启用实时转录功能的会议太多。
+ **ServiceFailureException (500)：**服务遇到了意外错误。
+ **ServiceUnavailableException (503)：**该服务当前不可用。
+ **ThrottledClientException (429)：**客户端超出了其请求速率限制。
+ **UnauthorizedClientException (401)：**客户目前无权提出请求。

第二次呼叫 `StartMeetingTranscription` 会更新应用于会议的 `TranscriptionConfiguration`。

**停止转录**  
您可以使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_StopMeetingTranscription.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_StopMeetingTranscription.html) API 删除用于给定 `meetingID` 和结束会议转录的 `TranscriptionConfiguration`。结束会议会自动停止转录。

此示例显示调用的 `StopMeetingTranscription` 请求语法。

```
POST/meetings/meetingId/transcription?operation=stop HTTP/1.1
```

**响应**  
Amazon Transcribe 和 Amazon Transcribe Medical 会作出以下响应：
+ 带空主体的 `OK` (200)，如果将 `TranscriptionConfiguration` 成功从会议中删除。

**错误消息**  
Amazon Transcribe 和 Amazon Transcribe Medical 会显示以下错误消息：
+ **BadRequestException (400)：**输入参数与服务的限制不符。
+ **ForbiddenException (403)：**永久禁止客户端提出请求。
+ **NotFoundException (404)：**`meetingId`不存在。
+ **ServiceFailureException (500)：**服务遇到了意外错误。
+ **ServiceUnavailableException (503)：**该服务当前不可用。
+ **ThrottledClientException (429)：**客户端超出了其请求速率限制。
+ **UnauthorizedClientException (401)：**客户目前无权提出请求。

## Amazon Chime SDK 实时转录参数
<a name="transcription-parameters"></a>

Amazon Transcribe 和 Amazon Trans APIs cribe Medical 在启动直播转录时提供了许多参数，例如和。[https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/dg/API_streaming_StartStreamTranscription.html)您可以在 `StartMeetingTranscription` API 中使用这些参数，除非 Amazon Chime SDK 预先确定参数的值。例如，`MediaEncoding` 和 `MediaSampleRateHertz` 参数不可用，因为 Amazon Chime SDK 会自动进行设置。

Amazon Transcribe 和 Amazon Transcribe Medical 对参数进行验证，以允许您在新的参数值可用后立即使用。例如，如果 Amazon Transcribe Medical 启动对新语言的支持，则您只需要在 `LanguageCode` 参数中指定新的语言值。

# 了解 Amazon Chime SDK 实时转录事件
<a name="transcription-events"></a>

Amazon Chime SDK 发送生命周期事件，用于触发通知和启动下游工作流程。使用转录事件的部分示例包括：
+ 衡量 Amazon Chime SDK 会议中实时转录的采纳情况
+ 跟踪语言首选项

您可以将事件发送到亚马逊 EventBridge、亚马逊简单通知服务和亚马逊简单队列服务。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[来自 AWS 服务的事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html)。

## Amazon Chime SDK 会议转录开始
<a name="transcript-start"></a>

当会议转录开始或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html) 更新时，Amazon Chime SDK 会发送此事件。

**示例：事件数据**  
以下是此事件的示例数据。

```
{
    "version": "0", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "id": "12345678-1234-1234-1234-111122223333", 
    "region": "us-east-1", 
    "detail-type": "Chime Meeting State Change", 
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": []
    "detail": {
        "version": "0", 
        "eventType": "chime:TranscriptionStarted",
        "timestamp": 12344566754,
        "meetingId": "87654321-4321-4321-1234-111122223333",
        "externalMeetingId": "mymeeting",
        "mediaRegion": "us-west-1",
        "transcriptionRegion": "us-west-2",
        "[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_StartMeetingTranscription.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_StartMeetingTranscription.html)": "{...}"
    }
}
```

## Amazon Chime SDK 会议转录停止
<a name="transcript-stop"></a>

会议转录停止时，Amazon Chime SDK 会发送此事件。

**示例：事件数据**  
以下是此事件的示例数据。

```
{
    "version": "0", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "id": "12345678-1234-1234-1234-111122223333", 
    "region": "us-east-1", 
    "detail-type": "Chime Meeting State Change", 
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": []
    "detail": {
        "version": "0", 
        "eventType": "chime:TranscriptionStopped",
        "timestamp": 12344566754,
        "meetingId": "87654321-4321-4321-1234-111122223333",
        "externalMeetingId": "mymeeting",
        "mediaRegion": "us-west-1",
        "transcriptionRegion": "us-west-2",
        "[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_StopMeetingTranscription.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_StopMeetingTranscription.html)": "{...}"
    }
}
```

## Amazon Chime SDK 会议转录中断
<a name="transcript-interrupted"></a>

会议转录中断时，Amazon Chime SDK 会发送此事件。

**示例：事件数据**  
以下是此事件的示例数据。

```
{
    "version": "0", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "id": "12345678-1234-1234-1234-111122223333", 
    "region": "us-east-1", 
    "detail-type": "Chime Meeting State Change", 
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": []
    "detail": {
        "version": "0", 
        "eventType": "chime:TranscriptionInterrupted",
        "timestamp": 12344566754,
        "meetingId": "87654321-4321-4321-1234-111122223333",
        "externalMeetingId": "mymeeting",
        "message": "Internal server error",
        "mediaRegion": "us-west-1",
        "transcriptionRegion": "us-west-2",
        "[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html)": "{...}"
    }
}
```

## Amazon Chime SDK 会议转录恢复
<a name="transcript-resumed"></a>

如果会议转录中断后恢复，Amazon Chime SDK 会发送此事件。

**示例：事件数据**  
以下是此事件的示例数据。

```
{
    "version": "0", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "id": "12345678-1234-1234-1234-111122223333", 
    "region": "us-east-1", 
    "detail-type": "Chime Meeting State Change", 
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": []
    "detail": {
        "version": "0", 
        "eventType": "chime:TranscriptionResumed",
        "timestamp": 12344566754,
        "meetingId": "87654321-4321-4321-1234-111122223333",
        "externalMeetingId": "mymeeting",
        "mediaRegion": "us-west-1",
        "transcriptionRegion": "us-west-2",
        "[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html)": "{...}"
    }
}
```

## Amazon Chime SDK 会议转录失败
<a name="transcript-failed"></a>

如果会议转录未能开始或中断后恢复失败，Amazon Chime SDK 会发送此事件。

**示例：事件数据**  
以下是此事件的示例数据。

```
{
    "version": "0", 
    "source": "aws.chime", 
    "account": "111122223333", 
    "id": "12345678-1234-1234-1234-111122223333", 
    "region": "us-east-1", 
    "detail-type": "Chime Meeting State Change", 
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": []
    "detail": {
        "version": "0", 
        "eventType": "chime:TranscriptionFailed",
        "timestamp": 12344566754,
        "meetingId": "87654321-4321-4321-1234-111122223333",
        "externalMeetingId": "mymeeting",
        "message": "Internal server error",
        "mediaRegion": "us-west-1",
        "transcriptionRegion": "us-west-2",
        "[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_TranscriptionConfiguration.html)": "{...}"
    }
}
```

# 了解 Amazon Chime SDK 实时转录消息
<a name="process-msgs"></a>

Amazon Chime SDK 服务通过在数据消息中发送 `TranscriptEvent` 对象，与与会者共享转录信息。`TranscriptEvent` 传递 `Transcript` 或 `TranscriptionStatus`。

`Transcript` 包括带有时间戳、用户归属单词和标点符号的结果。结果可能是“部分的”，在这种情况下，系统通常会在后续 `TranscriptEvent` 中对其进行更新。这使您可以快速查看转录，并在以后根据需要应用内联更新。

`TranscriptStatus` 可能会传递其中一个 `TranscriptionStatusType` 事件，如以下部分示例中所列。

较新版本的 Amazon Chime SDKs 包括用于常见处理的其他数据类型和辅助函数 a. `TranscriptEvent` 

## TranscriptEvent
<a name="transcript-event"></a>

此示例显示了一个典型转录事件。

```
type TranscriptEvent = Transcript | TranscriptionStatus;

export class TranscriptEventConverter {
  static from(dataMessage: DataMessage): TranscriptEvent[] {
    // convert DataMessage to TranscriptEvents
    return ...
  }
}

export default class TranscriptionStatus {
    type: TranscriptionStatusType;
    eventTimeMs:                   number;
    transcriptionRegion:           string;
    transcriptionConfiguration:    string;
    message?:                      string;
}

enum TranscriptionStatusType {
    STARTED        =    'started',
    INTERRUPTED    =    'interrupted',
    RESUMED        =    'resumed',
    STOPPED        =    'stopped',
    FAILED         =    'failed',
}

export default class Transcript {
    results: TranscriptResult[];    // at least one
}

export class TranscriptResult {
    resultId:        string;
    isPartial:       boolean;
    startTimeMs:     number;
    endTimeMs:       number;
    alternatives:    TranscriptAlternative[];    // most confident first
    }

export default class TranscriptAlternative {
    items: TranscriptItem[];    // in start time order
    transcript: string; //concatenated transcript items
    entities?: TranscriptEntity[];
}

export default class TranscriptItem {
    type:                      TranscriptItemType;
    startTimeMs:               number;
    endTimeMs:                 number;
    attendee:                  Attendee;
    content:                   string;
    vocabularyFilterMatch?:    boolean;
    confidence?:               number;  
    stable?:                   boolean;
}

enum TranscriptItemType {
    PRONUNCIATION    =    'pronunciation',// content is a word
    PUNCTUATION      =    'punctuation',// content is punctuation
}

export default class TranscriptEntity {  
    category:       string;  
    confidence:     number;  
    content:        string;  
    endTimeMs:      number;  
    startTimeMs:    number;  
    type?:          string;
}

// This is an existing SDK model
export default class Attendee {
    attendeeId:        string;
    externalUserId:    string;
}
```

## 数据准则
<a name="data-guidelines"></a>

请记住这些准则。

1. `transcription.results` 可能有多个结果。

1. 如果为 `transcription.results[i].isPartial = true`，则可能会更新整个结果。可能会更新，但不能保证。更新具有相同的 `transcript.result[i].resultId`。如果您要避免低置信度转录，则可以完全跳过部分结果。如果您要低延迟结果，则可以显示部分结果，然后在更新时完全覆盖。

1. `transcription.results[i].alternatives` 始终至少包含一个条目。如果包含多个条目，则最确定的条目位于列表的第一位。在大多数情况下，您可以选择 `transcription.results[i].alternatives` 中的第一个条目而忽略其他条目。

1. `transcription.results[i].alternatives[j].items` 包括每个单词或标点符号的条目。

1. `transcription.results[i].alternatives[j].items[k].` 内容为所说的内容。

1. `transcription.results[i].alternatives[j].items[k].attendee` 为内容的用户归属（谁）。

1. `transcription.results[i].alternatives[j].items[k].startTimeMs` 为内容的“时间”。这样可以按照单词的说话顺序在不同的用户之间 word-by-word呈现用户归因的转录。

1. 通常可以忽略 `transcription.results[i].alternatives[j].items[k].endTimeMs` 字段，但该字段旨在完整说明谁在何时说了什么内容。

1. 如果内容与过滤器中的单词匹配，则 `transcription.results[i].alternatives[j].items[k].vocabularyFilterMatch` 为真，否则为假。

1. `transcription.results[i].alternatives[j].items[k].confidence` 是 0 到 1 之间的值。它表示引擎对项目内容与所说单词正确匹配的置信度，其中 0 表示置信度最低，1 表示置信度最高。

1. `transcription.results[i].alternatives[j].items[k].stable` 表示当前单词是否会在后续部分结果更新中发生变化。仅当您在请求中将 `EnablePartialResultsStabilization` 设置为 `true` 以启用部分结果的稳定性功能时，此值才可为真。

1. `transcription.results[i].alternatives[j].entities` 包括内容识别或编修功能检测到的每个实体的条目。只有启用内容识别或编修后，才会填充该列表。实体可以是个人身份信息或个人健康信息等数据。在转录过程中，您可以使用实体来突出显示感兴趣的单词或对其采取行动。

1. `transcription.results[i].alternatives[j].entities[k].category` 是实体的类别。它等同于请求中提供的内容识别或编修类型，例如“PII”或“PHI”。

1. `transcription.results[i].alternatives[j].entities[k].confidence` 衡量特定内容真正成为实体的引擎有多强大。请注意，这与项目级别的置信度不同，后者衡量引擎对单词本身正确性的信心。

1. `transcription.results[i].alternatives[j].entities[k].content` 是构成实体的实际文本。这可以是多个项目，例如地址。

1. `transcription.results[i].alternatives[j].entities[k].startTimeMs` 捕获实体开始讲话的时间。

1. `transcription.results[i].alternatives[j].entities[k].endTimeMs` 捕获实体结束讲话的时间。

1. `transcription.results[i].alternatives[j].entities[k].type` 仅支持 Transcribe 引擎并提供实体的子类型。这些是诸如“地址”、“CREDIT\$1DEBIT\$1NUMBER”等值。

## 为 TranscriptEvents 注册事件处理程序
<a name="register-handler"></a>

以下示例使用适用于 Amazon Chime 软件开发工具包的客户端库。 JavaScript但是，所有亚马逊 Ch SDKs ime 的模式都是一致的。

`RealtimeController` 和 `RealtimeControllerFacade` 中的 `TranscriptionController` 包括用于添加处理 `TranscriptionEvents` 的处理程序的特定函数：

```
/** 
 * Returns the [[TranscriptionController]] for this real-time controller. 
 */
readonly transcriptionController?: TranscriptionController;
```

`TranscriptionController` 有两个函数，用于管理对 `TranscriptionEvent` 回调的订阅和取消订阅：

```
import TranscriptEvent from './TranscriptEvent';

export default interface TranscriptionController {
  /**
   * Subscribe a callback to handle received transcript event
   */
  subscribeToTranscriptEvent(callback: (transcriptEvent: TranscriptEvent) => void): void;

  /** 
   * Unsubscribe a callback from receiving transcript event 
   */
  unsubscribeFromTranscriptEvent(callback: (transcriptEvent: TranscriptEvent) => void): void;
}
```

**使用可选 `TranscriptionController`**  
我们提供了名为 `DefaultTranscriptionController` 的 `TranscriptionController` 接口的默认实现。`DefaultRealtimeController` 和 `DefaultAudioVideoFacade` 中的默认实现会返回一个 `DefaultTranscriptionController` 对象：

```
/** 
get transcriptionController(): TranscriptionController {
   return this.realtimeController.transcriptionController;
}
```

`DefaultRealtimeController` 也在其构造函数中使用一个可选 `TranscriptionController` 对象。这允许您覆盖 `DefaultTranscriptionController` 行为。开发人员应用程序通过 `AudioVideoFacade` 对象的 `TranscriptionController` 对象订阅和取消订阅一个或多个回调：

```
// Subscribe
this.audioVideo.transcriptionController?.subscribeToTranscriptEvent(this.transcriptEventHandler);

// Unsubscribe
this.audioVideo.transcriptionController?.unsubscribeFromTranscriptEvent(this.transcriptEventHandler););
```

# 处理收到的 Amazon Chime SDK 实时转录事件
<a name="delivery-examples"></a>

以下示例显示如何处理收到的 `TranscriptEvent`。

**注意**  
确切输出取决于几个因素，包括个人说话的速度和停顿时间。

## 示例 1： StartMeetingTranscription
<a name="example-1"></a>

此示例显示了典型的 `StartMeetingTranscription` 操作。

```
meeting.StartMeetingTranscription(
    { EngineTranscribeSettings: { Languagecode: ‘en-US’ } } );
```

该操作会生成一个 `TranscriptEvent`。

```
{   
    status: {        
        type: 'started',        
        eventTimeMs: 1620118800000,        
        transcriptionConfig: {                    
            LanguageCode: 'en-US'        
        }    
    }
}
```

## 示例 2：部分转录结果
<a name="example-2"></a>

在这个示例中，一位与会者说：“那只快速的棕色狐狸跳过那只懒狗。” 在示例中，`isPartial` 值为 `true`。如果更深入地研究消息，您会发现系统将“狐狸”一词处理为“事实”。系统使用相同的 `resultId` 更新转录。

```
{
    transcript: {
        results: [{
            resultId:"1",                               isPartial: true,
            startTimeMs: 1620118800000,                 endTimeMs: 1620118801000,
            alternatives: [{
                items:[{
                    type:        'pronunciation',
                    startTimeMs: 1620118800000,         endTimeMs: 1620118800200,
                    attendee: { attendeeId: "1",        externalUserId: "A"},
                    content: "the",                     vocabularyFilterMatch: false
                },
                {
                    type:        'pronunciation',
                    startTimeMs: 1620118800200,          endTimeMs: 1620118800400,
                    attendee: { attendeeId: "1",         externalUserId: "A" },
                    content:"quick",                     vocabularyFilterMatch: false
                },
                {
                    type:'pronunciation',
                    startTimeMs: 1620118800400,          endTimeMs: 1620118800750,
                    attendee: { attendeeId: "1",         externalUserId: "A" },
                    content:"brown",                     vocabularyFilterMatch: false
                },
                {
                    type:'pronunciation',
                    startTimeMs: 1620118800750,          endTimeMs: 1620118801000,
                    attendee:{ attendeeId: "1",          externalUserId: "A" },
                    content:"facts",                     vocabularyFilterMatch: false
                },
                {
                    type:'punctuation',
                    startTimeMs: 1620118801000,          endTimeMs: 1620118801500,
                    attendee:{ attendeeId: "1",          externalUserId: "A" },
                    content:    ",",                     vocabularyFilterMatch: false
                }]
            }]
        }]
    }
}
```

## 示例 3：最终转录结果
<a name="example-3"></a>

如果转录不完整，系统会再次处理该短语。此示例的 `false` 值为 `isPartial`，消息包含“狐狸”而不是“事实”。系统使用相同的 ID 重新发出消息。

```
{
    transcript: {
        results: [{
            resultId:"1",                                isPartial: false,
            startTimeMs: 1620118800000,                  endTimeMs: 1620118801000,
            alternatives: [{
                items:[{
                    type:        'pronunciation',
                    startTimeMs: 1620118800000,          endTimeMs: 1620118800200,
                    attendee: { attendeeId: "1",         externalUserId: "A"},
                    content: "the",                      vocabularyFilterMatch: false
                },
                {
                    type:        'pronunciation',
                    startTimeMs: 1620118800200,          endTimeMs: 1620118800400,
                    attendee: { attendeeId: "1",         externalUserId: "A" },
                    content:"quick",                     vocabularyFilterMatch: false
                },
                {
                    type:'pronunciation',
                    startTimeMs: 1620118800400,          endTimeMs: 1620118800750,
                    attendee: { attendeeId: "1",         externalUserId: "A" },
                    content:"brown",                     vocabularyFilterMatch: false
                },
                {
                    type:'pronunciation',
                    startTimeMs: 1620118800750,          endTimeMs: 1620118801000,
                    attendee: { attendeeId: "1",          externalUserId: "A" },
                    content:"fox",                       vocabularyFilterMatch: false
                },
                {
                    type:'punctuation',
                    startTimeMs: 1620118801000,          endTimeMs: 1620118801500,
                    attendee: { attendeeId: "1",          externalUserId: "A" },
                    content:    ",",                     vocabularyFilterMatch: false
                }]
            }]
        }]
    }
}
```

# 解析 Amazon Chime SDK 转录
<a name="parse-transcripts"></a>

使用以下命令解析转录消息中的转录内容。该命令解析 transcript-message.txt 文件中的完整句子。

```
with open('transcript-message.txt') as f:
        for line in f:
            result_json = json.loads(line)["transcript"]["results"][0]
            if result_json['isPartial'] == False:
                print(result_json["alternatives"][0]["transcript"])
```