Pepper
3

子ビヘイビアのSay Textは発声しない?

(於Pepper 2.0.6.8)

QiChatから^runもしくは^startで呼び出したビヘイビアでは音声を発することができないのでしょうか?

sample.pml
manifest.xml
behavior.xar (ルートビヘイビア)
child
    └behavior.xar (子ビヘイビア)
dialog
    └dialog.top

例えば上記のようなプロジェクトだった場合で,子ビヘイビアでモーションとともにSayやAnimated Sayなどで発話させます。ダイアログ中で^run(sample/child)とすると、モーションは問題なく実行され,Sayボックスもエラーになること無くダイアログに戻ってきます(ログで確認しても問題なし)

しかし,発話をしません。

もちろん独立して,子ビヘイビアのみを実行すると所期のとおり発声します。

試しに,ダイアログ中で早口言葉とか自己紹介を呼び出すと,実行されているのですが,パントマイムをするだけで,音声は発声していないようです。

(子プロセス的に呼び出された)子ビヘイビアでは,発話しないという仕様になっているのかを確認したいのですが,ドキュメント中にはそれらしき記述を見つけられませんでした。

THANKS

回答

Eiriさま、

ご質問ありがとうございます。こちらでも確認してみたいと思いますが、以下の要素が関係しているかもしれません。

  1. Dialogを呼び出しているボックスで右クリックし、[リソースを編集]を選択したときにあらわれるチェックリストで、Audio > Speakers > Speechがチェックされているかどうか
  2. 子ビヘイビアのSayボックスで右クリックし、[リソースを編集]を選択したときにあらわれるチェックリストで、Audio > Speakers > Speechがチェックされているかどうか。また、チェックがされていた場合、[チェックをオンにしたリソースの1つが使用できない場合]のリストが[すぐにキャンセル]になっているかどうか

上記1., 2.の条件が成立している場合、もしかすると子のSayボックスがキャンセルされるという挙動がありうるかもしれません。ご参考まで・・・

Satoshi Yazawa -- Community Support

テックラインの石倉と申します。

まず私の認識として、 ^run や ^start は、会話中に身振り手振りを導入する目的で存在するというのがあります。

http://doc.aldebaran.com/2-1/naoqi/audio/alanimatedspeech.html?highlight...

上記URLに次のような記述があります。

You can also use your own behaviors provided that you follow these requirements:

Limit the content of the behavior to an animation (no speech, no complex behaviors), in order to guaranty a good compatibility with the Text-to-Speech.
Lock the resources as follow: Wait 1 second at box startup, and lock resources during box execution - in order to secure a full compatibility with the automatic body language process.

これによれば、会話中から呼び出す動作は発話すべきではないと考えられます。現にこれらの子ビヘイビアは発話中に呼び出されうるので、意図的に子ビヘイビア内の発話はカットされていてもおかしくはありません。

私が発話を含むビヘイビアを Dialog から実行する場合、一度 Dialog を抜けだして、Run Behavior ボックスなどで実行したのち、再び Dialog に戻るようにしています。

1つのコメント
  • 石倉さま、Eiriさま、

    どうもありがとうございます!引用していただいた箇所のとおりだと思います。

    あるボックスを実行中に別のビヘイビアを実行すると、リソースのロックによりキャンセルや待機などの動作が起きる可能性があるので、石倉さまの例のように、いったんボックスを抜けてから別のビヘイビアを実行、とするのがトラブルが少なくなるかと思います。

    Satoshi Yazawa -- Community Support

石倉さま,Satoshi Y.さま ありがとうございました。

なるほど,トラブル防止のためには,そのほうがよさそうですね。

ところで,インタラクティブ・アクティビティの場合は,onStoppedを使ってDialogボックスを抜け出せそうなのですが,ダイアログが「協調的対話としてパッページコンテンツに追加」されていて,run_dialog_devの下にある時はどのようにしたらよいでしょうか?

単純に^stop(run_dialog_dev/.)でよいのでしょうか?

(今実機が手元にないため,試してみることができず,すみません。)

THANKS

1つのコメント
  • Eiriさま、

    Collaborative Dialogでビヘイビアを起動する方法ですが、動作未確認ですが、以下のような方法をAldebaranメンバーが紹介しているようです。ご参考まで・・・

    https://community.aldebaran.com/ja/node/571

    この記事では、^switchFocusという命令を紹介しています。

    Satoshi Yazawa -- Community Support

トップに戻る