VUI(Voice User Interface)実装対象機能一覧

# はじめに

O.Reillyの書籍「デザイニング・ボイスユーザーインターフェイス」ではVUI(Voice User Interface)の意義からテスト方法まで広くカバーされている。

- イントロダクション
- VUIデザイン原理の基本
- ペルソナとビジュアルVUI
- 音声認識技術
- 高度なVUIデザイン
- VUIのユーザーテスト
- VUI完成後にすべきこと
- 音声対応デバイスと自動車

書籍を読みながら"実装対象になる機能"一覧を抽出した。
粒度や分類精査の余地があるが、VUIを自作したりシナリオを組み立てる際に参考にしてほしい。

# 機能一覧

| 名称 | 概要 |
|:--|:--|
| earcon(イアコン) | 短い特徴的な音でシステム側入力完了確認やメインメニュー表示などを知らせる |
| ウェイクワード | 音声アシスタント機能を呼び出す際に用いられる音声コマンド |
| 終端検出 | ユーザがいつ話し終えたかの判断。終端検出タイムアウト値により調整することもある。参考値: 1.5秒 |
| N-Bestリスト | ユーザーが言ったかもしれない言葉のリストを、可能性の高い順に並べてスコアと共に返す |
| 会話マーカー | ユーザーが今会話全体のどこにいるかを知り、言ったことが相手に伝わったかの知らせる追加メッセージ |
| 認識中画面と波形表示 | 音声入力を開始した表示と、音声受付可視化のための波形表示。開始と終了時に案内音を出すことも |
| ユーザ習熟度 | ユーザーの使用頻度や継続期間に応じた処理分け。説明の省略や機能開放など。 |
| パージイン | システムが話している最中にユーザー割り込むことを許可するか否か |
| 入力なしタイムアウト | 入力が一定時間ない場合にシステム側の処理を発火。アプリを終了させることもある。 |
| ランドマーキング | ホームメニューや特定の状態になった際に特徴的な短い音声を鳴らす |
| コンテキスト維持 | 会話のターンをまたいで代名詞等の会話対象情報を保持し続けること。例: 彼 = エイブラハム・リンカーン |
| ヘルプおよびユニバーサルコマンド | どの状態からでも実行できるVUIコマンド。メインメニュー、アプリ終了、ヘルプなど |
| 確認 | ユーザーの入力を明示的、暗黙的に確認していく |
| ダイアログマネジメント | 埋めるべき情報一覧から不足する部分をVUIが質問してゆく |

### 確認について

#### 3段階の信頼度

音声認識エンジンの解析結果の信頼度に応じ、閾値に応じて確認を振り分ける

例:
ユーザー: ペーパータオルを買い足してください。
VUI:
 [信頼度 > 80%、暗黙の確認] OK、ペーパータオルを注文します。
 [信頼度 45 ~ 79%、明示的確認] ペーパータオルの注文ですね。よろしいですか？
 [信頼度 < 45%] 申し訳ありませんが、聞き取れませんでした。買いたい物は何ですか？

#### 暗黙の確認
元の質問を確認せずVUIが回答。

例:

ケース1
ユーザー: 世界一高い山は何？
VUI: 世界一高い山はエベレスト山です。 [答えの中に元の質問の一部が含まれている]

ケース2 より信頼度が高い場合や会話的にしたい場合
ユーザー: 世界一高い山は何？
VUI: エベレスト山。


#### 沈黙による確認

音声によるレスポンスを必要としないアクションで、VUIが音声返答せず処理を実行。

例:

ユーザー: クリスマスツリーのライトをつけて。
VUI: [音声で返答せずライトを付ける。音声で返答するならば「OK、クリスマスライトをつけています」だろうか]

#### 汎用的確認

確認した旨を表示するが文字通りの復唱ではない形。

例:

VUIアバター: 田中さん、元気ですか？
田中: えー、まあいい調子だと思うよ。

VUIアバター: 教えてくれてありがとうございます。昨夜は眠れましたか？
田中: あんまり。

VUIアバター: それは残念です。


