kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

#VUIchallenge #006 - Confirmations

f:id:kun432:20210711001052p:plain

#VUIchallengeの第6回です。テーマは「Confirmations」。

過去の#VUIchallengeの記事はこちら

お題

The challenge

Your VUI gives step-by-step guidance for cooking recipes. Design a solution for users that request a different recipe in-between steps.

Jesús' Tips

This is a confirmation situation. Stepping away from a recipe because of an error can be super frustrating for customers. How can you make sure that you are doing what customers expect? How can users recover from an unintended request?

DeepLによる日本語訳

課題

あなたのVUIは、レシピを作るためのステップ・バイ・ステップのガイダンスを提供します。ステップの合間に別のレシピをリクエストするユーザーのためのソリューションをデザインしてください。

Jesúsのヒント

これは確認のための状況です。エラーのためにレシピから離れてしまうことは、お客様にとって非常にフラストレーションの溜まることです。お客様が期待していることを確認するにはどうしたらいいでしょうか?ユーザーが意図しないリクエストから回復するには?

デザイン

まずはお題のシチュエーションを整理しましょう。こんな感じかなと。

  • スキルは、ステップ・バイ・ステップでレシピを説明してくれる。次のステップに進む場合はユーザに確認する。
  • ユーザは、レシピの説明を受けているステップの「途中」である
  • ユーザは、途中で「別のレシピ」を知りたくなった

会話フローだとこういう感じですかね。”ミートソースパスタ”のレシピを説明している途中だと思ってください。

ステップ1です。まず、お鍋に水を2リットル入れて沸騰させてください。
次のステップに進みますか?

はい

ステップ2です。塩をひとつまみ入れて、パスタを入れ、ほぐしながら7分ほど茹でます。
次のステップに進みますか?

(この間にポテトサラダも作らないと)ポテトサラダのレシピを教えて

つまり、レシピの説明が始まると、そのレシピ特有の「コンテキスト」が発生するということですね。レシピが切り替わったり、複数のレシピを並行で走らせたりするような場合は、このコンテキストを意識する必要があります。

ダメな例

コンテキストをきちんと把握した上で、うまく返せないととても使いづらいものになります。最初にダメな例を考えてみました。

コンテキストを全く意識しない

ステップ2です。塩をひとつまみ入れて、パスタを入れ、ほぐしながら7分ほど茹でます。
次のステップに進みますか?

(この間にポテトサラダも作らないと)ポテトサラダのレシピを教えて

わかりました。ポテトサラダのレシピですね。最初に材料を説明します。・・・
次のステップに進みますか?

(ポテトサラダのレシピのステップを最後まで進める)

これでポテトサラダは完成です。お疲れさまでした!他に知りたいレシピはありますか?

(ミートソースパスタの途中だったな)ミートソースパスタのレシピを教えて

わかりました。ミートソースパスタのレシピですね。最初に材料を説明します。・・・
次のステップに進みますか?

(途中まで進めてたんだけど!)

別のレシピを呼び出したことで、元のレシピのコンテキストが完全に失われてしまっています。このように一度呼び出すと一定のコンテキストで会話が継続する場合には、コンテキストから離脱する場合について意識する必要があります。

融通が利かない

ステップ2です。塩をひとつまみ入れて、パスタを入れ、ほぐしながら7分ほど茹でます。
次のステップに進みますか?

(この間にポテトサラダを作らないと)ポテトサラダのレシピを教えて

ごめんなさい、よくわかりませんでした。次のステップに進むには「はい」と言ってください。

(融通がきかないなぁ・・・)

こちらの場合、コンテキストは意識しているものの、コンテキストからの離脱を全く許容しない状態です。別のレシピを呼び出すためには、もうスキルを一旦終了して、再度スキルを呼び出す必要がありますね・・・

いくつかのアプローチ

どこまでやれるかはスキルの仕様によりますので、いくつかのパターンで見てみましょう。

できないことをきちんと説明する

一番シンプルなのはこれですね。

  • 一旦レシピの説明が始まったら、そのレシピの説明しかできない
  • 別のレシピに切り替えると、元のレシピで説明していた時点には戻れない

つまりコンテキストは常に一つであり、別のコンテキストに移る場合はもとのコンテキストには戻れない、という前提です。ユーザビリティとしてはあまり良くないかもですが、なんの説明なしに切り替わってユーザを混乱させてしまうよりは、きちんとできないことを説明するほうが全然良いと思います。イメージとしてはこんな感じかな。

ステップ2です。塩をひとつまみ入れて、パスタを入れ、ほぐしながら7分ほど茹でます。
次のステップに進みますか?

(この間にポテトサラダも作らないと)ポテトサラダのレシピを教えて

ミートソースパスタの説明中ですが、ポテトサラダのレシピの説明に切り替えます。その場合、ミートソースパスタのレシピの説明は最初からやり直す必要がありますが、よろしいですか?

