Windows Phone の音声デザイン ガイドライン

2013/12/05

対象: Windows Phone 8 のみ

Windows Phone 8 では、ユーザーは音声を使用してアプリとやり取りできます。アプリに統合できる音声コンポーネントは 3 つあります。それは、音声コマンド音声認識、および音声合成 (TTS) です。

入念に設計され、効果的に実装された音声は、Windows Phone アプリと対話するための確実で楽しい方法として利用できます。音声により、タッチ、タップ、ジェスチャーによる対話を補完したり、場合によっては置き換えたりすることができます。

このトピックは、次のセクションで構成されています。

音声対応アプリのコーディングを開始する前に、ユーザー エクスペリエンスおよび対話の流れを予測して規定することをお勧めします。

音声を使用してアプリに入る

音声コマンドをアプリに統合すれば、ユーザーはアプリの外部からアプリの内部にディープ リンクできるようになります。たとえば、アプリで最後に使用したセクションにアクセスしたり、重要なタスクを実行したりする音声コマンドを追加できます。

アプリ内部での音声による対話

音声認識を使用することで、ユーザーはアプリの内部から音声で情報を入力したり、タスクを実行したりできます。また、アプリ内で音声合成 (TTS) を使用して、マイクを通じてユーザーにテキストを読み上げることもできます。

ユーザーがアプリを開いた後の (おそらく音声コマンドを使用して) 音声による対話を規定しやすくなるように、以下の質問を検討してください。

  • ユーザーは自分の声を使って、どのようなアクションまたはアプリ動作を開始できますか。たとえば、ページ間の移動、コマンドの起動、メモやメッセージなどのデータの入力があります。

  • 個々のアクションまたは動作を開始するために、ユーザーはどのような語句を言うと予想されますか。

  • アプリに対して発話できるタイミングおよび発話できる内容をユーザーはどのような方法で知りますか。

  • タッチ操作より音声を使用した方が速いと思われる処理やタスクには何がありますか。たとえば、大規模なオプション リストを参照する場合や、複数のメニュー レベル間またはページ間を移動する場合が該当します。

  • ネットワーク接続がない状況でアプリを音声認識に使用しますか。

  • アプリは独自の語彙要件を持つ特定のユーザー グループをターゲットとしていますか。たとえば、医学や科学などの特定のビジネス分野、ゲーマー、特定の地理的領域が該当します。

音声コマンドまたはアプリ内音声認識を利用した、音声による対話エクスペリエンスに関していくつかの決定を行うと、次のことができるようになります。

  • ユーザーがアプリを使用して行うことのできるアクションをリストする。

  • 各アクションをコマンドに対応付ける。

  • 各コマンドを実行するためにユーザーが発話できる 1 つ以上の語句を割り当てる。

  • アプリからユーザーへの発話も行われる場合は、ユーザーとアプリとの間で交わされる対話を書き出す。

音声コマンド

音声コマンドを有効にするには、認識可能な語句のリストを定義し、それらの語句を音声コマンド定義 (VCD) ファイル内でコマンドに対応付ける必要があります。音声コマンドを伴う音声合成読み上げの場合は、実行されるアクションを確認するために、音声シンセサイザーが読み上げる文字列を VCD ファイル内で指定します。アプリ用に VCD ファイルを作成するときのヒントを以下に示します。

  • プロンプトによってユーザーに入力を求めます。

  • 音声入力のオーディオ レベルの読み上げを表示します。

  • ユーザーの発話に対して照合された語句を確認します。

  • 認識に失敗した場合は、そのことをユーザーに通知し、もう一度試してもらいます (必要に応じて繰り返します)。

  • 複数の認識候補 (存在する場合) の中から選択できるようユーザーを支援します。

Windows Phone に組み込まれている認識エクスペリエンスは、電話におけるグローバルな音声コンテキストで使われるものと同じ対話モデルを採用しています。したがってユーザーは、発話を開始するタイミングがわかる、組み込みサウンドの意味を理解する、処理が完了したタイミングがわかる、エラーに対するフィードバックを受ける、および複数の一致候補があるときに不明瞭解消の支援を受ける可能性が高くなります。詳細については、「Windows Phone 8 のプロンプト、確認、不明瞭解消の選択肢の表示」を参照してください。

プロンプトと確認

アプリに対して発話できる内容をユーザーが現在のアプリ コンテキストに基づいて判断できるようにし、求められている入力語句の例を提示します。ショート メッセージ ディクテーションを入力するときなど、ユーザーが何でも言えるようにしたい場合を除き、できる限り具体的な応答を引き出せるようなプロンプトにします。たとえば、"今日は何をしたいですか?" というプロンプトでユーザーの入力を求めるとき、応答の範囲は多岐にわたり、その候補を照合するには膨大な文法が必要になる可能性があります。しかし、"ゲームをしたいですか、それとも音楽を聴きたいですか?" というプロンプトにすれば、"ゲームをする" または "音楽を聴く" の 2 つの選択肢のうち、いずれか 1 つの具体的な応答を求めていることになります。2 種類の応答を照合するのに必要な文法は、大規模な文法より簡単に作成でき、正確に認識を行う可能性も高くなります。

