如何让 Amazon Lex 以语音方式回复短信?

How to get Amazon Lex to respond with voice to a text message?

我正在使用 Amazon Lex 服务。我的输入始终是文本消息,但有时我希望除了文本之外还有语音响应。我在 Lex 设置中配置了输出语音。

我尝试在请求中添加 header amz-lex:accept-content-types=SSML,但它 returns 和 Invalid Bot Configuration: No usable messages given the current slot and sessionAttribute set. (Service: AmazonLexRuntime; Status Code: 400; Error Code: BadRequestException;。当我请求 PlainText 时,同样的请求工作得很好。即使我要求 SSML,PlainText 它也只会以纯文本响应。

我是否需要在 Lex 中配置其他东西以允许它进行语音响应?

Lex实际上不能自己输出语音。
Lex 将始终输出 JSON 响应,并且该响应需要由用户访问 Lex 所用的通道处理。因此,该通道根据其处理从 Lex 传递的响应消息的方式输出文本或语音。

Amazon Lex 可以处理语音转文本。

Amazon Polly 可以反过来:文字转语音。

如果您转到上面的 Lex 页面,他们有一些使用 Lex 进行对话逻辑,然后使用 Polly 进行文本转语音并向用户输出语音的示例。

您可以为此使用 SSML(语音合成标记语言),甚至可以使用消息内容类型在 Lex 测试机器人控制台中测试语音。

使用 SSML 标签,您可以自定义和控制语音的各个方面,例如发音、音量和语速。

SSML 附带了多种指令,您可以使用这些指令自定义发音并根据您的要求进行创建。例如 - say-as 指令

`"message": {       
   "contentType": "SSML",
   "content": "<speak> Hi " + data["User ID"].split('.')[0]+", Your Reference Number <say-as interpret-as="characters">" +  "ABC"+event.currentIntent.slots.RefNo+ "</say-as> is ," + data["Status"] +"</speak>"
}` 

2018 年推出 - https://aws.amazon.com/about-aws/whats-new/2018/02/announcing-responses-capability-in-amazon-lex-and-ssml-support-in-text-response/