Alexaスキル「毎日カニササレ」備忘録


こんにちは!fujiです。

実は、Alexaスキル作りました。R1ぐらんぷり2018にて決勝に進出したカニササレアヤコさんを起用したこちらの「毎日カニササレ」というスキルです。10月の頭にリリースされていまして、ご存知の方もいらっしゃるかと思います。

せっかくAlexaスキルがリリースされたので、Alexaスキルの作り方を記事にしようかな・・・と思ったのですが、リリースするまでに何度か公開申請で落とされてしまいしたので、自分の備忘録という意味もふくめ「Alexaスキル申請において、どういうことに気をつけるべきか?」という記事を先に書こうかと思います。

1. 芸能人の起用について

これ(Alexaスキルのポリシーのテスト:1.商標、知的財産、およびブランド)ですね。Alexaスキルにて声優や芸能人、お笑い芸人等の名前を使用してその著名人を声優やコンテンツ出演者として起用する場合は、出演許諾を得ている証明書が必要となります。

この証明書は、Web上にアップロードした上で、スキル公開申請の際に「テスト手順」という自由記述欄があるのですが、ここに著名人を起用している旨と、出演許諾を証明する書類へのリンクを記載すればOKです。
(スキル開発前に、Amazon側に確認しました。)

一般的な方法としては、証明書をPDFにしてDropbox等にアップし、ダウンロード用URLを記載すれば大丈夫だと思います。私はAzureのBlobにアップロードしましたが。

なお、「有名人の名前を使ってないけど、実はこのスキルの声、◯◯です。」的な場合や、有名人が自分に関するスキルを自分で開発した場合はどうなるかわかりません。この場合はAmazon側に問い合わせた方が確実かと思います。

2. Alexaのセリフ内容について

Alexaの喋る内容というか、Alexaスキルの応答において、Alexaの標準機能またはAlexaのパーソナリティかのように振る舞うことはNG、非推奨です。

と書くと、なんのこっちゃという感じですので具体的に書きます。

「毎日カニササレ」では当初こんなやり取りをするようにしていました。


起動時(ユ:ユーザ、ア:Alexa):
ユ:アレクサ、毎日カニササレを起動して
ア:わかりました。それでは、カニササレアヤコさんをお呼びしますね。
→ 笙の音とともにカニササレアヤコ登場

ヘルプ(ユ:ユーザ、ア:Alexa):
ユ:ヘルプ〜!
ア:わかりました。それでは、カニササレアヤコさんに代わりまして私、アレクサがお教えいたします。このスキルではカニササレアヤコさんに色々な質問をすることができます。例えば〜・・・(説明続く)

聞き取りエラー時(ユ:ユーザ、ア:Alexa):
ユ:カンピョウまきまき星人
ア:すみません、今の言葉カニササレアヤコさんにうまく伝わらなかったみたいです。ですので、例えば〜・・・(説明続く)

終了時(ユ:ユーザ、ア:Alexa):
ユ:おしまい
ア:(蛍の光のあとに)カニササレアヤコさん、行ってしまわれましたね・・・でもまた、呼んでみてくださいね。


上記、何がいけないのかというと、この言い回しだとAlexaがカニササレアヤコさんを呼ぶ / 見送る→お互い知り合いか何か?とか、Echoの中でユーザの声を認識しているのはカニササレアヤコさん?みたいな誤解が生じるからNGと判断されたようです。

ですので、回避策としては

  1. 「Alexaスキル、毎日カニササレを起動します」とか、そのような第三者的表現にする。
  2. そもそもAlexaの声は使わない。全部出演者の声を使用する

のどちらかにすればいいかなと思います。

著名人を起用する場合は「2」が一番いいかなと思いますが、よく喋る人、そうでない人といった、その人のキャラクターもありますので、ここは台本含め色々と気をつけた方が良い点かと思います。

3. 応答を続ける「reprompt」について

プログラムの話です。

スキルの応答を続ける際は「responseBuilder.reprompt」を設定する。逆に「responseBuilder.reprompt」を設定しなければスキルの応答が終わる(タスクが終了する)ようになっています。

