アンオフィシャル - Aldebaran Robotics NAO とそのほかロボットについて

NAO とそのほかロボットについての情報を発信。ここの情報はアルデバラン非公式です。内容に誤りがあった場合はごめんなさい。

Aldebaran Robotics 社の NAO、そのほかロボットに関連する情報を発信します。

Choregraphe Dialog ボックスの音声認識閾値の変更

(2016/10/15 補足 NAOqi 2.4.2 以降を利用(Pepper の現行バージョンは 2.4.3) は次の記事も参考にしてください

Dialogの認識率変更の不具合 | SoftBank Robotics Community

Choregrahe Dialog の音声認識について、いまいち期待通りに認識してくれないなどの理由で Confidence Threshold (音声認識閾値)を変更したくなることがあります。
NAOqi のAPI としてはこの閾値を変更するインターフェースが用意されていますが、標準ボックスライブラリにはこれを変更できるものがなさそうです。

次のようなコードを持つスクリプトボックスを作ることで対応してみました。

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
        try:
            self.prevThreshold = None
            self.dialog = ALProxy("ALDialog")
        except Exception as e:
            self.dialog = None
            self.logger.error(e)

    def onLoad(self):
        if self.dialog != None:
            self.prevThreshold = self.dialog.getASRConfidenceThreshold()

    def onUnload(self):
        if self.dialog != None and self.prevThreshold != None:
            self.dialog.setASRConfidenceThreshold(self.prevThreshold)


    def onInput_onStart(self):
        if self.dialog != None and self.prevThreshold != None:
            t = self.getParameter("ASR confidence threshold")
            self.dialog.setASRConfidenceThreshold(t)
            self.logger.info("Dialog ASRConfidenceThreshold changed fro :%0.2f to %0.2f" % (self.prevThreshold, t))
            self.onStopped()

    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

ボックスパラメータ ASR confidence threshold で値を変更できるようにしています。ボックスが呼び出されると設定された値に変更。ボックスがアンロードされるタイミングでもとの値に戻しています。
アプリ起動時にこれを実行、その後 Dialog を呼び出すと Dialog ボックスはこのボックスで指定された音声認識閾値音声認識をしてくれるはずです。

デフォルトでは 0.5、NAO の場合 0.45 から 0.46 ぐらいが日本語認識において最も使い勝手がいいという噂があります、、

参考まで、ボックスパラメータの追加方法:
f:id:takuji_kawata:20150402122532p:plain

f:id:takuji_kawata:20150402122559p:plain