1

我目前正在使用 Choregraphe 与 Nao 机器人一起工作,并试图将通过 QiChat 发出的请求所需的置信区间从默认的 50% 降低到 30%。

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

4

3 回答 3

1

我找到了解决方案。不允许为对话框编写脚本,但您可以在对话框之前添加 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
于 2018-01-05T09:38:48.907 回答
1

提高识别率的两种解决方案:

1) 为您的输入添加更多变体 - 例如,如果您正在听“yes”,您还应该确保您听“yep”、“yup”、“yeah”、“sure”、“okay”、 “好”等 - 概念对此很有用,请参阅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

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

于 2018-01-05T16:11:50.090 回答
1

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
于 2020-03-03T16:24:22.637 回答