更改 Nao 的 Choregraphe 对话置信区间

Changing Choregraphe Dialog Confidence Interval for Nao

我目前正在使用 Choregraphe 与 Nao 机器人合作,我正在尝试将根据通过 QiChat 发出的请求采取行动所需的置信区间从默认的 50% 降低到 30%。

我找到了这个解决方案,https://community.ald.softbankrobotics.com/en/forum/change-speech-engine-confidence-threshold-choregraphe-dialog-8624,但不幸的是,对话框的脚本功能在 Choregraphe v2.1 中已被弃用。有谁知道 "new" 的方法是什么?

我找到了解决办法。不允许为对话框编写脚本,但您可以在对话框之前添加 Python 脚本以更改此间隔。应放入此框中的代码如下。

class MyClass(GeneratedClass):
def __init__(self):
    GeneratedClass.__init__(self)

def onLoad(self):
    #put initialization code here
    pass

def onUnload(self):
    #put clean-up code here
    pass

def onInput_onStart(self):
    # Lower confidence threshold from 50% to 30%
    ALDialog = ALProxy('ALDialog')
    ALDialog.setASRConfidenceThreshold(0.3) 
    self.onStopped() #activate the output of the box

def onInput_onStop(self):
    self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
    self.onStopped() #activate the output of the box

两种提高识别率的方案:

1) 为您的输入添加更多变体 - 例如,如果您正在收听 "yes",您还应确保收听 "yep"、"yup"、"yeah"、"sure"、"okay"、"fine" 等 - 概念对此很有用,请参阅 the qichat doc

1) 按照您的建议,设置置信度阈值 - 对于更紧凑的版本(我更喜欢更少的样板):

class MyClass(GeneratedClass):
    def onInput_onStart(self):
        # Lower confidence threshold from 50% to 30%
        ALProxy('ALDialog').setASRConfidenceThreshold(0.3) 
        self.onStopped() # activate the output of the box

但是,请注意,这不是很优雅;你将需要重置它,它会大大增加误报的风险,所以只有在你不能通过添加更多变体来解决它时才应该使用它。

setASRConfidenceThreshold 适用于 Nao V5;在 Pepper 和 Nao V6 中你应该使用 setConfidenceThreshold:

class MyClass(GeneratedClass):
    def onInput_onStart(self):
        # Lower confidence threshold from 50% to 30%
        ALProxy('ALDialog').setConfidenceThreshold("BNF", 0.3)

        self.onStopped() # activate the output of the box