kun432's blog

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

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

#VUIchallenge #010 - Info details and SSML

f:id:kun432:20210711001052p:plain

#VUIchallengeの第10回です。テーマは「Info details and SSML」。

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

お題

The challenge

Create an interaction where you inform customers about the address and telephone of a restaurant called Lion's House (you can change the name if you want). You can decide to use a single or multi turn experience. Play special attention to SSML tags where needed.

Jesús' Tips

Are you familiar with the term cognitive load? Our brains are incredibly limited and there's always a limited amount of information we can handle. For this challenge, think about what your users want to achieve and share the information so it is easier for them to be successful.

DeepLによる日本語訳

課題

「ライオンの家」というレストランの住所と電話番号をお客様に知らせるインタラクションを作成してください(名前は変えても構いません)。1ターンまたは複数ターンのエクスペリエンスを使用することができます。必要に応じてSSMLタグに特別な注意を払ってください。

Jesúsのヒント

認知的負荷という言葉を知っていますか?私たちの脳は信じられないほど限られていて、扱える情報の量は常に限られています。今回の課題では、ユーザーが何を達成したいのかを考え、情報を共有することで、ユーザーが成功しやすくなります。

デザイン

まずはシンプルにレストランの住所・電話番号を教えてくれるスキルを考えてみましょう。

レストラン検索スキルです。レストラン名を言うと住所と電話番号をお伝えします。レストラン名を言ってください。

ライオンの家

「ライオンの家」ですね。住所は650-0042神戸市中央区◯◯町1-2-3です。電話番号は078-123-4567です。

※住所はと電話番号はデタラメです。

そんなに難しくないですよね。どこに工夫する要素があるのでしょうか?

実際にスキルで発話させてみましょう。Alexa開発者コンソールから、どのスキルでも良いので開いて、テストの「音声と語調」にまるっとコピーして再生してみます。目をつぶって聞いてみてください。

<speak>
「ライオンの家」ですね。住所は650-0042神戸市中央区丸丸町1-2-3です。電話番号は078-123-4567です。
</speak>

どうでしょうか?これでレストランの住所と電話番号わかった気になりますか?

ユーザの本当の目的を考える

レストランの住所と電話番号を教えてくれるというのがスキルのメイン機能ですが、ユーザが実際に求めている目的を考えてみましょう。

  • レストランに行きたい(ので住所を知りたい)
  • レストランを予約したい(ので電話したい)

つまり、最終的にレストランに行きたいので、そのための情報がほしいんですよね。この場合、ユーザは、スキルの応答結果を(何らかの方法で)一時的に記憶しておいて、次のアクションにそれを持っていく必要があります。

住所や電話番号を音声で、しかもこのスピードで聞いてその場でサッと場所がわかったり電話番号を記憶できたりするわけはないですよね。それに住所と電話番号のどちらかだけ知りたければ、両方の情報は過剰です。つまり、認知的負荷が生じます。

これを回避するためにいくつかのアプローチを試してみましょう。

情報を絞る

まず最初に、情報を絞るというアプローチを試してみましょう。住所と電話番号をそれぞれ別に取得できるようにしてみます。

レストラン検索スキルです。レストラン名を言うと住所や電話番号をお伝えします。住所と電話番号のどちらかを知りたい場合は、例えば「ライオンの家の住所を教えて」「ライオンの家の電話番号を教えて」といってみてください。両方を知りたい場合は、単にレストラン名を言ってください。どうしますか?

ライオンの家の住所を教えて

「ライオンの家」ですね。ライオンの家の住所は650-0042神戸市中央区◯◯町1-2-3です。電話番号も知りたいですか?

これで少し認知的負荷が下がりますね。

もっと聞きやすくする

今日のテーマはこちらかなと思います。先ほどのスピードで話されると覚えるのも難しいですし、メモするにも早すぎますね。そこで少しSSMLを使って聞き取りやすくしてみましょう。以下のSSMLを試してみます。

<speak>
  「ライオンの家」ですね。住所は<prosody rate="x-slow">650-0042神戸市中央区丸丸町1-2-3</prosody>です。
  電話番号は<prosody rate="x-slow">078-123-4567</prosody>です。
