文法の例

以下の例では、音声認識における文法の複雑な使用法を説明しています。 ほとんどの例は、ABNF (application/srgs) フォーマットと XML (application/srgs+xml) フォーマットの両方で示されています。 これらの例を参考にして、文法の使用を開始してください。

文法の実働ルールでは、\ (バックスラッシュ) が含まれることは ABNF の構文エラーであり、XML ではリテラル値として解釈されます。

文法をサポートする言語とモデル、およびそのサポート・レベル (一般出荷可能またはベータ版) について詳しくは、各言語でのカスタマイズのサポートを参照してください。

確認文法

確認文法は、質問に対する応答として 1 語の回答を想定しているアプリケーションの場合に便利です。 次の文法では、「はい」と「いいえ」という選択可能な応答のリストを定義しています。

リスト文法

リスト文法は、事前に定義されたストリングのセットからユーザーが 1 つの選択肢を選択することを想定しているアプリケーションの場合に便利です。 このセットはフラット・リストと呼ばれることがあります。 このセットは一般に終端要素のリストからなり、複雑なルール構造を含んでいません。

  • 次の文法では、数字の句のリストを定義しています。

  • 次の文法では、ユーザーが選択できる有効な名前のリストを定義しています (電話帳から個人を選択する場合など)。

車両識別番号文法

車両識別番号 (VIN) では、クレジット・カード番号、電話番号、米国社会保障番号のように固定英数字フォーマットが使用されます。 従来の n-gram にはない文法の大きな利点は、文法はこのようなフォーマットを指定するのに非常に有効である点です。

VIN フォーマットは高度に標準化されており、文字数が固定されています。 従来の n-gram は、これらのような値を扱うのに適していません。 文法とは異なり、n-gram は必要な数の文字が指定されていることを保証できません。

次の文法では、ホンダ車の VIN コードを認識します。 これらの文法はこれまでに紹介した文法例よりも複雑ですが、文法の機能をうまく示しています。

VINフォーマットの詳細については、車両識別番号を参照してください。

オプション要素が含まれた文法

応答の特定の要素をオプションにすると、ユーザーの応答内容を予測して文法の柔軟性を高めることができます。 次の文法では、$optionalphrase 要素を大括弧で囲んでこの要素をオプションにします。 ユーザーは、社会保障番号を述べる前にいくつかの追加の句のいずれかを話すことができます。 例えば、ユーザーは「私の社会保障番号は xxx xx xxxx」と話しても、「xxx xx xxxx」とだけ話してもかまいません。

文法におけるオプション拡張の詳細については、音声認識文法仕様の セクション2.5「繰り返し」を参照してください。

明確化文法

他の考えられる文法例としては、認識された応答の信頼度はあまり高くないが、アプリケーション側ではユーザーの応答を確定する必要がある状況が挙げられます。 この場合は、アプリケーションは最も可能性の高いいくつかの応答が含まれた文法を動的に作成して、ユーザーに回答を繰り返すように要請できます。 例えば、アプリケーションは最も可能性の高い 2 つのオプションが含まれた文法を作成して、これら 2 つのうち 1 つをユーザーに選択させることができます (Did you mean 'option 1' or 'option 9'?)。

明確化文法はプログラムで生成されます。 このため、例を示していません。