音声認識の精度が低いときは、ユーザーの確認を要求します。ユーザーの意図が不明瞭な場合、ユーザーが期待していないアクションを開始するより、ユーザーに確認を求める方が、アプリにとって通常は良い結果につながります。

Windows Phone に組み込まれている認識エクスペリエンスは、プロンプト テキストおよび期待される音声入力の例を使ってカスタマイズできる画面だけでなく、音声入力を確認する画面も備えています。

認識の失敗に備えた計画

認識に失敗した場合に何をするかについて計画を立てます。たとえば、ユーザーからの入力がない、認識の質が低い、または、語句の一部だけが認識される場合、アプリのロジックによってそのような状況に対処する必要があります。アプリがユーザーの意図を理解できなかったことと、ユーザーが再試行できることを、ユーザーに通知することを検討します。追加入力を許可する必要があるときは、期待されている入力語句の別の例をユーザーに提示し、認識を再開します。認識の失敗が何回か続いた場合は、ユーザーにテキストで入力してもらうか、認識操作を終了することを検討します。Windows Phone に組み込まれている UI 認識エクスペリエンスは、認識の失敗をユーザーに知らせ、もう一度認識操作を行うためにユーザーに発話してもらうための画面を備えています。

音声入力の問題を探し、その修正を試みます。音声認識エンジンは、音声認識の精度に悪影響を及ぼす可能性のある問題を音声入力の中に検出すると、AudioProblemOccurred イベントを生成します。AudioProblemOccurred イベントを登録すると、イベントと共に返された情報を使用して、その問題をユーザーに知らせることで、可能であればユーザーに修正処理を行ってもらうことができます。たとえば、音声入力の音量が低すぎる場合は、もっと大きな声で話すよう求めることができます。開発者が組み込みの音声認識エクスペリエンスを使用するしないにかかわらず、音声認識エンジンはこのイベントを継続的に生成します。詳細については、「Windows Phone 8 の音声入力の問題の処理」を参照してください。

Windows Phone の文法

文法とは、音声認識エンジンが音声入力の照合に使用できる一連の語句を定義したものです。Windows Phone に付属の事前定義された文法または自分で作成したカスタムの文法を、音声認識エンジンで使用できます。このセクションでは、Windows Phone で使用できる文法の種類について概要を説明し、SRGS 文法を作成するためのヒントを示します。さまざまな文法の種類およびそれらの文法をどのようなときに Windows Phone と組み合わせて使用するかの詳細については、「Windows Phone 8 の文法」を参照してください。

事前定義された文法

Windows Phone は、事前定義された 2 種類の文法に対応しています。ある特定の言語でユーザーが話す可能性のある大量の語句を照合するには、事前定義されたショート メッセージ ディクテーション文法の使用を検討します。Web クエリのコンテキストで入力された語句を照合するには、事前定義された Web 検索文法の使用を検討します。このようなオンラインで提供される事前定義の文法をそのままの状態で使用した場合、最大 10 秒の音声を認識でき、開発者側の作成作業は必要ありません。ただし、オンラインのサービスであるため、実行時にはネットワーク接続が必要になります。

カスタム文法の作成

自分独自の文法を作成する場合、一意の短い語句を認識させるためには Windows Phone のリスト文法形式が効果的です。このような語句はプログラムによって更新でき、アプリからネットワークへの接続がないときでも音声認識に使用できます。

音声認識エクスペリエンスを最大限に制御する場合は、独自の SRGS 文法を作成します。1 回の認識で複数の意味をキャプチャしたい場合、この文法は特に強力です。SRGS 文法はオフラインでの音声認識にも使用できます。

SRGS 文法を作成するためのヒント

文法の規模を小さくします。照合する語句の数が少ない文法ほど、多くの語句を含む規模の大きい文法より認識の精度が良くなります。通常は、アプリ全体で 1 つの文法を用意するよりも、アプリ内の特定のシナリオを対象に、複数の小規模な文法を用意する方が望ましいと言えます。それぞれのアプリ コンテキストで発話する内容をユーザーに準備させて、必要に応じて文法を有効または無効にすれば、音声認識エンジンは個々の認識シナリオで音声入力を照合するのに最小限の語句を検索するだけで済みます。

文法を設計する際は、ユーザーがさまざまな方法でコマンドを言えるようにし、ユーザーの考え方や言い方のバリエーションを考慮します。たとえば、SRGS 文法では、次のようなガベージ規則を使用できます。

  • 文法に定義されていない音声入力を照合します。これによってユーザーは、"~してください"、"それと"、"ええと"、"たぶん" など、アプリにとって意味のない補足的な語句を言えるようになると同時に、文法に明示的に定義してある、アプリにとって意味のある語句は正常に認識してもらえるようになります。

  • 文法に定義されていない語句が間違って認識される可能性を下げるため、ガベージ規則を一致候補リストの項目として追加します。また、音声認識エンジンによって想定外の音声入力が一致候補リストのガベージ規則に照合された場合、ガベージへの一致によって認識結果に返される省略記号 (...) を検出し、ユーザーにもう一度話すよう指示できます。ただし、一致候補リストでガベージ規則を使用すると、文法に定義されている語句に一致する音声入力が誤って除外される可能性も高くなります。

