Botframework 语音识别在口语句子末尾添加的句号不';不匹配动作

Botframework 语音识别在口语句子末尾添加的句号不';不匹配动作,botframework,speech-recognition,azure-language-understanding,azure-cognitive-services,azure-speech,Botframework,Speech Recognition,Azure Language Understanding,Azure Cognitive Services,Azure Speech,我开发了一个虚拟助手,并使用WebChat使用认知语音服务对其进行测试。 我有一个问题:机器人的一些反应包括建议的行动,例如 "Choose a color" "RED" "BLUE" "GREEN" 通过键入或单击所选颜色,一切正常。 如果我用麦克风讲话,句子末尾会加上一个“句号”,即“蓝色” 这样,路易斯不认识答案,重新问了问题 让它正确识别的最佳方法是什么?有没有办法禁用语音引擎添加的最终完全停止?还是有更好的解决方案?(比如规范化LUIS中的标点符号,使其忽略该标点符号或其他内容?在机

我开发了一个虚拟助手,并使用WebChat使用认知语音服务对其进行测试。 我有一个问题:机器人的一些反应包括建议的行动,例如

"Choose a color"
"RED" "BLUE" "GREEN"
通过键入或单击所选颜色,一切正常。 如果我用麦克风讲话,句子末尾会加上一个“句号”,即“蓝色” 这样,路易斯不认识答案,重新问了问题


让它正确识别的最佳方法是什么?有没有办法禁用语音引擎添加的最终完全停止?还是有更好的解决方案?(比如规范化LUIS中的标点符号,使其忽略该标点符号或其他内容?

在机器人接收到标点符号后,但在将其发送到LUIS并由LUIS处理之前,您需要清除任何标点符号的活动。您可以使用以下正则表达式删除不需要的字符(选择要清除的字符…我包括了很多)并替换剩余的堆叠空白,如下所示:

让text=turnContext.context.activity.text; 让scrawedText=text.replace(/[,/#!$%\^&*;:{}=-\u`~()]/g,”; const finalString=scrubedText.replace(/\s{2,}/g,“”)


然后,用擦洗过的文本更新activity.text并将其发送给LUIS。

虽然它看起来更像是一种解决方法,但它很有效,因此我将其标记为一种解决方案,但我最喜欢的方法是知道一种禁用STT引擎在句子末尾自动附加“,”的方法。这不是可用的功能,在这个时候。上述方法是一种可接受的实践,已在许多不同的场景中使用。