【问题标题】:How can I temporarily disable my bot's speech?如何暂时禁用机器人的语音?
【发布时间】:2021-08-14 05:20:55
【问题描述】:

我有一个启用语音的机器人,它使用 Direct Line Speech 通道。对于某些回复,我希望我的机器人通过发送文本而不是说话来回复,即保持沉默。我怎么做?我的调用格式如下:

string textReplyToSend = "Hi there.";
string speak = "";
await turnContext.SendActivityAsync(textReplyToSend, speak);

但这对我不起作用。我已经尝试了许多不同的说话值。如果我省略了 speak 参数或将其设置为空字符串,机器人会使用 textReplyToSend 值说话。对于其他说出值,机器人说出值,或者语音服务似乎崩溃并且机器人给出完全脱离上下文的响应。我还尝试了使用暂停的 SSML 思维可能会奏效,但到目前为止还没有运气。如何让我的机器人静默回复,只发送文本?

【问题讨论】:

    标签: botframework bots chatbot


    【解决方案1】:

    我发现这个使用 SSML 的笨拙解决方案,设置 volume='1'。如果能找到更好的方法就好了。

    string speak = @"<speak xmlns='http://www.w3.org/2001/10/synthesis' 
    xmlns:mstts='http://www.w3.org/2001/mstts' xmlns:emo='http://www.w3.org/2009/10/emotionml' 
    version='1.0' xml:lang='en-US'><voice name='en-US-AshleyNeural'><prosody volume='1'>" +
    "Ooh." + "</prosody></voice></speak>";
    

    【讨论】:

      【解决方案2】:

      您是否在代码中使用了 SetSpeakMiddleware?在启用语音的情况下,它用于填充适当的标签。如果是,那么 SetSpeakMiddleware 有一个属性fallbackToTextForSpeak,如果为真,则自动将 Speak 属性设置为与 activity.Text 相同。 如果您使用上述方法,那么我认为没有直接的方法可以避免输出语音。

      【讨论】:

        猜你喜欢
        • 2020-09-26
        • 2019-12-11
        • 1970-01-01
        • 1970-01-01
        • 2021-07-13
        • 1970-01-01
        • 2022-08-20
        • 1970-01-01
        • 2020-08-30
        相关资源
        最近更新 更多