如何修改亚马逊莱克斯输出语音?



我正在尝试使用 aws lex 创建一个语音机器人。

在该意图响应之一中,响应是"您的事件INC11111111已关闭"(文本(。

上面的响应来自一个 lambda 函数。请检查下面的代码。

let response = (event, data) => {
let lambda_response = {     
"sessionAttributes": {
"incidentNo":  event.currentIntent.slots.INCIDENT_NO,
},   
"dialogAction": {     
"type": "Close",
"fulfillmentState": "Fulfilled",
"message": {       
"contentType": "PlainText",
"content": "Hi " + data["User ID"].split('.')[0]+", Your Incident Number " +  "INC"+event.currentIntent.slots.INCIDENT_NO+ " is ," + data["Status"]
},    
} 
};
return lambda_response;
};

前事件编号:INC11111111

但语音输出是"你的事件INC 1亿11万11万1万11已关闭"。

我期待的是"你的事件INC ONE ONE 已关闭。 提前谢谢你。

你需要使用SSML(语音合成标记语言(

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

您可以在 SSML 中使用多种指令以不同的方式发音。在您的情况下say-as指令可能很有用。

根据问题编辑,请尝试以下更改

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

相关阅读:宣布 Amazon Lex 中的响应功能和文本响应中的 SSML 支持

最新更新