AWS
Alexa
AlexaSkillsKit

Alexa開発メモ(音声による応答での適切な表現と情報量について)

要旨

先日、はじめてAlexaのスキルを作成して公開しました。
音声応答の内容検討でちょっと困った点&解決した内容あったので共有します。

アプリの概要

  • 観光イベントの問い合わせアプリ
  • 入力の発話:検索条件(イベントのジャンル など)
    • 例)(スキル名)で"アート"のイベントを教えて
    • 音声+文字(Alexaアプリのカード通知)で応答
    • イベントが複数件該当した場合は、MAX5件目までを回答
  • イベント情報は外部APIからJSON形式で取得。JSONを加工して応答データを作成。

とりあえず作った音声応答

アプリケーション側で作成した応答データのイメージは以下の通りです

イベント名:山本大と現代美術の肖像
開催場所:イベントスペースA.R.T
アクセス:両国駅B5出口から出て両国公園に向かって徒歩5分
開催期間:2018/10/1~2018/12/13
開館時間:6:00~23:00

イベント名:フー・バーの華麗なる世界
開催場所:日本橋三越本店 美術画廊
アクセス:銀座線・半蔵門線「三越前」より徒歩1分
開催期間:2018/10/13~2018/11/25
開館時間:9:00~22:00

上記データは目で見る分には(多少長いですが)問題ないと思います。

が、上記文字データを音声応答データとしてそのまま使ったところ、以下のような読み上げになりました…

いべんとめい やまもとだいとげんだいびじゅつのしょうぞう
かいさいばしょ いべんとすぺーす えー あーる てぃー
あくせす りょうこくえきびーごでぐちからでてりょうこくこうえんにむかってとほごふん
かいさいきかん にせんじゅうはちねんじゅうがつついたちからにせんじゅうはちねんじゅうにがつじゅうさんにち
かいかんじかん ろくじからにじゅうさんじ

いべんとめい ふー ばー のかれいなるせかい
かいさいばしょ にほんばしみつこしほんてん びじゅつがろう
あくせす ぎんざせん はんぞうもんせん みつこしまえよりとほいっぷん
かいさいきかん にせんじゅうはちねんじゅうがつじゅうさんにちからにせんじゅうはちねんじゅういちがつにじゅうごにち
かいかんじかん くじからにじゅうにじ

実際にはAlexaが(割と)流暢に喋ってくれるので上記のようなひらがな書きよりかはマシでしたが、
率直に言って「長くて聞く気が起きない」「何言ってるかよくわからない」という感じでした。

問題点の整理

改良の方針を決めるために、ひとまず問題と感じたポイントをリストアップしました。

  • 音声情報は文字情報と違って、「最初に全体像を確認してから個別部分を見る」が難しい
    • 文字情報の「飛ばし読み」は容易だが、音声の「飛ばし聞き」は困難
    • 応答を受け取った側は、応答内容の分量を即座に推し量ることができない
    • 箇条書きによる構造情報は音声では表現されづらい
  • アプリが発話を正しく解釈しているのか不安
  • 沢山数字が出てくるとしんどい。特にyyyy/mm/ddでFrom~Toを読むと2×8個の数字が出てくる。
  • 固有名詞を適切に読んでくれない
    • 人名の「やまもとまさる」が「やまもとだい」と読まれる
    • 東京の地名の「りょうごく」が二つの国を表す「りょうこく」になる など

今回作成したアプリは外部APIから情報を取得している仕様上、固有名詞を適切に読ませるための対応が難しかったので、それ以外についての改良を実施しました。

改良内容 ★本記事のポイント

改良した点は以下の通りです。

  • 音声応答内容は必要最小限にする。補足的な情報は文字応答のみで表示
  • 最初に結果件数を返す
  • 応答の最初で発話内容を復唱する
  • 箇条書きではなく、文章で応答する。スペースや読点で音声にメリハリをつける。
  • yyyy/MM/ddのFrom~Toの読み上げを廃止。イベント終了日までの日数のみを読み上げ。

改良後の応答データは以下の通りです。

あーとのいべんとは にけん です

いっけんめは  やまもとだいとげんだいびじゅつのしょうぞう です
かいさいは いべんとすぺーす えー あーる てぃー
しゅうりょうは ごじゅうはちにちご です

にけんめは  ふー ばー のかれいなるせかい です
かいさいは にほんばしみつこしほんてん びじゅつがろう
しゅうりょうは さんじゅうににちご です

だいぶスッキリしました!
固有名詞の読み方は相変わらずですが、聞いていてなんとなく意味がわかればそこまで気になりませんでした。

その他思ったこと

画面ベースのアプリで検索処理を実現する場合は、
「検索結果を最大20件程度画面に表示してユーザに目視で目的の情報探してもらう」
のような作りになっていることが多いかと思いますが、音声応答アプリではこの方法は難しいかと思いました。
 ⇒ 20件分の情報を耳で聞きながら目的の情報に到達するのは難しい

音声応答ベースで検索処理を実現する場合は、
「対話的な処理を繰り返しながら1~3件程度になるまで結果絞り込みをする」
のような作りにするのがよいのかなーと思いました。