

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon Chime SDK 語音分析
<a name="voice-analytics"></a>

Amazon Chime SDK 語音分析功能可讓您實作發言者搜尋和語音音調分析。您可以使用發言者搜尋來識別和註冊新發起人，以及識別重複發起人，並為這些識別指派可信度分數。您可以使用語音音調分析，將來電者的情緒預測為 `negative`、 `neutral`或 `positive`。

您可以執行語音分析，做為 Amazon Chime SDK 呼叫分析工作階段的選用元件。

語音分析適用於媒體洞察管道或 Amazon Chime SDK Voice Connectors 呼叫。我們建議您使用[媒體管道 SDK](media-pipelines.md) 並在媒體洞察管道上調用任務，以更精細地控制任務，以及有關任務的資訊。

您可以使用語音連接器來確保回溯相容性，但我們只會使用新功能更新媒體洞見管道 APIs。

如需建立和使用語音連接器的詳細資訊，請參閱《[Amazon Chime SDK 管理員指南》中的管理 Amazon Chime SDK 語音連接器](https://docs.aws.amazon.com/chime-sdk/latest/ag/voice-connectors.html)。 **

語音分析也提供：
+ 非同步任務處理。任務彼此獨立執行。
+ 控制您處理洞見的時間。

您可以呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html)和 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartVoiceToneAnalysisTask.html) APIs 來啟動語音分析。

下列主題說明如何使用語音分析。

**Topics**
+ [了解 Amazon Chime SDK 的語音分析架構](va-architecture.md)
+ [了解 Amazon Chime SDK 的發言者搜尋工作流程](va-data-flow.md)
+ [Amazon Chime SDK 的語音音調分析工作流程範例](va-tone-flow.md)
+ [輪詢 Amazon Chime SDK 的任務結果](va-task-result-poll.md)
+ [了解 Amazon Chime SDK 的通知](va-notification-targets.md)
+ [了解 Amazon Chime SDK 的資料儲存、選擇退出和資料保留政策](va-opt-out.md)
+ [使用語音 APIs執行 Amazon Chime SDK 的語音分析](va-in-voice-namespace.md)

# 了解 Amazon Chime SDK 的語音分析架構
<a name="va-architecture"></a>

本節中的主題提供 Amazon Chime SDK 語音分析架構的概觀，包括每個功能的資料流程。

此圖表提供資料如何流經語音分析的高階檢視。

![\[圖表顯示語音分析的高階資料流程。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/va-architecture-kvs.png)


在圖表中：

1. 音訊會串流到來電者和客服人員的 Kinesis Video Stream。您可以使用 Kinesis Video Streams 生產者或 Amazon Chime SDK Voice Connector 串流來執行此操作。如需詳細資訊，請參閱本指南[了解 Amazon Chime SDK 機器學習型分析的工作流程](ml-based-analytics.md)中的 ，以及[《Amazon Chime SDK 管理員指南》中的將 Amazon Chime SDK Voice Connector 媒體串流至 Kinesis](https://docs.aws.amazon.com/chime-sdk/latest/ag/start-kinesis-vc.html)。 **

1. 應用程式或建置器會在發起人同意後觸發音訊串流的發言者搜尋、語音音調分析或兩者。

1. 在通話期間，語音分析會將通知傳送至目標，Amazon Simple Queue Service (SQS)、Amazon Simple Notification Service (SNS)、 AWS Lambda 或 Amazon Kinesis Data Streams。

此外，語音分析提供這些工具來管理其產生的資料。

**語音設定檔**  
語音內嵌、內嵌的唯一 ID 及其過期日期的組合。基於安全考量，語音設定檔會在三年後過期，因為語音會隨著時間而變更。若要避免重新建立語音設定檔，請呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html) API。如需過期日期的詳細資訊，請參閱 [了解 Amazon Chime SDK 語音分析的資料保留](va-data-retention.md)。  
若要註冊語音內嵌，或更新已註冊的語音內嵌，您必須在通話結束後的 24 小時內呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfile.html)或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html) APIs。

**語音設定檔網域**  
語音設定檔的集合。

# 了解 Amazon Chime SDK 的發言者搜尋工作流程
<a name="va-data-flow"></a>

在本節中，我們向您展示 Amazon Chime SDK 發言者搜尋分析的範例資料和程式流程。

