【问题标题】:How to modify amazon lex output voice?如何修改 amazon lex 输出语音?
【发布时间】:2019-09-23 09:44:29
【问题描述】:

我正在尝试使用 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 千万 110 万 11,000 100 11 已关闭”。

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

【问题讨论】:

    标签: amazon-web-services aws-lex


    【解决方案1】:

    您需要使用 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>"
        },    
    

    相关阅读:Announcing Responses Capability in Amazon Lex and SSML Support in Text Response

    【讨论】:

    • 嗨@juned Ahsan,我收到了来自 aws lambda 函数的回复。请检查更新后的问题。
    • @Vijay 只需将 contentType 更改为 SSML 并将文本包装在标签中。我已为您提供的消息标签添加了对我的答案的更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多