Speak - Amazon Chime SDK

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

Speak

您可以通过提供文本在任何调用分支上播放语音。您可以输入纯文本或语音合成标记语言 (SSML)。SSML 可以通过添加暂停、强调某些单词或更改说话风格等,更好地控制 Amazon Chime SDK 生成语音的方式。

亚马逊 Chime 软件开发工具包使用 Amazon Polly 服务进行转换。 text-to-speechAmazon Polly 允许您在标准或神经引擎之间进行选择,以提高语音质量。Amazon Polly 支持超过 20 种语言和 60 种语音,可自定义应用程序的用户体验。Amazon Chime SDK 免费提供语音功能,但使用 Amazon Polly 需要付费。有关定价信息,请参阅 Amazon Polly 定价页面或账单控制面板。

重要

使用 Amazon Polly 需遵守 AWS 服务条款,包括 AWS 机器学习和人工智能服务的特定条款。

使用动Speak作

以下示例显示典型的 Speak 操作。

{ "SchemaVersion": "1.0", "Actions":[ { "Type": "Speak", "Parameters": { "Text": "Hello, World!", // required "CallId": "call-id-1", // required "Engine": "neural", // optional. Defaults to standard "LanguageCode": "en-US", // optional "TextType": "text", // optional "VoiceId": "Joanna" // optional. Defaults to Joanna } } ] }
CallId

描述 — Lambda 函数调用的 CallDetails 中参与者的 CallId

允许的值 — 有效的调用 ID

必填 — 是

默认值 – 无

Text

描述 — 指定要合成语音的输入文本。如果指定 ssmlTextType,按照 SSML 格式输入文本。

允许的值 — 字符串

必填 — 是

默认值 – 无

Engine

描述 — 指定在处理语音合成文本时使用的引擎:标准引擎或神经引擎。

允许的值 — standard | neural

必填 — 否

默认值:标准

LanguageCode

描述 — 指定语言代码。仅在使用双语语音时需要。如果您使用没有语言代码的双语语音,则使用双语语音的默认语言。

允许的值Amazon Polly 语言代码

必填 — 否

默认值 – 无

TextType

描述 — 指定输入文本的类型,即纯文本或 SSML。如果未指定输入类型,则使用纯文本作为默认值。有关 SSML 的更多信息,请参阅 Amazon Polly 开发人员指南中的由 SSML 文档生成语音

允许的值 — ssml | text

必填 — 否

默认值 – 无

VoiceId

描述 — 指定要使用的语音的 ID。

允许的值Amazon Polly 语音 ID

必填 — 否

默认值 — Joanna

处理ACTION_SUCCESSFUL事件

以下示例显示了使用 Amazon Polly 的 Joanna 声音将文本“Hello World”合成英语语音操作的典型 ACTION_SUCCESSFUL 事件。

{ "SchemaVersion": "1.0", "Sequence": 3, "InvocationEventType": "ACTION_SUCCESSFUL", "ActionData": { "Type": "Speak", "Parameters": { "CallId": "call-id-1", "Engine": "neural", "LanguageCode": "en-US", "Text": "Hello World", "TextType": "text", "VoiceId": "Joanna" } }, "CallDetails":{ ... } }

处理ACTION_FAILED事件

以下示例显示了与上一个示例中使用相同事件的典型 ACTION_FAILED 事件。

{ "SchemaVersion": "1.0", "Sequence":2, "InvocationEventType": "ACTION_FAILED", "ActionData":{ "Type": "Speak", "Parameters": { "CallId": "call-id-1", "Engine": "neural", "LanguageCode": "en-US", "Text": "Hello World", "TextType": "text", "VoiceId": "Joanna" }, "ErrorType": "SystemException", "ErrorMessage": "System error while running action" }, "CallDetails":{ ... } }
错误处理

此表列出并描述了 Speak 操作引发的错误消息。

错误 消息 Reason

AccessDenied

AWSServiceRoleForAmazonChimeVoiceConnector 服务相关角色配置不正确。

用于向 Amazon Polly 发出请求的服务关联角色不存在或缺少权限。要解决这一问题,请参阅 使用 Amazon Chime SDK 语音连接器服务相关角色 部分中的相关步骤

InvalidActionParameter

 

验证操作参数时出错。有关参数的更多信息,请参阅 Amazon Polly 开发者指南中的 SynthesizeSpeech API

ActionExecutionThrottled Amazon Polly 正在限制合成语音的请求。 向 Amazon Polly 发出的请求返回限制异常。有关 Amazon Polly 限制限额的更多信息,请参阅 https://docs.aws.amazon.com/polly/latest/dg/limits.html#limits-throttle

MissingRequiredActionParameter

Text 是必填参数。

操作参数必须有 Text

MissingRequiredActionParameter

Text 限制为 1,000 个字符

文本超出了字符限制。

SystemException

运行操作时出现系统错误。

运行操作时出现一个系统错误。

程序流程

下图显示了为调用者启用 Speak 操作的程序流程。在此示例中,调用者听到的文本是

显示为调用者启用 Speak 操作的程序流程的图表。
在图中

调用者使用软件电话输入注册到 SIP 媒体应用程序的号码。应用程序使用 SIP INVITE 法并向调用者发送 Trying (100) 响应。这表明下一跳服务器收到了调用请求。然后,SIP 应用程序使用 INVITE 联系终端节点。建立连接后,应用程序会向调用者发送 Ringing (180) 响应,并开始发出警报。

然后,SIP 媒体应用程序向 Lambda 函数发送 NEW_INBOUND_CALL 事件,Lambda 函数以包含调用者 ID 和要转换为语音的文本的 Speak 操作进行响应。然后,SIP 应用程序发送 200 (OK) 响应,表示调用已应答。该协议还启用媒体。

如果 Speak 操作成功并将文本转换为语音,则它会向 SIP 媒体应用程序返回一个 ACTION_SUCCESSFUL 事件,而该应用程序会返回下一组操作。如果操作失败,SIP 媒体应用程序会向 Lambda 函数发送 ACTION_FAILED 事件,而 Lambda 函数会以一组 Hangup 操作进行响应。应用程序挂断调用者并向 Lambda 函数返回 HANGUP 事件,而该函数不会执行任何进一步操作。

下图显示了为被调用者启用 Speak 操作的程序流程。

显示为被调用者启用 Speak 操作的程序流程的图表。您可以在任何桥接调用中执行此操作。
在图中

调用者输入注册到 SIP 媒体应用程序的号码,应用程序的响应如前图所述。当 Lambda 函数收到 NEW_INBOUND_CALL 事件时,它会将 CallAndBridge 操作返回给 SIP 应用程序。然后,应用程序使用 SIP INVITE 法向被调用者发送 Trying (100)Ringing (180) 响应。

如果被调用者应答,SIP 媒体应用程序会收到 200 (OK) 响应,并向调用者发送相同的响应。这会建立媒体,并且 SIP 应用程序会向 Lambda 函数发送 CallAndBridge 操作的 ACTION_SUCCESSFUL 事件。然后,该函数将 Speak 操作和数据返回给 SIP 应用程序,后者会转换