發言者搜尋函數涉及建立語音內嵌，可用來比較來電者的語音與先前儲存的語音資料。以數位聲紋形式收集、使用、儲存和保留生物識別符和生物識別資訊，可能需要發起人透過書面版本取得同意。根據各種州法律，包括伊利諾州、德克薩斯州、華盛頓州和其他州隱私權法律，此類同意是必要的。在使用發言者搜尋功能之前，您必須提供所有通知，並依據適用法律以及規範您使用此功能的 [AWS 服務條款](https://aws.amazon.com/service-terms/)，取得所有同意。

下圖顯示透過發言者搜尋分析任務的範例資料流程。圖表下方的編號描述說明程序的每個步驟。圖表假設您已使用具有 的通話分析組態來設定 Amazon Chime SDK Voice Connector`VoiceAnalyticsProcessor`。如需詳細資訊，請參閱[錄製語音連接器呼叫](record-vc-calls.md)。

![\[圖表顯示透過發言者搜尋分析的資料流程。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/speaker-search-workflow-2.png)


1. 您或系統管理員會建立語音設定檔網域，以存放語音內嵌和語音設定檔。如需建立語音設定檔網域的詳細資訊，請參閱《*Amazon Chime SDK 管理員指南*》中的[建立語音設定檔網域](https://docs.aws.amazon.com/chime-sdk/latest/ag/create-vp-domain.html)。您也可以使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfileDomain.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfileDomain.html) API。

1. 來電者使用指派給 Amazon Chime SDK Voice Connector 的電話號碼撥入 。或者，客服人員使用語音連接器號碼進行外撥通話。

1. Amazon Chime SDK Voice Connector 服務會建立交易 ID，並將其與呼叫建立關聯。

1. 假設您的應用程式訂閱 EventBridge 事件，您的應用程式會使用媒體洞察管道組態和語音連接器呼叫的 Kinesis Video Stream ARNs 來呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html) API。

   如需使用 EventBridge 的詳細資訊，請參閱 [了解 Amazon Chime SDK 機器學習型分析的工作流程](ml-based-analytics.md)。

1. 您的應用程式，例如互動式語音回應系統，或客服人員會通知來電者有關通話錄音和使用語音內嵌進行語音分析，並尋求他們的參與同意。

1. 發起人提供同意後，如果您有 Voice Connector 和交易 ID，您的應用程式或客服人員可以透過[語音 SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) 呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html) API。或者，如果您有媒體洞察管道 ID 而不是交易 ID，您可以在[媒體管道 SDK ](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Media_Pipelines.html)中呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html) API。

   一旦發起人提供同意，您的應用程式或客服人員就會呼叫 `StartSpeakerSearchTask` API。您必須將語音連接器 ID、交易 ID 和語音設定檔網域 ID 傳遞給 API。會傳回發言者搜尋任務 ID，以識別非同步任務。
**注意**  
在任一SDKs中調用 `StartSpeakerSearchTask` API 之前，您必須根據法律和 [AWS 服務條款](https://aws.amazon.com/service-terms/)的要求，提供任何必要的通知，並取得任何必要的同意。

1. 系統會累積 10 秒的來電者語音。發起人必須至少說出該時間。系統不會擷取或分析靜音。

1. 媒體洞察管道會將語音與網域中的語音設定檔進行比較，並列出前 10 個高可信度配對。如果找不到相符項目，語音連接器會建立語音設定檔。

1. 媒體洞察管道服務會將通知事件傳送至設定的通知目標。

1. 發起人會繼續說話，並提供額外 10 秒的非靜音語音。

1. 媒體洞察管道會產生註冊語音內嵌，您可以用來建立語音設定檔或更新現有的語音設定檔。

1. 媒體洞察管道會將`VoiceprintGenerationSuccessful`通知傳送至設定的通知目標。

1. 您的應用程式會呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfile.html)或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html) APIs來建立或更新設定檔。

1. 您的應用程式會視需要呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetSpeakerSearchTask.html) API，以取得發言者搜尋任務的最新狀態。

# Amazon Chime SDK 的語音音調分析工作流程範例
<a name="va-tone-flow"></a>

**重要**  
語音音調分析涉及根據語言和音調資訊，對發言者的情緒進行預測。您不得以任何法律禁止的方式使用情緒分析，包括做出有關個人的決策，這些決策會對這些個人產生法律或類似的重大影響 （例如，與就業、房屋、信用價值或財務優惠等相關）。

語音音調分析會分析通話中人物的語音，並預測他們的情緒，可能是 `positive`、 `negative`或 `neutral`。

下圖顯示語音音調分析的範例工作流程。影像下方的編號項目說明程序的每個步驟。

**注意**  
圖表假設您已使用具有 的通話分析組態來設定 Amazon Chime SDK Voice Connector`VoiceAnalyticsProcessor`。如需詳細資訊，請參閱[錄製語音連接器呼叫](record-vc-calls.md)。

![\[顯示透過語音音調分析之資料流程的圖表。\]](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/voice-tone-workflow-v2.png)


在圖表中：

1. 來電者使用指派給 Amazon Chime SDK Voice Connector 的電話號碼撥入 。或者，客服人員使用語音連接器號碼進行外撥通話。

1. Voice Connector 服務會建立交易 ID，並將其與呼叫建立關聯。

1. 您的應用程式，例如互動式語音回應系統，或客服人員會通知來電者有關通話錄音和使用語音內嵌進行語音分析，並尋求他們的參與同意。

1. 假設您的應用程式訂閱 EventBridge 事件，您的應用程式會使用媒體洞察管道組態和語音連接器呼叫的 Kinesis Video Stream ARNs 來呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html) API。

   如需使用 EventBridge 的詳細資訊，請參閱 [了解 Amazon Chime SDK 機器學習型分析的工作流程](ml-based-analytics.md)。

1. 發起人提供同意後，如果您有語音連接器和交易 ID，您的應用程式或客服人員可以透過語音 [ SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) 呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html) API。或者，如果您有媒體洞察管道 ID 而不是交易 ID，您可以在[媒體管道 SDK ](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Media_Pipelines.html)中呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html) API。

   一旦發起人提供同意，您的應用程式或客服人員就會呼叫 `StartSpeakerSearchTask` API。您必須將語音連接器 ID、交易 ID 和語音設定檔網域 ID 傳遞給 API。會傳回發言者搜尋任務 ID，以識別非同步任務。