#### ビジュアルな確認

画面に表示する。

例:

ユーザー: OK, Google. 次のミーティングはいつ？
GOOGLE: [スマートスピーカー画面に予定のカードを表示] カレンダーに明日の予定が入っています。タイトルは「池袋で現地視察」です。


### N-bestリストの例

私の好きな動物VUI: あなたの大好きな動物についてもっと知りたいと思っています。何が好きですか？
ユーザー: ええと、今は私が好きなのは...子猫！ (Well, I think at the moment my favorite's gotta be.. kitty cats!)

5つ返却し、有効な見本一覧と照会することで2.の"CATS"を見つけることができた。

1. WELL I THINK AT THE MOMENT MY FAVORITES GOT BE FIT AND FAT
1. WELL I THINK AT THE MOMENT BY FAVORITES GOTTA BE KITTY CATS
1. WELL I HAVE AT THE MOMENT MY FAN IS OF THE KITTY
1. WELL I HAVE AT THE MOMENT MY FAN IS OF THE KITTY BAT
1. WELL THAT THE MOMENT MY FAVORITE IS GOT BE KIT AND CAT

### 会話マーカーの例

- タイムライン (「最初に」「これで半分」「最後に」など)
- あいづち (「ありがとう」「わかりました」「了解」「すみません」など)
- ポジティブ・フィードバック (「それはよかった」「それを聞いて安心しました」など)

#### 会話ケース1: 会話マーカーなし

AIアシスタント: 昨日は何時間眠りましたか？
ユーザー: 7時間くらい。

AIアシスタント: 昨日はフルーツと野菜を何人前食べましたか？
ユーザー: 4人分くらい。

AIアシスタント: 昨夜薬を飲みましたか？
ユーザー: はい。

AIアシスタント: さようなら。

#### 会話ケース2: 会話マーカーあり

AIアシスタント: あなたの健康についていくつか質問します。まず、昨日は何時間眠りましたか？
ユーザー: 7時間くらい。

AIアシスタント: それはよかった。では昨日はフルーツと野菜を何人前食べましたか？
ユーザー: 4人分くらい。

AIアシスタント: わかりました。最後の質問です -- 昨夜は薬を飲みましたか？
ユーザー: はい。

AIアシスタント: わかりました。今日はここまでです。明日またお話しましょう。さようなら。

### ダイアログマネジメントの例

ピザを正しく注文するために必要なスロット：

- ピザの枚数
- サイズ
- トッピング
- 電話番号
- 住所
- 郵便番号

ピザアプリ: ようこそ、CA Pizzaへ。どのピザにいたしましょうか？
ユーザー: えーと、ペパロニのラージをお願いします。

[この時点で、ピザの枚数、トッピング、サイズのスロットが埋まった。あと必要なのは住所、郵便番号、電話番号]

ピザアプリ: ラージサイズのペパロニですね、ありがとうございます。お届け先の住所はどちらですか？
ユーザー: 渋谷区宇田川町

ピザアプリ: はい。番地は？
ユーザー: ４０−１。

ピザアプリ: では郵便番号を教えてください。
ユーザー: 150-0042。


# 概要未記載の機能一覧(TODO)

- 声の大きさによるボリューム変更
- 入力外の情報による音量や流す情報の変更: 国、位置、時刻
- 周辺環境（音や光、どこに人がいるか）による変更
- システムペルソナ
- 会話のターンと沈黙による回答
- エラーハンドリング
- 音声生成　音声合成
- 音声再生: ワード、ジングル
- ユーザ発話が長い場合の処理 = タイムアウト
- データプライバシー p.127
- 分岐 p.129
- 制約のある回答
- 入力のカテゴリー分け
- 質問以上の回答を受け取った場合
- 否定、個別の取り消し: ピザ注文の例 p.140

- 音声認識
- 感情分析と感情検出
- 話者認証　複数話者
- 固有名詞認識: 名前、スペリング、英数字
- 認識の即時表示

- スマートサジェストリスト: コンテキストに応じた選択肢を画面表示または音声で提示
- 直近単語リスト