ガベージ規則は注意して使用し、文法が期待どおりに機能することを確認します。詳細については、「ruleref 要素」を参照してください。

音声入力の認識率を高めるには、sapi:subset 要素を使用してみてください。sapi:subset 要素は SRGS 仕様に対する Microsoft の拡張であり、有効にされた文法に対してユーザーの音声入力を照合しやすくなります。sapi:subset を使用して定義する語句は、音声入力で語句の一部だけが発話された場合であっても、音声認識エンジンによって照合できます。4 つの照合方法のいずれかで使用できる語句のサブセットを定義できます。

音節が 1 つだけの語句は文法に定義しないようにします。必要以上に長い語句を定義することは避けるべきですが、音節が 2 つ以上の語句では認識の精度が高まります。

一致候補リストを定義するときは、同じように聞こえる語句を使用しないでください。音声認識エンジンが混乱する可能性があります。たとえば、"hello"、"bellow"、"fellow" など、同じように聞こえる語句を一致候補リストに加えると、認識の精度が下がる可能性があります。

規模の大きい文法を読み込むときは、音声認識で時間のずれが生じることを防ぐため、個々の大型の文法を事前に読み込んでおきます。

カスタムの発音

特殊な語彙にはカスタムの発音を用意することを検討します。通常使わない語句または架空の語句や、珍しい発音の語句がアプリに含まれる場合は、カスタムの発音を定義することで、そのような語句の認識パフォーマンスを高めることができます。音声認識エンジンはその辞書に定義されていない語句の発音を即興で生成するように設計されていますが、カスタムの発音を定義すれば、音声認識音声合成 (TTS) の両方の精度を高めることができます。使用頻度の低い語句の場合は、カスタムの発音を SRGS 文法にインラインで作成できます。詳細については、「token 要素」を参照してください。使用頻度の高い語句の場合は、別の発音辞書ドキュメントを作成することもできます。詳細については、「辞書と音標文字について」を参照してください。

音声認識の精度をテストする

音声認識精度のテスト、およびアプリでの音声認識をサポートするために用意するカスタム GUI の有効性のテストは、可能であればアプリのターゲット ユーザー グループに対して行います。アプリでの音声のデザインと実装の有効性を判断するには、アプリの音声認識の精度をターゲット ユーザーに対してテストすることが最良の方法です。たとえば、良好な認識結果が得られないのは、ユーザーが想定外の語句を言おうとしているからでしょうか。このような問題に対する解決策の 1 つとして、ユーザーが話すと思われる語句が認識されるように文法を変更する方法があります。また、別の解決策として、音声による対話が行われる前に、ユーザーが話してよい内容を知らせるようにアプリを変更する方法もあります。テストの結果は、文法の質やアプリの音声認識フローの質を向上させる方法を見つけて、それぞれの有効性を高めるのに役立ちます。

音声合成

音声合成 (TTS) は、開発者が用意するテキストまたは音声合成記述言語 (SSML) の XML マークアップから音声出力を生成します。音声合成 (TTS) をアプリ内に実装するための推奨事項を以下に示します。

  • ていねいで、ユーザーの行動を促すようなプロンプトをデザインします。

  • 大量のテキストをユーザーに読み返すために音声合成 (TTS) を使用したいかどうかを考えます。たとえば、TTS が 1 つのテキスト メッセージを読み返しているとき、ユーザーは最後まで聞く可能性が高いですが、記憶するのが困難な、長い検索結果リストを読み返しているときは、イライラしたり混乱したりする可能性があります。

  • 音声合成 (TTS) による読み上げ、特に長いものは、ユーザーが停止できるようにします。

  • 音声合成 (TTS) の読み上げに男性の声または女性の声を選べるようにすることを検討します。Windows Phone の言語はすべて、サポート対象のロケールごとに男性と女性の声が用意されています。

  • アプリを市場に投入する前に、音声合成 (TTS) の読み上げを聞いてみます。音声シンセサイザーは明瞭かつ自然な話し方で語句を読み上げようとしますが、明瞭さまたは自然さの点で問題が生じる場合があります。

    • 明瞭さが最も重要なポイントであり、音声合成 (TTS) が読み上げた語句をネイティブ スピーカーが理解できるかどうかが試されます。明瞭さの問題は、語句がまれなパターンで連続している場合や、要素の数や句読点が問題の原因となって、発生する場合があります。

    • 自然さは必要とされるポイントであり、読み上げの韻律または抑揚がネイティブ スピーカーの言い方と異なるとき、問題となる場合があります。どちらの問題も、シンセサイザーへの入力にプレーン テキストではなく SSML を使用することで対処できます。SSML の詳細については、「SSML を使用して合成音声を制御する」および「音声合成記述言語リファレンス」を参照してください。

その他の技術情報

表示:
© 2014 Microsoft