1. 使用者在整個通話中說話。

1. 客服人員會在通話過程中說話。

1. 每 5 秒，媒體洞察管道會使用機器學習模型來分析最後 30 秒的語音，並預測該間隔的發起人語氣，以及從`StartVoiceToneAnalysisTask`第一次呼叫 時開始的整個通話。

1. 媒體洞察管道會將含有該資訊的通知傳送至設定的通知目標。您可以根據其串流 ARN 和頻道 ID 來識別通知。如需詳細資訊[了解 Amazon Chime SDK 的通知](va-notification-targets.md)，請參閱本節稍後的 。

1. 重複步驟 9 和 10，直到通話結束。

1. 在通話結束時，媒體洞察管道會傳送一個最終通知，其中包含過去 30 秒內目前的平均音調預測，以及整個通話的平均音調。

1. 您的應用程式會視需要呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetVoiceToneAnalysisTask.html) API，以取得語音音調分析任務的最新狀態。
**注意**  
`GetVoiceToneAnalysisTask` API 不會串流音調資料。

**注意**  
[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetVoiceToneAnalysisTask.html) API 不會傳回語音音調資料。

# 輪詢 Amazon Chime SDK 的任務結果
<a name="va-task-result-poll"></a>

**重要**  
根據預設，語音分析會提供 7 天的結果，然後會自動刪除資料。如果您想要長時間使用任務資料，或要遵守資料保留法，則必須存放任務資料。如需詳細資訊[了解 Amazon Chime SDK 語音分析的資料保留](va-data-retention.md)，請參閱本指南稍後的 。

語音分析會嘗試確保每個任務結果至少傳遞一次。不過，網路問題可能會增加延遲。若要解決潛在問題，或者如果您偏好同步程序，您可以在[媒體管道 SDK ](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Media_Pipelines.html)或[語音 SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) 中使用下列 APIs：
+  [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetSpeakerSearchTask.html) 
+  [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetVoiceToneAnalysisTask.html)
**重要**  
`GetVoiceToneAnalysisTask` API 只會傳回任務的狀態。它不會傳回任務結果。若要查看結果，請使用 Amazon SQS、Amazon SNS 或 AWS Lambda 通知目標。

`GetSpeakerSearchTask` API 會同步取得任務 ID、延遲訊息或不符合順序的訊息的最新結果。不過，我們建議您使用通知目標和非同步處理。這樣做會消耗較少的運算資源。

# 了解 Amazon Chime SDK 的通知
<a name="va-notification-targets"></a>

語音分析會在發言者搜尋或語音音調分析任務開始時、執行期間以及完成時，自動將事件傳送至目標。您可以使用通知目標來接收這些事件。如果您的工作流程或應用程式需要高可用性，我們建議您使用多個通知目標。

此外，您必須使用 IAM 角色搭配存取通知目標所需的政策。如需詳細資訊，請參閱[使用 Amazon Chime SDK 的呼叫分析資源存取角色](call-analytics-resource-access-role.md)。

**注意**  
對於 Amazon SQS 和 Amazon SNS，我們不支援first-in-first-out佇列。因此，訊息可能無法按順序送達。建議您檢查時間戳記以視需要排序訊息，並在 Amazon DynamoDB 等資料存放區中保留訊息。您也可以使用中所述APIs [輪詢 Amazon Chime SDK 的任務結果](va-task-result-poll.md) 來接收最新結果。

下表列出事件及其對應的詳細資訊類型。


| 通知事件 | 詳細資訊類型 | 
| --- | --- | 
| 語音分析中繼資料 | `VoiceAnalyticsStatus` | 
| 發言者搜尋 | `SpeakerSearchStatus` | 
| 語音音調分析 | `VoiceToneAnalysisStatus` | 

# 了解 Amazon Chime SDK 通知目標的 IAM 政策
<a name="va-iam-target-policies"></a>

您必須在通話分析組態中使用 IAM 角色中的政策，以允許存取您的 Amazon SQS、Amazon SNS、AWS Lambda 或 Amazon KDS 通知目標。如需詳細資訊，請參閱本指南中的 [使用 Amazon Chime SDK 的呼叫分析資源存取角色](call-analytics-resource-access-role.md)。

## 發言者搜尋事件
<a name="va-speaker-search-events"></a>

發言者搜尋事件具有`SpeakerSearchStatus`詳細資訊類型。

Amazon Chime SDK Voice Connectors 會傳送下列發言者搜尋事件：
+ 識別相符項目
+ 語音內嵌產生

事件可以有下列狀態：
+ `IdentificationSuccessful` – 成功識別至少一個在指定語音設定檔網域中具有高可信度分數的相符語音設定檔 ID。
+ `IdentificationFailure` – 無法執行識別。原因：來電者至少 10 秒沒有說話，音訊品質不佳。
+ `IdentificationNoMatchesFound` – 在指定的語音設定檔網域中找不到高度可信度相符項目。發起人可能是新的，或其語音可能已變更。
+ `VoiceprintGenerationSuccessful` – 系統使用 20 秒的非靜音音訊產生語音內嵌。
+ `VoiceprintGenerationFailure` – 系統無法產生語音內嵌。原因：來電者至少 20 秒沒有說話，音訊品質不佳。

### 識別相符項目
<a name="va-id-matches"></a>