(あ、そうなのか、しょうがないな、ポテトサラダはパスタができてからにしよう。)じゃあやっぱりやめとくよ

わかりました。ミートソースパスタのレシピの続きを説明します。・・・

機能としては足りないのですが、少なくともまったく融通が効かないわけではないですし、ユーザ側にはきちんと説明と選択肢が与えられますよね。最初の例に比べれば全然マシです。

コンテキストをきちんと管理する

理想的な例はこれになると思います。

ステップ2です。塩をひとつまみ入れて、パスタを入れ、ほぐしながら7分ほど茹でます。
次のステップに進みますか?

(この間にポテトサラダも作らないと)ポテトサラダのレシピを教えて

ミートソースパスタのレシピの説明中ですが、ポテトサラダのレシピの説明に切り替えます。終わったらミートソースパスタのレシピに戻ったほうがよいですか?

そのほうがいいな

わかりました。では一旦ポテトサラダのレシピを説明します。最初に材料を説明します。・・・

(ポテトサラダのレシピのステップを最後まで進める)

完成です。お疲れさまでした!ではミートソースパスタのレシピの説明に戻りますね。ステップ2の続きからです。・・・

はい、これだと複数のレシピを並行で動かすことができて、ユーザ側からすると時間を効率的に使えて良いですね!ユーザビリティとしてはとても良いと思います。

ただし、その代わり考えないといけないことはいろいろあります。

  • レシピを切り替える場合、元のレシピの名前やどこまで進んでいたかを記憶しておく必要がある。
  • レシピの切り替えを何個まで共用できるか?
  • レシピを切り替えて、途中で元のレシピに再度切り替えることを許容するか?

スキル開発を頑張ればできなくはないでしょうが、複雑になる分だけ、設計・開発・テストのコストも増えます。さらにいくらスキル側で多くのレシピを並行で動かせるとしても、多少なりともユーザ側の認知的負荷はあがることになりますので、それを下げるための工夫も必要になるでしょう(現在説明中のレシピ一覧を教えてくれる、とか、あとは画面的なサポートだったりとか)。

デザインと開発のバランスは常に意識する必要がありますね。

まとめ

会話フローにおいては、コンテキストはとても重要です。きちんと現在のコンテキストを意識しつつ、突然の切り替わりも許容するようなデザインを行うことがより自然な会話につながるのだと思います。

なお、Voiceflowを使うといろいろなコンテキストを意識したスキル開発をかんたんに行うことができます。興味があればぜひご覧ください。

#VUIchallenge #005 - Success confirmation

f:id:kun432:20210711001052p:plain

#VUIchallengeの第5回です。テーマは「Success confirmation」。

過去の#VUIchallengeの記事はこちら

お題

The challenge

Create 3 different success confirmation prompts for users requesting to set a thermostat temperature. Test the differnt versions and decide which one you would use.

Jesús' Tips

Your users need to know that the request was fulfilled, but you can have different ways for achieving that. You can also use a multimodal approach here...

DeepLによる日本語訳

課題

サーモスタットの温度設定を要求するユーザーに対して、3種類の成功確認のプロンプトを作成しましょう。それぞれのバージョンをテストして、どのバージョンを使うか決めてください。

Jesúsのヒント

ユーザーはリクエストが達成されたことを知る必要がありますが、それを達成する方法はさまざまです。ここでは、マルチモーダルなアプローチを使うこともできます...

デザイン

スマートホームなど、ユーザからの要求に応じて何かしらのアクションを実行するというものがありますよね。電気をつけたり、エアコンをつけたり。うちでも、SwitchBotを使っていろんな家電などを声で操作できるようにしています。

その際に、ちゃんと成功している、ということを伝えないと、ユーザ側としては不安になったり、結局自分で確認したりして二度手間になる可能性があります。簡潔にかつわかりやすく結果を伝えないといけません。

サンプルとして、エアコンの温度を変える会話の流れで考えてみましょう。

温度を25度にして

はい、温度を25度に設定成功しました。

こういう感じですね。短いようですが、ちゃんと成功できたことを伝えるのはとても重要ですね。で、いくつかのパターンを考えてみましょう。

サウンドを使う

一般的にエアコンはリモコンで操作すると「ピッ」っていう音がする場合が多いと思います。エアコンのリモコンは、いくつかのボタンと温度などを表示する小さな画面とLEDぐらいシンプルなインタフェースしかありません。もちろん喋ることもないです。この場合、成功・失敗よりもまず、そもそもリモコンからの送信自体がちゃんと行われているか自体がわかりません。なのでリモコンのLEDを点灯させて、エアコン側でサウンドを鳴らして、送信が行われているよ、ということを示しているわけです。

そして私たちもエアコンの操作はそういうものだという経験を持っています。であれば、同じようにサウンドを使ってあげるとこれまでの経験則から成功したということがわかりやすいですね。こういう感じです。

温度を25度にして

