

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

# 实时通话分析
<a name="call-analytics-streaming"></a>

实时呼叫分析提供实时见解，可用于解决问题和缓解问题升级。

实时呼叫分析可获得以下见解：
+ [类别事件](#tca-category-events-stream)，使用规则标记特定关键字和短语；类别事件可用于创建[实时警报](tca-start-stream.md#tca-create-alert-stream)
+ [问题检测](#tca-issue-detection-stream)，可识别每个音频片段中出现的问题
+ 文本转录中的 [PII（敏感数据）识别](#tca-pii-id-stream)
+ 对您的文本转录进行的 [PII（敏感数据）编辑](#tca-pii-redact-stream)
+ 每个语音片段的[情绪分析](#tca-sentiment-stream)
+ [语言识别](#tca-language-id-stream)可检测每个音频通道中使用的主要语言

除了实时通话分析外， Amazon Transcribe 还可以对您的媒体流进行[通话后分析](tca-post-call.md)。您可以使用 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_PostCallAnalyticsSettings.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_PostCallAnalyticsSettings.html) 参数在实时呼叫分析请求中包含通话后分析。

## 实时见解
<a name="call-analytics-insights-streaming"></a>

本节详细介绍了可用于实时呼叫分析转录的见解。

### 类别事件
<a name="tca-category-events-stream"></a>

使用类别事件，您可以根据确切的关键字或短语来匹配您的转录。例如，如果您为 “我想和经理说话” 这句话设置了过滤 Amazon Transcribe 器，则会筛选出该短语的*确切*内容。

以下是一个[输出示例](tca-output-streaming.md#tca-output-category-event-stream)。

有关创建实时呼叫分析类别的更多信息，请参阅[为实时转录创建类别](tca-categories-stream.md)。

**提示**  
类别事件允许您设置实时警报；有关更多信息，请参阅[为类别匹配创建实时警报](tca-start-stream.md#tca-create-alert-stream)。

### 问题检测
<a name="tca-issue-detection-stream"></a>

问题检测提供了每个音频片段中检测到的问题的简要摘要。使用问题检测特征，您可以：
+ 减少在通话期间和通话后手动做笔记的需求
+ 提高座席效率，使他们能够更快地响应客户

**注意**  
问题检测支持以下地方的英语方言：澳大利亚 (`en-AU`)、英国 (`en-GB`) 和美国 (`en-US`)。

问题检测特征适用于所有行业和业务领域，并且基于上下文。它可以正常工作 out-of-the-box，因此不支持自定义，例如模型训练或自定义类别。

通过实时呼叫分析对每个完整的音频片段进行问题检测。

以下是一个[输出示例](tca-output-streaming.md#tca-output-issue-detection-stream)。

### PII（敏感数据）识别
<a name="tca-pii-id-stream"></a>

敏感数据识别会在文本转录中标记个人身份信息 (PII)。此参数对于保护客户信息很有用。

**注意**  
实时 PII 识别功能支持英语方言澳大利亚英语（`en-AU`）、英国英语（`en-GB`）和美国英语（`en-US`）以及西班牙语方言（`es-US`）。

通过实时呼叫分析对每个完整的音频片段进行 PII 识别。

要查看使用此功能识别的 PII 列表，或要了解有关使用识别个人身份的更多信息 Amazon Transcribe，请参阅。[编辑或识别个人身份信息](pii-redaction.md)

以下是一个[输出示例](tca-output-streaming.md#tca-output-pii-id-stream)。

### PII（敏感数据）编辑
<a name="tca-pii-redact-stream"></a>

敏感数据编辑将文本转录中的个人身份信息 (PII) 替换为 PII 的类型（例如 `[NAME]`）。此参数对于保护客户信息很有用。

**注意**  
实时 PII 编辑功能支持英语方言澳大利亚英语（`en-AU`）、英国英语（`en-GB`）和美国英语（`en-US`）以及西班牙语方言（`es-US`）。

通过实时呼叫分析对每个完整的音频片段进行 PII 编辑。

要查看使用此特征进行了编辑的 PII 列表，或要了解有关使用 Amazon Transcribe进行编辑的更多信息，请参阅 [编辑或识别个人身份信息](pii-redaction.md)。

以下是一个[输出示例](tca-output-streaming.md#tca-output-pii-redact-stream)。

### 情绪分析
<a name="tca-sentiment-stream"></a>

情绪分析可以评估客户和座席在整个通话过程中的感受。此指标为每个语音片段提供，并以定性值（`positive`、`neutral`、`mixed`、或 `negative`）表示。

使用此参数，您可以定性地评估每个通话参与者的总体情绪以及每个参与者在每个语音片段中的情绪。该指标可以帮助确定您的座席是否能够在通话结束时让心烦意乱的客户感到满意。

通过实时呼叫分析对每个完整的音频片段进行情绪分析。

情感分析有效 out-of-the-box，因此不支持自定义，例如模型训练或自定义类别。

以下是一个[输出示例](tca-output-streaming.md#tca-output-sentiment-stream)。

### 语言识别
<a name="tca-language-id-stream"></a>

在实时通话分析期间，语言识别会自动识别并确定音频流的每个通道中使用的主要语言。一旦识别出语言，通话分析就会根据检测到的语言处理并返回最合适的转录，并通过流实时传回这些信息。

此功能可让您自动识别和确定音频流的每个通道中的主要语言。一旦检测到语言，通话分析就会实时处理并传递已识别语言的相应转录。

所有目前支持流式处理转录的[通话分析流式处理支持的语言](https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html)，均支持自动语言识别且不额外收费；该功能已在支持通话分析流式处理的 [AWS 区域](https://docs.aws.amazon.com/general/latest/gr/transcribe.html#transcribe_region)推出。

**重要**  
通话分析仅支持单语言识别，即识别您的音频通道中使用的主要语言。不支持多语言识别，这意味着每个通道只能用一种语言进行转录。  
要使用语言识别，您必须提供 2 至 5 个语言代码，并且对于每个流每种语言，您只能从[支持的通话分析流式处理语言](https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html)中选择一种语言方言。这表示，您不能为同一个转录选择 en-US 和 en-AU 作为语言选项。使用此功能时， LanguageCode 参数在请求中必须保持为空，因为 LanguageCode 和 IdentifyLanguage 是互斥的选项。

**警告**  
如果您指定的语言代码与实际使用的语言不符，系统将从您的选项中选择最相似的语言，这可能会导致转录不准确。

利用语言识别功能，您可以：
+ 实时自动检测主要语言
+ 在不同的通道中处理不同的语言
+ 获取用于语言检测的置信度分数
+ 应用特定于语言的自定义词汇表

要使用语言识别，您必须配置以下参数：

**必填参数：**
+ `identifyLanguage` – 设置为 true 可启用语言识别。
+ `languageOptions` – identifyLanguage 设置为 true 时，可以使用的语言代码列表。您必须提供至少两种语言选择，因为不支持单语言选择。

**可选参数：**
+ `preferredLanguage` – 您期望从提供的 languageOptions 获得的主要语言。添加首选语言可以帮助通话分析更快地识别语言。
+ `vocabularyNames` – 用于提高准确率的自定义词汇表名称。请注意，词汇表名称区分大小写，如果自定义词汇表的语言与识别出的媒体语言不匹配，则自定义词汇表不会被用于转录。
+ `vocabularyFilterNames` – 用于自定义转录文本输出的词汇表筛选器名称。

以下是一个[输出示例](tca-output-streaming.md#tca-output-language-id-stream)。

# 为实时转录创建类别
<a name="tca-categories-stream"></a>

实时呼叫分析支持创建自定义类别，使您能够量身定制转录分析，以便于极大程度地满足您的特定业务需求。

您可以根据需要创建任意数量的类别，以囊括一系列不同的场景。对于您创建的每个类别，必须创建 1 到 20 条规则。实时呼叫分析转录仅支持使用 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html)（关键字匹配）的规则。有关在 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html) 操作中使用规则的更多详细信息，请参阅[实时呼叫分析类别的规则标准](#tca-rules-stream)一节。

如果您的媒体内容符合您在给定类别中指定的所有规则，则 Amazon Transcribe 会使用该类别标记您的输出。有关采用 JSON 输出格式的类别匹配示例，请参阅[类别事件输出](tca-output-streaming.md#tca-output-category-event-stream)。

以下是一些关于如何使用自定义类别的示例：
+ 通过标记和跟踪特定的一组关键字，找出需要立即关注的问题
+ 监控合规性，例如座席说出（或省略）特定短语
+ 实时标记特定的单词和短语；然后，您可以设置类别匹配以设置即时警报。例如，如果您为提出“*要与经理交谈*”的客户创建了实时呼叫分析类别，则可以为该实时类别匹配设置[事件警报](tca-start-stream.md#tca-create-alert-stream)，通知值班经理。

**通话后类别与实时类别**

创建新类别时，您可以指定是要将其创建为通话后类别 (`POST_CALL`)，还是创建为实时类别 (`REAL_TIME`)。如果您没有指定选项，则默认情况下，您的类别将创建为通话后类别。实时类别匹配可用于创建实时警报。有关更多信息，请参阅 [为类别匹配创建实时警报](tca-start-stream.md#tca-create-alert-stream)。

要为实时呼叫分析创建新类别，您可以使用**AWS 管理控制台**AWS CLI****、或 **AWS SDKs**；有关示例，请参阅以下内容：

## AWS 管理控制台
<a name="tca-category-console"></a>

1. 在导航窗格的下方 Amazon Transcribe，选择**Amazon Transcribe 呼叫分析**。

1. 选择**呼叫分析类别**，之后您将进入**呼叫分析类别**页面。选择**创建类别**按钮。  
![\[Amazon Transcribe 控制台屏幕截图：呼叫分析 “类别” 页面。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-categories.png)

1. 您现在已进入**创建类别页面**。输入类别的名称，然后在**类别类型**下拉菜单中选择“实时呼叫分析”。  
![\[Amazon Transcribe 控制台屏幕截图：“类别设置” 面板。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-categories-type.png)

1. 您可以选择一个模板来创建您的类别，也可以从头开始制作一个模板。

   如果使用模板：选择**使用模板(建议)**，选择所需的模板，然后选择**创建类别**。  
![\[Amazon Transcribe 控制台屏幕截图：显示可选模板的 “类别设置” 面板。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-categories-settings-stream.png)

1. 如果要创建自定义类别：请选择**从头开始创建**。  
![\[Amazon Transcribe 控制台屏幕截图：显示 “规则” 窗格的 “创建类别” 页面。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-categories-custom.png)

1. 使用下拉菜单向您的类别添加规则。您最多可以为每个类别添加 20 条规则。对于实时呼叫分析转录，您只能包含涉及转录内容匹配的规则。任何匹配项都会实时标记。  
![\[Amazon Transcribe 控制台屏幕截图：带有规则类型列表的 “规则” 窗格。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-categories-custom-rules-stream.png)

1. 此处介绍了使用以下规则的类别示例：客户在通话中的任何时候提出“要与经理交谈”。  
![\[Amazon Transcribe 控制台屏幕截图：带有逻辑选项的 “规则” 窗格。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-categories-custom-rules-stream2.png)

1. 向类别添加完规则后，选择**创建类别**。

## AWS CLI
<a name="tca-category-cli-stream"></a>

此示例使用[create-call-analytics-category](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/create-call-analytics-category.html)命令。有关更多信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html)、[https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CategoryProperties.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CategoryProperties.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Rule.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Rule.html)。

下面的示例创建了使用以下规则的类别：
+ 客户在通话中的任何时候提到“要与经理交谈”这句话。

此示例使用[create-call-analytics-category](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/create-call-analytics-category.html)命令和请求正文将规则添加到您的类别中。

```
aws transcribe create-call-analytics-category \
--cli-input-json file://filepath/my-first-analytics-category.json
```

*my-first-analytics-category.json* 文件包含以下请求正文。

```
{
  "CategoryName": "my-new-real-time-category",
  "InputType": "REAL_TIME",
  "Rules": [
        {
            "TranscriptFilter": {
                "Negate": false,
                "Targets": [
                    "speak to the manager"
                ],
                "TranscriptFilterType": "EXACT"
            }
        }
    ]
}
```

## 适用于 Python (Boto3) 的 AWS SDK
<a name="tca-category-python-stream"></a>

此示例使用 create\$1call\$1an [alytics\$1category 方法的`CategoryName`和`Rules`参数创建](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/transcribe.html#TranscribeService.Client.create_call_analytics_category)类别。 适用于 Python (Boto3) 的 AWS SDK 有关更多信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html)、[https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CategoryProperties.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CategoryProperties.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Rule.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Rule.html)。

有关使用的其他示例 AWS SDKs，包括特定功能、场景和跨服务示例，请参阅本章。[使用 Amazon Transcribe 的代码示例 AWS SDKs](service_code_examples.md)

下面的示例创建了使用以下规则的类别：
+ 客户在通话中的任何时候提到“要与经理交谈”这句话。

```
from __future__ import print_function
import time
import boto3
transcribe = boto3.client('transcribe', 'us-west-2')
category_name = "my-new-real-time-category"
transcribe.create_call_analytics_category(
    CategoryName = category_name,
    InputType = "REAL_TIME",
    Rules = [
        {
            'TranscriptFilter': {
                'Negate': False,
                'Targets': [
                    'speak to the manager'                    
                ],
                'TranscriptFilterType': 'EXACT'
            }
        }
    ]
)

result = transcribe.get_call_analytics_category(CategoryName = category_name)    
print(result)
```

## 实时呼叫分析类别的规则标准
<a name="tca-rules-stream"></a>

本节概述了您可以使用 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html) API 操作创建的自定义 `REAL_TIME` 规则的类型。

问题检测会自动进行，因此您无需创建任何规则或类别来标记问题。

请注意，实时呼叫分析转录仅支持关键字匹配。如果要创建包含中断、沉默或情绪的类别，请参阅[通话后分析类别的规则标准](tca-categories-batch.md#tca-rules-batch)。

### 关键字匹配
<a name="tca-rules-keywords-stream"></a>

使用关键字（[https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html) 数据类型）的规则旨在匹配：
+ 座席、客户或两者都说了的自定义单词或短语
+ 座席、客户或两者都**没说**的自定义单词或短语
+ 在特定时间范围内出现的自定义单词或短语

以下是 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html) 可用参数的示例：

```
"TranscriptFilter": { 
    "AbsoluteTimeRange": { 
       Specify the time frame, in milliseconds, when the match should occur
    },
    "RelativeTimeRange": { 
       Specify the time frame, in percentage, when the match should occur
    },
    "Negate": Specify if you want to match the presence or absence of your custom keywords,
    "ParticipantRole": Specify if you want to match speech from the agent, the customer, or both,
    "Targets": [ The custom words and phrases you want to match ],
    "TranscriptFilterType": Use this parameter to specify an exact match for the specified targets
}
```

有关这些参数以及与每个参数关联的有效值的更多信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateCallAnalyticsCategory.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html)。

# 通过实时转录进行通话后分析
<a name="tca-post-call"></a>

通话后分析是一项可选特征，可用于实时呼叫分析转录。除了标准的[实时分析见解](call-analytics-streaming.md#call-analytics-insights-streaming)外，通话后分析还为您提供以下信息：
+ **操作项目**：列出在通话中识别的所有操作项目。
+ **中断**：衡量一个参与者是否以及何时打断了另一个参与者的话
+ **问题**：提供通话中发现的问题
+ **音量**：衡量每位参与者的说话音量
+ **非通话时间**：衡量不含语音的时间段
+ **结果**：提供在通话中识别的结果或解决方案
+ **通话速度**：衡量两个参与者的说话速度
+ **通话时间**：衡量每个参与者在通话期间的说话时长，以毫秒为单位

启用后，来自音频流的呼叫后分析会生成类似于[音频文件中的通话后分析](call-analytics-batch.md)的脚本，并将其存储在中指定的 Amazon S3 存储桶中。`OutputLocation`此外，通话后分析会记录您的音频流，并将其作为音频文件（`WAV`格式）保存在同一个 Amazon S3 存储桶中。如果您启用密文，则经过编辑的笔录和经过编辑的音频文件也会存储在指定的存储桶中。 Amazon S3 对音频流启用通话后分析会生成两到四个文件，如下所述：
+ 如果**未**启用编辑功能，则您的输出文件为：

  1. 未经编辑的转录

  1. 未经编辑的音频文件
+ 如果在**没有**未编辑选项 (`redacted`) 的情况下启用了编辑功能，则您的输出文件为：

  1. 经过编辑的转录

  1. 经过编辑的音频文件
+ 如果在**有**未编辑选项 (`redacted_and_unredacted`) 的情况下启用了编辑功能，则您的输出文件为：

  1. 经过编辑的转录

  1. 经过编辑的音频文件

  1. 未经编辑的转录

  1. 未经编辑的音频文件

请注意，如果您在请求中启用了通话后分析（[https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_PostCallAnalyticsSettings.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_PostCallAnalyticsSettings.html)），并且您使用的是 `FLAC` 或 `OPUS-OGG` 媒体，则**不会**在转录文本中体现 `loudnessScore`，也不会创建音频流的音频录音。对于持续时间超过 90 分钟的长时间音频流，Transcribe 可能无法提供通话后分析。

有关为音频流通话后分析提供的见解的更多信息，请参阅[话通后分析见解](call-analytics-batch.md#call-analytics-insights-batch)部分。

**提示**  
如果您在实时呼叫分析请求中启用通话后分析，则您的所有 `POST_CALL` 和 `REAL-TIME` 类别都将应用于您的通话后分析转录。

## 启用通话后分析
<a name="tca-post-call-enable"></a>

要启用通话后分析，您必须在实时呼叫分析请求中包含 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_PostCallAnalyticsSettings.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_PostCallAnalyticsSettings.html) 参数。启用 `PostCallAnalyticsSettings` 时必须包括以下参数：
+ `OutputLocation`: 您要 Amazon S3 存储通话后记录的存储桶。
+ `DataAccessRoleArn`：有权访问指定 Amazon S3 存储桶的 Amazon S3 角色的 Amazon 资源名称 (ARN)。请注意，您还必须使用[适用于实时分析的信任策略](security_iam_id-based-policy-examples.md#trust-policy)。

如果您想要一份经过编辑的转录，可以在请求中包含 `ContentRedactionOutput` 或 `ContentRedactionType`。有关这些参数的更多信息，请参阅 API 参考中的 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartCallAnalyticsStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartCallAnalyticsStreamTranscription.html)。

要在启用呼叫后分析的情况下开始实时呼叫分析转录，您可以使用 **AWS 管理控制台**（仅限演示）、**HTTP/** 2 或。**WebSockets**有关示例，请参阅 [启动实时呼叫分析转录](tca-start-stream.md)。

**重要**  
目前， AWS 管理控制台 唯一提供带有预加载音频示例的实时呼叫分析演示。如果您想使用自己的音频，则必须使用 API（HTTP/2 或 SDK）。 WebSockets

## 通话后分析输出示例
<a name="tca-output-post-call"></a>

通话后记录按分段的 turn-by-turn格式显示。它们包括通话特点、情绪、通话摘要、问题检测和（可选）PII 编辑。如果您的任何通话后类别与音频内容匹配，则这些类别也会出现在您的输出中。

为了提高准确性并根据您的用例进一步自定义您的转录（例如包括特定行业的术语），请在您的呼叫分析请求中添加[自定义词汇表](custom-vocabulary.md)或[自定义语言模型](custom-language-models.md)。要屏蔽、删除或标记不希望出现在转录结果中的单词（例如脏话），请添加[词汇表过滤](vocabulary-filtering.md)。

以下是编译后的通话后分析输出示例：

```
{
    "JobStatus": "COMPLETED",
    "LanguageCode": "en-US",
    "AccountId": "1234567890",
    "Channel": "VOICE",
    "Participants": [{
        "ParticipantRole": "AGENT"
    }, 
    {
        "ParticipantRole": "CUSTOMER"
    }],
    "SessionId": "12a3b45c-de6f-78g9-0123-45h6ab78c901",
    "ContentMetadata": {
        "Output": "Raw"
    }
    "Transcript": [{
        "LoudnessScores": [
            78.63,
            78.37,
            77.98,
            74.18
        ],
        "Content": "[PII], my name is [PII], how can I help?",

            ...

        "Content": "Well, I would like to cancel my recipe subscription.",
            "IssuesDetected": [{
                "CharacterOffsets": {
                    "Begin": 7,
                    "End": 51
                }
            }],

            ...

        "Content": "That's very sad to hear. Can I offer you a 50% discount to have you stay with us?",
        "Id": "649afe93-1e59-4ae9-a3ba-a0a613868f5d",
        "BeginOffsetMillis": 12180,
        "EndOffsetMillis": 16960,
        "Sentiment": "NEGATIVE",
        "ParticipantRole": "AGENT"
    },
    {
        "LoudnessScores": [
            80.22,
            79.48,
            82.81
        ],
        "Content": "That is a very generous offer. And I accept.",
        "Id": "f9266cba-34df-4ca8-9cea-4f62a52a7981",
        "BeginOffsetMillis": 17140,
        "EndOffsetMillis": 19860,
        "Sentiment": "POSITIVE",
        "ParticipantRole": "CUSTOMER"
    },
            ...

        "Content": "Wonderful. I made all changes to your account and now this discount is applied, please check.",
        "OutcomesDetected": [{
        "CharacterOffsets": {
            "Begin": 12,
            "End": 78
        }
        }],

            ...

        "Content": "I will send an email with all the details to you today, and I will call you back next week to follow up. Have a wonderful evening.",
        "Id": "78cd0923-cafd-44a5-a66e-09515796572f",
        "BeginOffsetMillis": 31800,
        "EndOffsetMillis": 39450,
        "Sentiment": "POSITIVE",
        "ParticipantRole": "AGENT"
    },
    {
        "LoudnessScores": [
            78.54,
            68.76,
            67.76
        ],
        "Content": "Thank you very much, sir. Goodbye.",
        "Id": "5c5e6be0-8349-4767-8447-986f995af7c3",
        "BeginOffsetMillis": 40040,
        "EndOffsetMillis": 42460,
        "Sentiment": "POSITIVE",
        "ParticipantRole": "CUSTOMER"
    }
    ],

    ...

    "Categories": {
        "MatchedDetails": {
            "positive-resolution": {
                "PointsOfInterest": [{
                    "BeginOffsetMillis": 40040,
                    "EndOffsetMillis": 42460
                }]
            }
        },
        "MatchedCategories": [
            "positive-resolution"
        ]
    },

    ...

    "ConversationCharacteristics": {
        "NonTalkTime": {
            "Instances": [],
            "TotalTimeMillis": 0
        },
        "Interruptions": {
            "TotalCount": 2,
            "TotalTimeMillis": 10700,
            "InterruptionsByInterrupter": {
                "AGENT": [{
                    "BeginOffsetMillis": 26040,
                    "DurationMillis": 5510,
                    "EndOffsetMillis": 31550
                }],
                "CUSTOMER": [{
                    "BeginOffsetMillis": 770,
                    "DurationMillis": 5190,
                    "EndOffsetMillis": 5960
                }]
            }
        },
        "TotalConversationDurationMillis": 42460,
        "Sentiment": {
            "OverallSentiment": {
                "AGENT": 2.5,
                "CUSTOMER": 2.1
            },
            "SentimentByPeriod": {
                "QUARTER": {
                    "AGENT": [{
                        "Score": 0.0,
                        "BeginOffsetMillis": 0,
                        "EndOffsetMillis": 9862
                    },
                    {
                        "Score": -5.0,
                        "BeginOffsetMillis": 9862,
                        "EndOffsetMillis": 19725
                    },
                    {
                        "Score": 5.0,
                        "BeginOffsetMillis": 19725,
                        "EndOffsetMillis": 29587
                    },
                    {
                       "Score": 5.0,
                        "BeginOffsetMillis": 29587,
                        "EndOffsetMillis": 39450
                    }
                    ],
                    "CUSTOMER": [{
                        "Score": -2.5,
                        "BeginOffsetMillis": 0,
                        "EndOffsetMillis": 10615
                    },
                    {
                        "Score": 5.0,
                        "BeginOffsetMillis": 10615,
                        "EndOffsetMillis": 21230
                    },
                    {
                        "Score": 2.5,
                        "BeginOffsetMillis": 21230,
                        "EndOffsetMillis": 31845
                    },
                    {
                        "Score": 5.0,
                        "BeginOffsetMillis": 31845,
                        "EndOffsetMillis": 42460
                    }
                    ]
                }
            }
        },
        "TalkSpeed": {
            "DetailsByParticipant": {
                "AGENT": {
                    "AverageWordsPerMinute": 150
                },
                "CUSTOMER": {
                    "AverageWordsPerMinute": 167
                }
            }
        },
        "TalkTime": {
            "DetailsByParticipant": {
                "AGENT": {
                    "TotalTimeMillis": 32750
                },
                "CUSTOMER": {
                    "TotalTimeMillis": 18010
                }
            },
            "TotalTimeMillis": 50760
        }
    },
    ...
}
```

# 启动实时呼叫分析转录
<a name="tca-start-stream"></a>

在开始实时 Call Analytics 转录之前，您必须创建 Amazon Transcribe 要在通话中匹配的所有[类别](tca-categories-stream.md)。

**注意**  
呼叫分析转录无法追溯性地与新类别匹配。只有您在启动呼叫分析转录*之前*创建的类别才能应用于该转录输出。

如果您创建了一个或多个类别，并且您的音频与至少一个类别中的所有规则匹配， Amazon Transcribe 会使用匹配的类别来标记您的输出。如果您选择不使用类别，或者您的音频与类别中指定的规则不匹配，则不会标记您的转录。

要在实时呼叫分析转录中包含通话后分析，您必须使用 `OutputLocation` 参数在请求中提供一个 Amazon S3 存储桶。您还必须包括对指定存储桶具有写入权限的 `DataAccessRoleArn`。在您的实时呼叫分析流式会话完成后，系统会生成一份单独的转录并将其存储在指定的存储桶中。

借助实时呼叫分析，您还可以选择创建实时类别警报；有关说明，请参阅[为类别匹配创建实时警报](#tca-create-alert-stream)。

要开始实时呼叫分析转录，你可以使用**AWS 管理控制台**、**HTTP/2** 或 **WebSockets**；有关示例，请参阅以下内容：

**重要**  
目前， AWS 管理控制台 唯一提供带有预加载音频示例的实时呼叫分析演示。如果您想使用自己的音频，则必须使用 API（HTTP/2 或 SDK）。 WebSockets

## AWS 管理控制台
<a name="analytics-start-console-stream"></a>

请按以下过程启动呼叫分析请求。符合类别定义的所有特点的通话将使用该类别进行标记。

**注意**  
 AWS 管理控制台中只有演示可用。要启动自定义实时分析转录，必须使用 [API](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartCallAnalyticsStreamTranscription.html)。

1. 在导航窗格的 “ Amazon Transcribe 呼叫分析” 下，选择 “**分析实时通话**”。  
![\[Amazon Transcribe 控制台屏幕截图：“分析直播通话” 演示页面。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-start-stream.png)

1. 对于**步骤 1: 指定输入音频**，请从下拉菜单中选择一个演示测试文件。  
![\[Amazon Transcribe 控制台屏幕截图：演示输入音频的下拉选项。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-start-stream-settings1.png)

1. 对于**第 2 步: 查看通话类别**，您可以选择查看之前创建的实时呼叫分析类别。所有实时呼叫分析类别都应用于您的转录。

   选择**查看类别**后将打开一个新窗格，其中显示您现有的实时呼叫分析类别，并提供创建新类别的链接。  
![\[Amazon Transcribe 控制台屏幕截图：“通话分析类别” 页面。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-start-stream-settings2.png)

1. 对于**步骤 3: 配置输入和输出**，您可以选择应用其它设置。

   选择**配置高级设置**将打开一个新窗格，您可以在其中指定内容编辑设置。  
![\[Amazon Transcribe 控制台屏幕截图：高级设置面板全部折叠。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-start-stream-settings3.png)

   完成所有选择后，选择**保存**返回主页。

1. 要应用其它分析，您可以开启**通话后分析**。这为您提供了与通话后分析转录相同的分析，包括中断、音量、非通话时间、通话速度、通话时间、问题、操作项目和结果。通话后分析输出与您的实时呼叫分析转录存储在不同的文件中。  
![\[Amazon Transcribe 控制台屏幕截图：通话后分析面板已折叠。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-start-stream-post-call1.png)

   如果您应用电话后分析，则必须指定 Amazon S3 输出文件目标和 IAM 角色。您可以选择对输出进行加密。  
![\[Amazon Transcribe 控制台屏幕截图：通话后分析面板已展开。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/analytics-start-stream-post-call1a.png)

1. 选择 **Start streaming（开始流式传输）**。

## HTTP/2 音频流
<a name="analytics-start-http2"></a>

此示例创建了一个启用了呼叫分析的 HTTP/2 请求。有关使用 HTTP/2 流式传输的更多信息 Amazon Transcribe，请参阅。[设置 HTTP/2 音频流](streaming-setting-up.md#streaming-http2)有关特定于的参数和标题的更多详细信息 Amazon Transcribe，请参阅[https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartCallAnalyticsStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartCallAnalyticsStreamTranscription.html)。

此示例包括[通话后分析](tca-post-call.md)。如果您不想进行通话后分析，请从请求中删除 `PostCallAnalyticsSettings` 部分。

请注意，以下示例中显示的配置事件需要作为流中的第一个事件传送。

```
POST /stream-transcription HTTP/2
host: transcribestreaming.us-west-2.amazonaws.com
X-Amz-Target: com.amazonaws.transcribe.Transcribe.StartCallAnalyticsStreamTranscription
Content-Type: application/vnd.amazon.eventstream
X-Amz-Content-Sha256: string
X-Amz-Date: 20220208T235959Z
Authorization: AWS4-HMAC-SHA256 Credential=access-key/20220208/us-west-2/transcribe/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target;x-amz-security-token, Signature=string
x-amzn-transcribe-language-code: en-US
x-amzn-transcribe-media-encoding: flac
x-amzn-transcribe-sample-rate: 16000  
transfer-encoding: chunked
    
{
    "AudioStream": { 
        "AudioEvent": { 
            "AudioChunk": blob
        },
        "ConfigurationEvent": {
            "ChannelDefinitions": [
                {
                    "ChannelId": 0,
                    "ParticipantRole": "AGENT"
                },
                {
                     "ChannelId": 1,
                    "ParticipantRole": "CUSTOMER"
                }
            ],
            "PostCallAnalyticsSettings": {
                "OutputLocation": "s3://amzn-s3-demo-bucket/my-output-files/",
                "DataAccessRoleArn": "arn:aws:iam::111122223333:role/ExampleRole"
            }
        }
    }
}
```

参数定义可在 [API 参考](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Reference.html)中找到；所有 AWS API 操作的通用参数列在[常用参数](https://docs.aws.amazon.com/transcribe/latest/APIReference/CommonParameters.html)部分中。

## WebSocket 直播
<a name="analytics-start-websocket"></a>

此示例创建了一个在 WebSocket 直播中使用 Call Analytics 的预签名网址。为了便于阅读，已增加了换行符。有关将 WebSocket 直播与配合使用的更多信息 Amazon Transcribe，请参阅[设置直 WebSocket 播](streaming-setting-up.md#streaming-websocket)。有关参数的更多详细信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartCallAnalyticsStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartCallAnalyticsStreamTranscription.html)。

此示例包括[通话后分析](tca-post-call.md)。如果您不想进行通话后分析，请从请求中删除 `PostCallAnalyticsSettings` 部分。

请注意，以下示例中显示的配置事件需要作为流中的第一个事件传送。

```
GET wss://transcribestreaming.us-west-2.amazonaws.com:8443/call-analytics-stream-transcription-websocket?
&X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20220208%2Fus-west-2%2Ftranscribe%2Faws4_request
&X-Amz-Date=20220208T235959Z
&X-Amz-Expires=300
&X-Amz-Security-Token=security-token
&X-Amz-Signature=string
&X-Amz-SignedHeaders=content-type%3Bhost%3Bx-amz-date
&language-code=en-US
&media-encoding=flac    
&sample-rate=16000

{
    "AudioStream": { 
        "AudioEvent": { 
            "AudioChunk": blob
        },
        "ConfigurationEvent": {
            "ChannelDefinitions": [
                {
                    "ChannelId": 0,
                    "ParticipantRole": "AGENT"
                },
                {
                     "ChannelId": 1,
                    "ParticipantRole": "CUSTOMER"
                }
            ],
            "PostCallAnalyticsSettings": {
                "OutputLocation": "s3://amzn-s3-demo-bucket/my-output-files/",
                "DataAccessRoleArn": "arn:aws:iam::111122223333:role/ExampleRole"
            }
        }
    }
}
```

参数定义可在 [API 参考](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Reference.html)中找到；所有 AWS API 操作的通用参数列在[常用参数](https://docs.aws.amazon.com/transcribe/latest/APIReference/CommonParameters.html)部分中。

**提示**  
上面的 HTTP/2 和 WebSocket 示例包括通话后分析。如果您不想进行通话后分析，请从请求中删除 `PostCallAnalyticsSettings` 部分。  
如果启用 `PostCallAnalyticsSettings`，则必须将配置事件作为第一个事件发送。您的配置事件包括 `ChannelDenifitions` 和 `PostStreamAnalyticsSettings` 的设置，如前面的示例所示。  
二进制数据通过 `content-type application/octet-stream` 以二进制消息的形式传送，配置事件通过 `content-type application/json` 以文本消息的形式传送。  
有关更多信息，请参阅 [设置流式转录](streaming-setting-up.md)。

## 为类别匹配创建实时警报
<a name="tca-create-alert-stream"></a>

要设置实时警报，必须先创建一个带有 `REAL_TIME` 标志的 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_TranscriptFilter.html) 类别。此标志允许将您的类别应用于实时呼叫分析转录。

有关创建新类别的说明，请参阅 [为实时转录创建类别](tca-categories-stream.md)。

当您开始实时呼叫分析转录时，所有带有 `REAL_TIME` 标记的类别都会自动应用于片段级转录输出。如果出现 `TranscriptFilterType` 匹配，则会显示在转录的 `CategoryEvent` 部分下。然后，您可以使用此参数及其子参数 `MatchedCategories` 和 `MatchedDetails`，来设置自定义实时警报。

以下是 `CategoryEvent` 匹配的实时呼叫分析转录输出示例：

```
"CategoryEvent": { 
    "MatchedCategories": [ "shipping-complaint" ],
    "MatchedDetails": { 
        "my package never arrived" : { 
            "TimestampRanges": [    
                { 
                    "BeginOffsetMillis": 19010,
                    "EndOffsetMillis": 22690
                }
            ]
        }
    }
},
```

前面的示例表示与“*我的包裹一直未送达*”这句话完全匹配的文本，其代表了“配送投诉”类别中的一条规则。

您可以将实时警报设置为包含所列参数的任意组合。例如，您可以将警报设置为仅包含匹配的短语 (`MatchedDetails`) 或仅包含类别名称 (`MatchedCategories`)。或者，您可以将警报设置为包含所有参数。

如何设置实时警报取决于组织的界面和所需的警报类型。例如，您可以将 `CategoryEvent` 匹配项设置为发送弹出式通知、电子邮件、短信或系统可以接受的任何其它警报。

# 实时呼叫分析输出
<a name="tca-output-streaming"></a>

实时呼叫分析记录按区段的 turn-by-turn格式显示。它们包括类别事件、问题检测、情绪以及 PII 识别和编辑。类别事件允许您设置实时警报；有关更多信息，请参阅[为类别匹配创建实时警报](tca-start-stream.md#tca-create-alert-stream)。

为了提高准确性并根据您的用例进一步自定义您的转录（例如包括特定行业的术语），请在您的呼叫分析请求中添加[自定义词汇表](custom-vocabulary.md)或[自定义语言模型](custom-language-models.md)。要屏蔽、删除或标记不希望出现在转录结果中的单词（例如脏话），请添加[词汇表过滤](vocabulary-filtering.md)。

以下各节显示了实时呼叫分析转录的 JSON 输出示例。

## 类别事件
<a name="tca-output-category-event-stream"></a>

以下是转录输出中的类别匹配介绍。此示例显示从 19010 毫秒时间戳到 22690 毫秒时间戳的音频与“网络投诉”类别相匹配。在这种情况下，自定义的“网络投诉”类别要求客户提到“*网络问题*”（字词完全匹配）。

```
"CategoryEvent": { 
    "MatchedCategories": [ 
        "network-complaint" 
    ],
    "MatchedDetails": { 
        "network issues" : { 
            "TimestampRanges": [    
                { 
                    "BeginOffsetMillis": 9299375,
                    "EndOffsetMillis": 7899375
                }
            ]
        }
    }
},
```

## 问题检测
<a name="tca-output-issue-detection-stream"></a>

以下是转录输出中的问题检测匹配介绍。此示例显示，从字符 26 到字符 62 的文本描述了一个问题。

```
"UtteranceEvent": {
    ...
    "Transcript": "Wang Xiulan I'm tired of the network issues my phone is having.",
    ...
    "IssuesDetected": [
        {
            "CharacterOffsets": {
                "BeginOffsetChar": 26,
                "EndOffsetChar": 62
            }
        }
    ]
},
```

## 情绪
<a name="tca-output-sentiment-stream"></a>

以下是转录输出中的情绪分析介绍。

```
"UtteranceEvent": {    
    ...
    "Sentiment": "NEGATIVE",
    "Items": [{
        ...
```

## PII 识别
<a name="tca-output-pii-id-stream"></a>

以下是转录输出中 PII 识别介绍。

```
"Entities": [
    {
        "Content": "Wang Xiulan",
        "Category": "PII",
        "Type": "NAME",
        "BeginOffsetMillis": 7999375,
        "EndOffsetMillis": 199375,
        "Confidence": 0.9989
    }
],
```

## PII 编辑
<a name="tca-output-pii-redact-stream"></a>

以下是转录输出中的 PII 编辑介绍。

```
"Content": "[NAME]. Hi, [NAME]. I'm [NAME] Happy to be helping you today.",
"Redaction": {
    "RedactedTimestamps": [
        {
            "BeginOffsetMillis": 32670,
            "EndOffsetMillis": 33343
        }, 
        {
            "BeginOffsetMillis": 33518,
            "EndOffsetMillis": 33858
        }, 
        {
            "BeginOffsetMillis": 34068,
            "EndOffsetMillis": 34488
        }
    ]
},
```

## 语言识别
<a name="tca-output-language-id-stream"></a>

下面是语言识别在转录输出中的呈现形式。

```
{
  "LanguageCode": "en-US",
  "LanguageIdentification": [
    {
      "Code": "en-US",
      "Score": 0.823
    },
    {
      "Code": "de-DE",
      "Score": 0.177
    }
  ]
}
```

## 编译后的实时呼叫分析输出
<a name="tca-output-streaming-compiled"></a>

为简洁起见，在以下转录输出中，某些内容被替换为省略号。

```
{
    "CallAnalyticsTranscriptResultStream": {
        "BadRequestException": {},
        "ConflictException": {},
        "InternalFailureException": {},
        "LimitExceededException": {},
        "ServiceUnavailableException": {},
        "UtteranceEvent": {
            "UtteranceId": "58c27f92-7277-11ec-90d6-0242ac120003",
            "ParticipantRole": "CUSTOMER",
            "IsPartial": false,
            "Transcript": "Wang Xiulan I'm tired of the network issues my phone is having.",
            "BeginOffsetMillis": 19010,
            "EndOffsetMillis": 22690,
            "Sentiment": "NEGATIVE",
            "Items": [{
                    "Content": "Wang",
                    "BeginOffsetMillis": 379937,
                    "EndOffsetMillis": 299375,
                    "Type": "pronunciation",
                    "Confidence": 0.9961,
                    "VocabularyFilterMatch": false
                },
                {
                    "Content": "Xiulan",
                    "EndOffsetMillis": 5899375,
                    "BeginOffsetMillis": 3899375,
                    "Type": "pronunciation",
                    "Confidence": 0.9961,
                    "VocabularyFilterMatch": false
                },
                ...
                {
                    "Content": "network",
                    "EndOffsetMillis": 199375,
                    "BeginOffsetMillis": 9299375,
                    "Type": "pronunciation",
                    "Confidence": 0.9961,
                    "VocabularyFilterMatch": false
                },
                {
                    "Content": "issues",
                    "EndOffsetMillis": 7899375,
                    "BeginOffsetMillis": 5999375,
                    "Type": "pronunciation",
                    "Confidence": 0.9961,
                    "VocabularyFilterMatch": false
                },
                {
                    "Content": "my",
                    "EndOffsetMillis": 9199375,
                    "BeginOffsetMillis": 7999375,
                    "Type": "pronunciation",
                    "Confidence": 0.9961,
                    "VocabularyFilterMatch": false
                },
                {
                    "Content": "phone",
                    "EndOffsetMillis": 199375,
                    "BeginOffsetMillis": 9299375,
                    "Type": "pronunciation",
                    "Confidence": 0.9961,
                    "VocabularyFilterMatch": false
                },
                ...
            ],
            "Entities": [{
                "Content": "Wang Xiulan",
                "Category": "PII",
                "Type": "NAME",
                "BeginOffsetMillis": 7999375,
                "EndOffsetMillis": 199375,
                "Confidence": 0.9989
            }],
            "IssuesDetected": [{
                "CharacterOffsets": {
                    "BeginOffsetChar": 26,
                    "EndOffsetChar": 62
                }
            }],
            "LanguageCode": "en-US",
            "LanguageIdentification": [
                {
                    "Code": "en-US",
                    "Score": 0.823
                },
                {
                    "Code": "de-DE",
                    "Score": 0.177
                }
            ]
        },
        "CategoryEvent": { 
            "MatchedCategories": [ 
                "network-complaint" 
            ],
            "MatchedDetails": { 
                "network issues" : { 
                    "TimestampRanges": [    
                        { 
                            "BeginOffsetMillis": 9299375,
                            "EndOffsetMillis": 7899375
                        }
                    ]
                }
            }
        }
    }
}
```