為指定的 呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask) API 之後`transactionId`，語音連接器服務會在 10 秒的非無提示語音之後傳回識別比對通知。服務會傳回前 10 個相符項目，以及 【0， 1】 範圍內的語音設定檔 ID 和可信度分數。可信度分數越高，通話的發言者越有可能符合語音設定檔 ID。如果機器學習模型找不到相符項目，通知`detailStatus`的欄位會包含 `IdentificationNoMatchesFound`。

下列範例顯示成功配對的通知。

```
{    
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "SpeakerSearchStatus",
    "service-type": "VoiceAnalytics",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "taskId": "uuid",
        "detailStatus": "IdentificationSuccessful",
        "speakerSearchDetails" : {
            "results": [
                {
                    "voiceProfileId": "vp-505e0992-82da-49eb-9d4a-4b34772b96b6",
                    "confidenceScore": "0.94567856",
                },
                {
                    "voiceProfileId": "vp-fba9cbfa-4b8d-4f10-9e41-9dfdd66545ab",
                    "confidenceScore": "0.82783350",
                },
                {
                    "voiceProfileId": "vp-746995fd-16dc-45b9-8965-89569d1cf787",
                    "confidenceScore": "0.77136436",
                }
            ]
        },
        "mediaInsightsPipelineId": "87654321-33ca-4dc6-9cdf-abcde6612345",
        "sourceArn": "arn:aws:chime:us-east-1:111122223333:media-pipeline/87654321-33ca-4dc6-9cdf-abcde6612345",
        "streamArn": "arn:aws:kinesisvideo:us-east-1:111122223333:stream/my-stream/0123456789012",
        "channelId": 0
    }
}
```

### 語音內嵌產生
<a name="va-voice-print-generation"></a>

在額外 10 秒的非靜音語音之後，語音連接器會將語音內嵌產生通知傳送至通知目標。您可以在語音設定檔中註冊新的語音內嵌，或更新已在語音設定檔中的列印。

下列範例顯示成功配對的通知，這表示您可以更新相關聯的語音設定檔。

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "SpeakerSearchStatus",
    "service-type": "VoiceAnalytics",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "taskId": "guid",
        "detailStatus": "VoiceprintGenerationSuccess",
        "mediaInsightsPipelineId": "87654321-33ca-4dc6-9cdf-abcde6612345",
        "sourceArn": "arn:aws:chime:us-east-1:111122223333:media-pipeline/87654321-33ca-4dc6-9cdf-abcde6612345",
        "streamArn": "arn:aws:kinesisvideo:us-east-1:111122223333:stream/my-stream/0123456789012",
        "channelId": 0
    }
}
```

## 語音音調分析事件
<a name="va-tone-status"></a>

語音音調分析事件具有`VoiceToneAnalysisStatus`詳細資訊類型。分析可以傳回這些狀態：
+ `VoiceToneAnalysisSuccessful` – 成功將來電者和客服人員的語音分析為情緒的機率：正面、負面或中性。
+ `VoiceToneAnalysisFailure` – 無法執行音調分析。如果來電者未說話就掛斷 10 秒，或音訊品質變得太差，就會發生這種情況。
+ `VoiceToneAnalysisCompleted` – 成功將使用者和客服人員的語音分析為整個通話的情緒可能性。這是語音音調分析完成時傳送的最終事件。

下列範例顯示典型的音調分析事件。

```
{
  "detail-type": "VoiceToneAnalysisStatus",
  "service-type": "VoiceAnalytics",
  "source": "aws.chime",
  "account": "216539279014",
  "time": "2022-08-26T17:55:15.563441Z",
  "region": "us-east-1",
  "detail": {
    "taskId": "uuid",
    "detailStatus": "VoiceToneAnalysisSuccessful",
    "voiceToneAnalysisDetails": {
      "currentAverageVoiceTone": {
          "startTime": "2022-08-26T17:55:15.563Z",
          "endTime": "2022-08-26T17:55:45.720Z",
          "voiceToneLabel": "neutral",
          "voiceToneScore": {    
            "neutral": "0.83",    
            "positive": "0.13",    
            "negative": "0.04"
          }
      },
      "overallAverageVoiceTone": {
          "startTime": "2022-08-26T16:23:13.344Z",
          "endTime": "2022-08-26T17:55:45.720Z",
          "voiceToneLabel": "positive",
          "voiceToneScore": {    
            "neutral": "0.25",    
            "positive": "0.65",    
            "negative": "0.1"
          }
      }
    },
        "startFragmentNumber": "01234567890123456789",
        "mediaInsightsPipelineId": "87654321-33ca-4dc6-9cdf-abcde6612345",
        "sourceArn": "arn:aws:chime:us-east-1:111122223333:media-pipeline/87654321-33ca-4dc6-9cdf-abcde6612345",
        "streamArn": "arn:aws:kinesisvideo:us-east-1:111122223333:stream/my-stream/0123456789012",
        "channelId": 0
  },
  "version": "0",
  "id": "Id-f928dfe3-f44b-4965-8a17-612f9fb92d59"
}
```

## 通話後摘要事件
<a name="va-post-call-summary-events"></a>

通話結束後 5 分鐘會傳送通話後摘要事件。這些摘要提供在整個通話中發生的發言者搜尋任務的概觀。

下列範例顯示通話後摘要，其中包含最佳語音設定檔相符項目、已確認的發言者身分，以及透過 `CreateVoiceProfile`和 `UpdateVoiceProfile` API 在通話期間所建立或更新的語音設定檔清單。

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "VoiceAnalyticsStatus",
    "service-type": "VoiceAnalytics",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",    
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "detailStatus": "PostCallVoiceAnalytics",
        "callId": "22e8dee8-bbd7-4f94-927b-2d0ebaeddc1c",
        "transactionId": "daaeb6bf-2fe2-4e51-984e-d0fbf2f09436",
        "voiceConnectorId": "abcdef1ghij2klmno3pqr4",
        "isCaller": true | false,
        "speakerSearchResults": {
            "bestMatchedVoiceProfileId": "vp-04c25ba1-a059-4fd3-8495-4ac91b55e2bf",
            "customerValidatedCallerIdentity": "vp-04c25ba1-a059-4fd3-8495-4ac91b55e2bf",
            "createVoiceProfileTransactions": [
                {
                    "voiceProfileId": "vp-04c25ba1-a059-4fd3-8495-4ac91b55e2bf",
                    "requestTimestamp": "2022-12-14T18:38:38.796Z"
                },
                {
                    "voiceProfileId": "vp-04c25ba1-a059-4fd3-8495-4ac91b55e2bf",
                    "requestTimestamp": "2022-12-14T18:38:38.796Z",
                }
            ],
            "updateVoiceProfileTransactions": [
                {
                    "voiceProfileId": "vp-04c25ba1-a059-4fd3-8495-4ac91b55e2bf",
                    "requestTimestamp": "2022-12-14T18:38:38.796Z",
                },
                {
                    "voiceProfileId": "vp-04c25ba1-a059-4fd3-8495-4ac91b55e2bf",
                    "requestTimestamp": "2022-12-14T18:38:38.796Z",
                }
            ]
        }
    }
}
```