</speak>

音声のサンプルはこちら

住所と電話番号のところはゆっくりしゃべるようになりましたよね。これならメモできそうです。このようにSSMLを使うと発話の仕方を調整することができます。今回のように発話のスピードを変えるア場合は<prosody>タグを使ってrateを指定します。

あと、ちょっと言葉の間の切れ目がなくて聞きづらいですね。こういう場合はbreakタグを使います。(わかりにくいのでprosodyタグは一旦外しました。)

<speak>
  「ライオンの家」ですね。住所は<break time="300ms" />650-0042<break time="300ms" />神戸市中央区<break time="300ms" />丸丸町1-2-3<break time="300ms" />です。
  電話番号は<break time="300ms" />078-123-4567<break time="300ms" />です。
</speak>

随分と聞き取りやすくなった気がしませんか?breakタグを使うと、発話の間に休止を入れてくれてくれます。今回は0.3秒の休止を入れてみました。

ちなみに、休止の場合、実はSSMLをつかわなくても、句読点をきちんと入れてあげればちゃんと休止を入れてくれます。

<speak>
  「ライオンの家」ですね。住所は、650-0042、神戸市中央区、丸丸町1-2-3、です。
  電話番号は、078-123-4567、です。
</speak>

ちなみに、郵便番号は間に"-"が入っていると「XXXのXXXX」というふうに言い換えてくれました。これはAlexaが発話内容を認識して自動的に最適な読み方で読み上げているからです。ただし、これがうまく行かない場合もあります。この例だと電話番号のところはうまく読み上げてくれていません。こういう場合は、発話の仕方を明示的に指定することができます。

<speak>
  「ライオンの家」ですね。住所は<say-as interpret-as="address">650-0042神戸市中央区丸丸町1-2-3</say-as>です。
  電話番号は<say-as interpret-as="telephone">078-123-4567</say-as>です。
</speak>

電話の"-"に少し休止が入ったのがわかるでしょうか?これで聞き取りやすくなりますね。なお、住所のところは何も変わっていませんが、これはもともと住所と認識して発話してくれているからです。

これらをまとめると少し調整をしてみました。

<speak>
  「ライオンの家」ですね。住所は、<prosody rate="slow"><say-as interpret-as="address">650-0042</say-as><break time="200ms" /><say-as interpret-as="address">神戸市中央区</say-as><break time="200ms" /><say-as interpret-as="address">丸丸町1-2-3</say-as></prosody>、です。
  電話番号は、<prosody rate="x-slow"><say-as interpret-as="telephone">078-123-4567</say-as></prosody>、です。
</speak>

最初に比べるとだいぶ聞き取りやすくなりましたよね!

別のアプローチ

ややテーマからそれるかもしれませんが、そもそもこれって覚えておかないといけないのでしょうか?いくつかのアプローチが考えられます。

一つの方法は画面付きデバイスに出してしまうというものですね。

レストラン検索スキルです。レストラン名を言うと住所と電話番号をお伝えします。レストラン名を言ってください。

ライオンの家

「ライオンの家」ですね。ライオンの家の住所と電話番号はこちらです。 f:id:kun432:20210723004937p:plain

これなら情報量が多くても大丈夫ですね。画面が表示されている間に電話したりすればいいでしょう。ただデバイスのそばじゃないと使えません。

さらに別のアプローチとしては、例えばユーザにこの情報をメールで送ってしまうというのも一つの手です。

ライオンの家の住所を教えて

「ライオンの家」ですね。登録されているメールアドレスに送信しましたので、ご確認ください。

こちらの場合、スマホのメールなどに送っておけば、レストランに向かう途中などでも見ることができますね。ただし、メールアドレスを事前に取得しておく必要があります。

これをどんどん突き詰めていくと、レストランの予約ぐらいならスキルでやっちゃってもいいということになったりしてwwww

まとめ

SSMLを使って発話内容を調整することで、伝えたい情報に合わせた聞き取りやすさをコントロールできます。音声インタフェースとしてはこれはとても重要なことです。ただし、情報を伝えることがゴールなのではなく、ユーザの真の目的やユースケースを踏まえた上で、最適なものを提供することが重要ですね。