25度ですね。(明る目のサウンド、シャラリーン)はい、温度を25度に設定成功しました。

これは失敗の場合も使えます。

温度を25度にして

25度ですね。(暗め目のサウンド、ビヨヨーン)ごめんなさい、温度の設定に失敗しました。

表現のバリエーション

上の例では「温度設定に成功しました」という言い方にしていますが、やや硬い印象があります。もう少し柔らかくしてみましょう。

25度に設定しました。

25度にしておきました。

もっとフレンドリーにすることもできます。

25度にしておいたよー。

設定しておいたでー。

ただ、あんまり柔らかくしすぎると失敗したときのユーザの不満も大きくなってしまうかなぁという気はしますね。

ユーザの好みにもよりけりではありますが、ユーザから明確なタスクの実行を要求されるようなケースでは、硬すぎず柔らかすぎず、簡潔に結果をお伝えするというのが一番重要ですね。

確認を要求する

少し本題と外れますが、ユーザに対して再確認を求めるような場合もありますね。

温度を25度にして

温度を25度に設定するのですね。よろしいですか?

はい

わかりました、温度を25度に設定成功しました。

実行する内容が重要であれば再確認は必要になりますが、それほど重要でない場合にいちいち確認するのは手間に感じることが多いでしょう。ここは実行するタスクの内容に応じて選択しましょう。再確認が必要なケースは例えば以下のようなものになるかと思います。

  • 支払い処理(金銭が絡む)
  • 通知の設定(通知が多くなるとストレス)

まとめ

リクエストの結果はシンプル・簡潔かつわかりやすく伝えましょう。個人的にはサウンドを使うのをおすすめしたいです。私ならこういう感じにします。

温度を25度にして

25度ですね。(明る目のサウンド、シャラリーン)はい、25度に設定しました。

#VUIchallenge #004 - Utterance collection

f:id:kun432:20210711001052p:plain

#VUIchallengeの第4回です。テーマは「Utterance collection」。

過去の#VUIchallengeの記事はこちら

お題

The challenge

Users can refer to the same service in many different ways. That's the magic of conversational interaction. Collect at least 10 utterances for users asking for a food recommendation.

Jesús' Tips

If you run out of ideas I strongly recommend you to use some research. You can search for similar services online, blogs, etc. or even run a quick survey on LinkedIn or twitter.

DeepLによる日本語訳

課題

ユーザーは、同じサービスをさまざまな方法で参照することができます。それが、会話型インタラクションの魅力です。おすすめの食べ物を教えてほしいというユーザーの発言を10件以上集めてください。

Jesúsのヒント

もしアイデアが尽きてしまったら、リサーチをすることを強くお勧めします。類似のサービスやブログなどをオンラインで検索したり、LinkedInやtwitterで簡単なアンケートを取ってみるのもいいでしょう。

デザイン

同じことをいうにしても、ユーザの発話はさまざまです。これらのバリエーションに対応するために、サンプル発話を多数用意しておくというのはVUIの基本ですね。

サンプルとして、今日の夕食のメニューを提案するというスキルで考えてみましょう。

「我が家の食卓」をひらいて

「我が家の食卓」です。
晩ごはんの献立にお悩みのあなたに代わって、晩ごはんのおすすめをご紹介しますよ。「今日のおすすめのメニューを教えて」といってみてください。

今日のおすすめのメニューを教えて

今日のおすすめは、うなぎ丼です。汗ばむ日々も増えてきたので、今のうちにスタミナをつけて、暑い夏を乗り切りましょう!

ユーザが迷わないように呼びかけ例を提示していますが、2回目以降になるとユーザはもっとシンプルに呼び出したくなるでしょう。

今日のおすすめをおしえて

おすすめのメニューをおしえて

おすすめをおしえて

今日のおすすめ

おすすめのメニュー

違う表現になる場合もありますね。

今日のおすすめの晩ごはんは何?

今日のおすすめの夕食は何?

今日のおすすめの献立は何?

献立のアイデアをちょうだい

こういうふうに単語が違う場合はスロットを使うのも手ですね。

直接的ではない表現の場合も。

おなかすいたー

献立もう考えたくないよー

代わりに考えてー

このように、サンプル発話をたくさん揃えておくと、いろんなユーザごとの言い回しに対応ができます。

そして、なれてくるとスキルを起動してから発話するのではなく、ワンショット発話を使って直接目的の発話を行いたくなりますが、その際にも役に立ちます。

アレクサ、「我が家の食卓」に今日のおすすめを聞いて

アレクサ、「我が家の食卓」で献立のアイデアを

アレクサ、おすすめを「我が家の食卓」に聞いて

まとめ

サンプル発話は多ければ多いほど色んなバリエーションに対応できます。いろんな言い方に対応できるようにしておきましょう。いいアイデアがない場合は、ヒントにあるように、似たようなサービスやブログを調べたりするのもおすすめです。