# Amazon Chime SDK 的語音分析範例 Lambda 函數
<a name="va-sample-lambda"></a>

下列範例中的 Python 程式碼會處理從語音連接器收到的通知。您可以將程式碼新增至 AWS Lambda 函數。您也可以使用它來觸發 Amazon SQS 佇列、Amazon SNS 主題或 Amazon Kinesis Data Stream。然後，您可以將通知存放在 中`EventTable`以供日後處理。如需確切的通知格式，請參閱 [了解 Amazon Chime SDK 的通知](va-notification-targets.md)。

```
import base64
import boto3
import json
import logging
import time

from datetime import datetime
from enum import Enum

log = logging.getLogger()
log.setLevel(logging.INFO)

dynamo = boto3.client("dynamodb")

EVENT_TABLE_NAME = "EventTable"

class EventType(Enum):
    """
    This example code uses a single Lambda processor to handle either
    triggers from SQS, SNS, Lambda, or Kinesis. You can adapt it to fit your
    desired infrastructure depending on what you prefer. To distinguish
    where we get events from, we use an EventType enum as an
    example to show the different ways of parsing the notifications.
    """
    SQS = "SQS"
    SNS = "SNS"
    LAMBDA = "LAMBDA"
    KINESIS = "KINESIS"


class AnalyticsType(Enum):
    """
    Define the various analytics event types that this Lambda will
    handle.
    """
    SPEAKER_SEARCH = "SpeakerSearch"
    VOICE_TONE_ANALYSIS = "VoiceToneAnalysis"
    ANALYTICS_READY = "AnalyticsReady"
    UNKNOWN = "UNKNOWN"
 
   
class DetailType(Enum):
    """
    Define the  various detail types that Voice Connector's voice
    analytics feature can return.
    """
    SPEAKER_SEARCH_TYPE = "SpeakerSearchStatus"
    VOICE_TONE_ANALYSIS_TYPE = "VoiceToneAnalysisStatus"
    ANALYTICS_READY = "VoiceAnalyticsStatus"
 

def handle(event, context):
    """
    Example of how to handle incoming Voice Analytics notification messages
    from Voice Connector.
    """
    logging.info(f"Received event of type {type(event)} with payload {event}")
    is_lambda = True
    
    # Handle triggers from SQS, SNS, and KDS. Use the below code if you would like
    # to use this Lambda as a trigger for an existing SQS queue, SNS topic or Kinesis
    # stream.
    if "Records" in event:
        logging.info("Handling event from SQS or SNS since Records exists")
        is_lambda = False
        for record in event.get("Records", []):
            _process_record(record)
    
    # If you would prefer to have your Lambda invoked directly, use the
    # below code to have the Voice Connector directly invoke your Lambda.
    # In this scenario, there are no "Records" passed.
    if is_lambda:
        logging.info(f"Handling event from Lambda")
        event_type = EventType.LAMBDA
        _process_notification_event(event_type, event)


def _process_record(record):
    # SQS and Kinesis use eventSource.
    event_source = record.get("eventSource")
    
    # SNS uses EventSource.
    if not event_source:
        event_source = record.get("EventSource")

    # Assign the event type explicitly based on the event source value.
    event_type = None
    if event_source == "aws:sqs":
        event = record["body"]
        event_type = EventType.SQS
    elif event_source == "aws:sns":
        event = record["Sns"]["Message"]
        event_type = EventType.SNS
    elif event_source == "aws:kinesis":
        raw_data = record["kinesis"]["data"]
        raw_message = base64.b64decode(raw_data).decode('utf-8')
        event = json.loads(raw_message)
        event_type = EventType.KINESIS
    else:
        raise Exception(f"Event source {event_source} is not supported")

    _process_notification_event(event_type, event)


def _process_notification_event(
    event_type: EventType,
    event: dict
):
    """
    Extract the attributes from the Voice Analytics notification message
    and store it as a DynamoDB item to process later.
    """
    message_id = event.get("id")
    analytics_type = _get_analytics_type(event.get("detail-type"))
    pk = None
    if analytics_type == AnalyticsType.ANALYTICS_READY.value or analytics_type == AnalyticsType.UNKNOWN.value:
        transaction_id = event.get("detail").get("transactionId")
        pk = f"transactionId#{transaction_id}#notificationType#{event_type.value}#analyticsType#{analytics_type}"
    else:
        task_id = event.get("detail").get("taskId")
        pk = f"taskId#{task_id}#notificationType#{event_type.value}#analyticsType#{analytics_type}"
    logging.info(f"Generated PK {pk}")
    _create_request_record(pk, message_id, json.dumps(event))


def _create_request_record(pk: str, sk: str, body: str):
    """
    Record this notification message into the Dynamo db table
    """
    try:
        # Use consistent ISO8601 date format.
        # 2019-08-01T23:09:35.369156 -> 2019-08-01T23:09:35.369Z
        time_now = (
            datetime.utcnow().isoformat()[:-3] + "Z"
        )
        response = dynamo.put_item(
            Item={
                "PK": {"S": pk},
                "SK": {"S": sk},
                "body": {"S": body},
                "createdOn": {"S": time_now},
            },
            TableName=EVENT_TABLE_NAME,
        )
        logging.info(f"Added record in table {EVENT_TABLE_NAME}, response : {response}")
    except Exception as e:
        logging.error(f"Error in adding record: {e}")


def _get_analytics_type(detail_type: str):
    """
    Get analytics type based on message detail type value.
    """
    if detail_type == DetailType.SPEAKER_SEARCH_TYPE.value:
        return AnalyticsType.SPEAKER_SEARCH.value
    elif detail_type == DetailType.VOICE_TONE_ANALYSIS_TYPE.value:
        return AnalyticsType.VOICE_TONE_ANALYSIS.value
    elif detail_type == DetailType.ANALYTICS_READY.value:
        return AnalyticsType.ANALYTICS_READY.value
    else:
        return AnalyticsType.UNKNOWN.value
```

