使用語音APIs執行語音分析 - Amazon Chime SDK

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

使用語音APIs執行語音分析

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

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

停止任務

如果您使用 Voice Connector 啟動語音分析任務,然後使用 UpdateMediaInsightsPipelineStatus API 若要暫停管道,任務會繼續執行。若要停止任務,您必須呼叫 StopSpeakerSearchTaskStopVoiceToneAnalysisTask APIs.

了解通知差異

當您使用語音APIs執行語音分析時,通知會與媒體洞察管道產生的通知不同。

  • 語音分析就緒事件僅適用於開始使用語音 的任務APIs。

  • 您需要使用通知中的 voiceConnectorIdtransactionIdcallId 欄位,將語音分析任務與通話建立關聯。如果您使用媒體洞察管道來執行語音分析,您可以使用 mediaInsightsPipelineIdstreamArnchannelId 欄位來將任務與通話建立關聯。

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

語音分析就緒事件

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

您可以使用 Amazon Chime SDK Voice Connectors 來啟動分析任務。當您接收語音分析就緒事件時,您可以觸發通話的發言者搜尋或語音音調分析任務,其由下列屬性識別:

  • voiceConnectorId

  • transactionId

注意

只有在啟用語音分析並與 Voice Connector 建立關聯的媒體洞察管道組態時,才會提供此通知。當客戶透過媒體管道 呼叫 CreateMediaInsightsPipelineAPI並啟動發言者搜尋任務或聲調分析任務時,就會NOT提供此通知SDK。

Voice Connector 傳回的SIP標頭包含 transactionId。如果您無法存取SIP標頭,AnalyticsReady通知事件也會包含 voiceConnectorIdtransactionId。這可讓您以程式設計方式接收資訊,並呼叫 StartSpeakerSearchTask, 或 StartVoiceToneAnalysisTask 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。

發言者搜尋事件

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

Amazon Chime SDK Voice Connectors 會傳送下列發言者搜尋事件:

  • 識別比對

  • 語音內嵌產生

這些事件可以具有下列狀態:

  • IdentificationSuccessful – 成功識別至少一個相符的語音設定檔 ID,該 ID 在指定的語音設定檔網域中具有高可信度分數。

  • IdentificationFailure – 無法執行識別。原因:來電者至少 10 秒沒有說話,音訊品質不佳。

  • IdentificationNoMatchesFound – 在指定的語音設定檔網域中找不到高可信度相符項目。來電者可能是新的,或者他們的語音可能已變更。

  • VoiceprintGenerationSuccessful – 系統使用 20 秒的非靜音音訊產生語音內嵌。

  • VoiceprintGenerationFailure – 系統無法產生語音內嵌。原因:來電者至少 20 秒沒有說話,音訊品質不佳。

識別比對

在 之後 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" } }

語音內嵌產生

經過額外的 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" } }

聲調分析事件

語音音調分析事件具有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" }