この「responseBuilder.reprompt」を使う際は、「reprompt」の引数にセリフを含めなくてはいけません。また、スキルの台本を作成する際にはこの「reprompt」に当たるセリフを考えておかなければいけません。

これは、「reprompt」にセリフが設定されていないと、ユーザとの応答を終えたあと、echo側から何もガイドが無いのにユーザに対して入力を求める状態になっている、つまり、UI / UXとして不完全と判断されます。

ですので、スキルの応答を続ける場合は「reprompt」に対して入力を促す・次にすべき事を教えるセリフを設定しておかなければいけません。

4. 画面付きデバイス・無しデバイス対応

こちらもプログラムの話です。

「responseBuilder.addRenderTelmplateDirective」を使用すると、画面付きデバイスにおいて、画面表示の変更ができます。

ですが、この処理を画面無しデバイスが読み込んでしまうと、「ターゲットの端末では、指定されたディレクティブがサポートされていません」という無常のセリフが吐かれます。画面無しデバイスはこの処理を無視するという都合の良いことは起きません。

ですので、この処理を使う場合は面倒でも横着せずに「画面有り / 無し」の判定を必ず入れましょう。

5. サンプル発話と例示する言葉について

「毎日カニササレ」では、ヘルプにて男性の声で発話例を紹介しています。

例えば

  • ねえ、今日は何曜日だっけ
  • おい、何か面白い事をしてみろ

など、合計で6種類の発話例を用意しています。

さて、この発話例とIntentに登録するサンプル発話で気をつけなければいけないことがありまして・・・

例えばPepperの例ですと、「{*} 今日は何曜日 {*}」みたいな設定をダイアログでしておけば、

  • 今日は何曜日ですか?
  • 今日は何曜日だっけ?
  • 今日は何曜日か教えて
  • 今日は何曜日でしたっけ?
  • おい、今日は何曜日か教えろ
  • やい、今日は何曜日だ?
  • 貴様、今日は何曜日か言ってみろ

と、アスタリスクがワイルドカードとなり、前後に何を言ってもユーザが発話した内容のどこかに設定した語句があれば認識をしてくれました。

もしくは、「Speech Reco.ボックス」の「Enable word spotting」にチェックを入れて、プログラムで前後の「<・・>」を削除すると同じことができました。

だから、私は今まで開発したPepperアプリにおいては、この手法を結構使ってユーザからの声を拾っています。

で、Alexaでも同じ手法を使い、動作テストをしたところ特に問題無かったんですね。人間が発話した中に設定したサンプル発話があれば、前後に何を言ってもちゃんと拾ってきてくれてました。

ですが・・・・

スキルの認定となると、また話は別のようです。

例えば、「面白いことをして」と、サンプル発話に登録しておいて、ヘルプ機能の発話例に「おい、何か面白いことをしてみろ」と設定しておくと、部分一致でAlexaは反応しますが、サンプル発話に「おい、何か面白いことをしてみろ」という全一致の文章がないため、NGとなります。

これは初めて知りました・・・・

つまり、ヘルプ等で示す発話例文は、全一致でサンプル発話に登録しておかないとNGとなり、申請を却下されます。
同時に、

  • 「雅楽ってなんですか?」
  • 「雅楽てなんですか?」

この2つも、人の声で発話したらほぼ同じですが、例文で「雅楽てなんですか?」と示した上で、サンプル発話で「雅楽ってなんですか?」だけが登録されているとNGとなり、申請を却下されます。

と、スキル公開チェックで意外な落とし穴があるというか、結構気をつけなくちゃいけない点があるという話でしたが、要は横着しないで丁寧に開発しなさいという事でした。

というわけで、上記Amazon側からの指摘を丁寧に対応しながら公開までこぎつけた弊社初のAlexaスキル、「毎日カニササレ」をよろしくお願いいたします!!

構想3日、撮影録音開発編集3週間、全部一人でやってもここまでの物が作れますので皆様もぜひ、Alexaスキル開発をしてみてはいかがでしょうか!?

また、スキルのアイディアを形にしてみたいとお考えの方、作ってみたいが難しいかもしれないとお思いの方、是非一度弊社までお問い合わせください!!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です