**重要**  
您必須先取得同意，才能呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask)或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartVoiceToneAnalysis.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartVoiceToneAnalysis.html) APIs。我們建議您將事件保留在保留區域中，例如 Amazon DynamoDB，直到您取得同意為止。

# 了解 Amazon Chime SDK 的資料儲存、選擇退出和資料保留政策
<a name="va-opt-out"></a>

Amazon Chime SDK 使用語音資料來提供和改善發言者搜尋服務。為此，我們使用註冊音訊、用於建立語音內嵌的錄製程式碼片段，來訓練我們的機器學習和人工智慧模型。您可以選擇不讓資料用於訓練模型，本節中的主題會說明如何進行。

**Topics**
+ [了解 Amazon Chime SDK 發言者搜尋的資料儲存](speaker-search-data-storage.md)
+ [處理 Amazon Chime SDK 的發言者搜尋選擇退出](va-handle-opt-outs.md)
+ [了解 Amazon Chime SDK 語音分析的資料保留](va-data-retention.md)

# 了解 Amazon Chime SDK 發言者搜尋的資料儲存
<a name="speaker-search-data-storage"></a>

Amazon Chime SDK 會存放下列用於發言者搜尋的資料：
+ 連接至語音設定檔的語音內嵌，用於提供發言者搜尋功能。
+ 註冊音訊，用於為每個語音設定檔建立語音內嵌的錄製語音片段。我們使用註冊錄音來：
  + 將發言者搜尋模型保持在最新狀態，這是提供發言者搜尋功能的關鍵部分。
  + 訓練機器學習模型以開發和改善服務。使用註冊音訊進行訓練是選用的，您可以透過選取選擇退出政策來選擇退出此使用，如下節所述。

# 處理 Amazon Chime SDK 的發言者搜尋選擇退出
<a name="va-handle-opt-outs"></a>

您可以為最終使用者和整個組織處理選擇退出。選擇退出具有以下影響：
+ 在您選擇退出後，語音分析將不會使用任何新的註冊音訊進行模型訓練，也不會使用在您選擇退出之前收集和儲存的任何註冊音訊。
+ 在您選擇退出後，語音分析將存放和使用註冊音訊，以提供發言者搜尋服務。

**警告**  
下列選擇退出動作是不可復原的。您無法復原已刪除的資料。

**處理最終使用者選擇退出**  
當最終使用者想要選擇退出發言者搜尋時，請呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_DeleteVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_DeleteVoiceProfile.html) API。此動作會移除語音設定檔，以及語音內嵌和註冊音訊。

若要刪除一組語音內嵌，請呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_DeleteVoiceProfileDomain.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_DeleteVoiceProfileDomain.html) API 以移除網域。此動作會刪除網域中的所有**語音設定檔。

**在組織層級處理選擇退出**  
若要處理整個組織的選擇退出，請使用 AWS Organizations 選擇退出政策。使用 `chimesdkvoiceanalytics` 服務名稱。如需政策的相關資訊，請參閱 *AWS Organizations 使用者指南*中的 [ AI 服務選擇退出政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html)。

**注意**  
若要使用選擇退出政策， AWS 您的帳戶必須由 AWS Organizations 集中管理。如果您尚未為 AWS 帳戶建立組織，請參閱 [Organizations 使用者指南中的建立和管理](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org.html)*AWS 組織*。

# 了解 Amazon Chime SDK 語音分析的資料保留
<a name="va-data-retention"></a>

根據預設，Amazon Chime SDK 語音分析會在 3 年後刪除語音內嵌。我們這樣做是因為人們的聲音會隨著時間而改變，也為了安全著想。您可以使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html) API 來更新過期的語音內嵌。

來自 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html)和 的結果[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartVoiceToneAnalysisTask.html)也會從其各自的 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetSpeakerSearchTask.html) 和 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_GetVoiceToneAnalysisTask.html) APIs 提供最多 7 天。

從 產生的語音內嵌[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask.html)可透過 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateVoiceProfile.html)和 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UpdateVoiceProfile.html) APIs 進行 24 小時的持久性，之後就會將其刪除且無法使用。

若要移除結果，以及處理客戶撤回的同意，請參閱上一節。

# 使用語音 APIs執行 Amazon Chime SDK 的語音分析
<a name="va-in-voice-namespace"></a>

為了回溯相容性，您可以使用 Amazon Chime SDK Voice APIs來啟動和管理語音分析。不過，只有用於語音分析的媒體洞察管道 APIs 提供新功能，因此我們強烈建議改用它們。

下列各節說明語音和媒體洞察管道 APIs 之間的差異。

## 停止任務
<a name="va-stopping-tasks"></a>

如果您使用語音連接器啟動語音分析任務，然後使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaInsightsPipelineStatus.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaInsightsPipelineStatus.html) API 暫停管道，則任務會繼續執行。若要停止任務，您必須呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopSpeakerSearchTask.html)和 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopVoiceToneAnalysisTask.html) APIs。

## 了解通知差異
<a name="va-notification-differences"></a>

當您使用語音 APIs執行語音分析時，通知會與媒體洞察管道產生的通知不同。
+ 語音分析就緒事件僅適用於開始使用語音 APIs的任務。
+ 您需要使用通知中的 `voiceConnectorId`、 `transactionId`或 `callId` 欄位，將語音分析任務與通話建立關聯。如果您使用媒體洞察管道來執行語音分析，您可以使用 `mediaInsightsPipelineId`和 `streamArn`或 `channelId` 欄位將任務與通話建立關聯。

下列主題說明如何搭配語音 APIs使用通知。

**Topics**
+ [語音分析就緒事件](#va-ready-events)
+ [發言者搜尋事件](#va-speaker-search-events)
+ [語音音調分析事件](#va-tone-status)

### 語音分析就緒事件
<a name="va-ready-events"></a>

語音分析就緒事件具有`VoiceAnalyticsStatus`詳細資訊類型。

您可以使用 Amazon Chime SDK Voice Connectors 來啟動分析任務。當您收到語音分析就緒事件時，您可以觸發通話的發言者搜尋或語音音分析任務，由下列屬性識別：
+ `voiceConnectorId`
+ `transactionId`

**注意**  
只有在您已啟用語音分析並與語音連接器建立關聯的媒體洞見管道組態時，才會提供此通知。當客戶透過媒體管道 SDK 呼叫 `CreateMediaInsightsPipeline` API 並啟動發言者搜尋任務或音調分析任務時，不會提供此通知。

Voice Connector 傳回的 SIP 標頭包含 `transactionId`。如果您無法存取 SIP 標頭，`AnalyticsReady`通知事件也會包含 `voiceConnectorId`和 `transactionId`。這可讓您以程式設計方式接收資訊並呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask)、 或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartVoiceToneAnalysis.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartVoiceToneAnalysis.html) APIs。

當語音分析準備好進行處理時，語音連接器會將事件`"detailStatus": "AnalyticsReady"`以 JSON 內文的形式傳送至通知目標。如果您使用 Amazon SNS 或 Amazon SQS，則該內文會出現在 Amazon SNS 或 Amazon SQS 承載的「記錄」欄位中。

下列範例顯示典型的 JSON 內文。

```
{
    "detail-type": "VoiceAnalyticsStatus",
    "version": "0",
    "id": "Id-f928dfe3-f44b-4965-8a17-612f9fb92d59",
    "source": "aws.chime",
    "account": "123456789012",
    "time": "2022-08-26T17:55:15.563441Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "detailStatus": "AnalyticsReady",
        "callDetails": {
            "isCaller": false,
            "transactionId": "daaeb6bf-2fe2-4e51-984e-d0fbf2f09436",
            "voiceConnectorId": "fuiopl1fsv9caobmqf2vy7"
        }
    }
}
```

此通知可讓您在呼叫語音分析任務 APIs 之前，觸發應用程式的其他回呼，並處理任何法律要求，例如通知和同意。

### 發言者搜尋事件
<a name="va-speaker-search-events"></a>

發言者搜尋事件具有`SpeakerSearchStatus`詳細資訊類型。

Amazon Chime SDK Voice Connectors 會傳送下列發言者搜尋事件：
+ 識別相符項目
+ 語音內嵌產生

事件可以有下列狀態：
+ `IdentificationSuccessful` – 成功識別至少一個在指定語音設定檔網域中具有高可信度分數的相符語音設定檔 ID。
+ `IdentificationFailure` – 無法執行識別。原因：來電者至少 10 秒沒有說話，音訊品質不佳。
+ `IdentificationNoMatchesFound` – 在指定的語音設定檔網域中找不到高度可信度相符項目。發起人可能是新的，或其語音可能已變更。
+ `VoiceprintGenerationSuccessful` – 系統使用 20 秒的非靜音音訊產生語音內嵌。
+ `VoiceprintGenerationFailure` – 系統無法產生語音內嵌。原因：來電者至少 20 秒沒有說話，音訊品質不佳。

#### 識別相符項目
<a name="va-id-matches"></a>

為指定的 呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartSpeakerSearchTask) API 之後`transactionId`，語音連接器服務會在 10 秒的非無提示語音之後傳回識別比對通知。服務會傳回前 10 個相符項目，以及 【0， 1】 範圍內的語音設定檔 ID 和可信度分數。可信度分數越高，通話的發言者越有可能符合語音設定檔 ID。如果機器學習模型找不到相符項目，通知`detailStatus`的欄位會包含 `IdentificationNoMatchesFound`。

下列範例顯示成功配對的通知。

```
{    
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "SpeakerSearchStatus",
    "service-type": "VoiceAnalytics",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "taskId": "uuid",
        "detailStatus": "IdentificationSuccessful",
        "speakerSearchDetails" : {
            "results": [
                {
                    "voiceProfileId": "vp-505e0992-82da-49eb-9d4a-4b34772b96b6",
                    "confidenceScore": "0.94567856",
                },
                {
                    "voiceProfileId": "vp-fba9cbfa-4b8d-4f10-9e41-9dfdd66545ab",
                    "confidenceScore": "0.82783350",
                },
                {
                    "voiceProfileId": "vp-746995fd-16dc-45b9-8965-89569d1cf787",
                    "confidenceScore": "0.77136436",
                }
            ]
        },
        "isCaller": false,
        "voiceConnectorId": "abcdef1ghij2klmno3pqr4",
        "transactionId": "daaeb6bf-2fe2-4e51-984e-d0fbf2f09436"
    }
}
```

#### 語音內嵌產生
<a name="va-voice-print-generation"></a>

多過 10 秒的非靜音語音後，語音連接器會傳送語音內嵌產生通知至通知目標。您可以在語音設定檔中註冊新的語音內嵌，或更新已在語音設定檔中的列印。

下列範例顯示成功配對的通知，這表示您可以更新相關聯的語音設定檔。

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "SpeakerSearchStatus",
    "service-type": "VoiceAnalytics",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "taskId": "guid",
        "detailStatus": "VoiceprintGenerationSuccess",
        "isCaller": false,
        "transactionId": "12345678-1234-1234",
        "voiceConnectorId": "abcdef1ghij2klmno3pqr"
    }
}
```

### 語音音調分析事件
<a name="va-tone-status"></a>

語音音調分析事件具有`VoiceToneAnalysisStatus`詳細資訊類型。分析可以傳回這些狀態：
+ `VoiceToneAnalysisSuccessful` – 成功將來電者和客服人員的語音分析為情緒的機率：正面、負面或中性。
+ `VoiceToneAnalysisFailure` – 無法執行音調分析。如果來電者未說話就掛斷 10 秒，或音訊品質變得太差，就會發生這種情況。
+ `VoiceToneAnalysisCompleted` – 成功將使用者和客服人員的語音分析為整個通話的情緒可能性。這是語音音調分析完成時傳送的最終事件。

下列範例顯示典型的音調分析事件。

```
{
  "detail-type": "VoiceToneAnalysisStatus",
  "service-type": "VoiceAnalytics",
  "source": "aws.chime",
  "account": "216539279014",
  "time": "2022-08-26T17:55:15.563441Z",
  "region": "us-east-1",
  "detail": {
    "taskId": "uuid",
    "detailStatus": "VoiceToneAnalysisSuccessful",
    "voiceToneAnalysisDetails": {
      "currentAverageVoiceTone": {
          "startTime": "2022-08-26T17:55:15.563Z",
          "endTime": "2022-08-26T17:55:45.720Z",
          "voiceToneLabel": "neutral",
          "voiceToneScore": {    
            "neutral": "0.83",    
            "positive": "0.13",    
            "negative": "0.04"
          }
      },
      "overallAverageVoiceTone": {
          "startTime": "2022-08-26T16:23:13.344Z",
          "endTime": "2022-08-26T17:55:45.720Z",
          "voiceToneLabel": "positive",
          "voiceToneScore": {    
            "neutral": "0.25",    
            "positive": "0.65",    
            "negative": "0.1"
          }
      }
    },
    "isCaller": true,
    "transactionId": "daaeb6bf-2fe2-4e51-984e-d0fbf2f09436",
    "voiceConnectorId": "fuiopl1fsv9caobmqf2vy7"
  },
  "version": "0",
  "id": "Id-f928dfe3-f44b-4965-8a17-612f9fb92d59"
}
```