

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 文法の定義
<a name="grammar-srgs-spec"></a>

このトピックでは、Amazon Lex V2 がサポートする SRGS 仕様の一部を示します。すべてのルールは SRGS 仕様で定義されています。詳細については、[音声認識文法仕様バージョン 1.0](https://www.w3.org/TR/speech-grammar/) W3C レコメンデーションを参照してください。

**Topics**
+ [ヘッダー宣言](srgs-header.md)
+ [サポートされている XML 要素](srgs-supported-xml.md)
+ [トークン](srgs-tokens.md)
+ [ルール参照](srgs-rule-reference.md)
+ [シーケンスとカプセル化](srgs-sequence.md)
+ [反復](srgs-repeats.md)
+ [Language](srgs-language.md)
+ [タグ](srgs-tags.md)
+ [重み](grammar-weights.md)

この文書には、W3C 音声認識文法仕様バージョン 1.0 ([https://www.w3.org/TR/speech-grammar/](https://www.w3.org/TR/speech-grammar/) で入手可能) からコピーおよび派生した内容が含まれています。引用情報は次のとおりです。

[Copyright](http://www.w3.org/Consortium/Legal/ipr-notice#Copyright) © 2,004 [W3C®](http://www.w3.org/) ([MIT](http://www.csail.mit.edu/), [ERCIM](http://www.ercim.org/), [Keio](http://www.keio.ac.jp/), All Rights Reserved. W3C の[責任](http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer)、[商標](http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks)、[文書の使用](http://www.w3.org/Consortium/Legal/copyright-documents)および[ソフトウェアライセンス](http://www.w3.org/Consortium/Legal/copyright-software)に関する規則が適用されます。

[W3C レコメンデーション](https://www.w3.org/2004/02/Process-20040205/tr.html#RecsW3C)である SRGS 仕様書は、以下のライセンスに基づいて W3C から入手できます。

## ライセンステキスト
<a name="license-text"></a>

ライセンス

本書、または本ステートメントがリンクされている W3C ドキュメントを使用またはコピーすることにより、お客様 (ライセンシー) は、以下の条件を読み、理解し、遵守することに同意したものとみなされます。

本書または本ステートメントのリンク元である W3C ドキュメントの内容を、目的を問わず、費用や使用料なしで、あらゆる媒体で複製および配布することをここに許可します。ただし、使用する文書のすべてのコピーまたはその一部に以下を含めることを条件とします。
+ 元の W3C ドキュメントへのリンクまたは URL。
+ 原作者の既存の著作権表示、または存在しない場合は、フォーム「Copyright © [\$1date-of-document] [World Wide Web Consortium](http://www.w3.org/) ([MIT](http://www.csail.mit.edu/)、[ERCIM](http://www.ercim.org/)、[Keio](http://www.keio.ac.jp/)、[Beihang](http://ev.buaa.edu.cn/))。[http://www.w3.org/Consortium/Legal/2015/doc-license](http://www.w3.org/Consortium/Legal/2015/doc-license)」の通知 (ハイパーテキストが望ましいが、テキスト表現も可)。
+ *存在する場合は*、W3C ドキュメントのステータス。

スペースに余裕がある場合は、本**通知**の全文を記載してください。本書の内容、あるいはその一部の実施に従ってお客様が作成したソフトウェア、文書、またはその他のアイテムまたは製品には、著者名義の帰属を記載するようお願いします。

以下の場合を除き、W3C ドキュメントの修正または派生版を作成する権利は、本ライセンスで付与されません。本書に定める技術仕様の実装を容易にするために、誰でもソフトウェア、ソフトウェアに付属する補足資料、およびソフトウェアのドキュメンテーションにおいて、二次的著作物および本書の一部を作成して配布することができます。ただし、かかるすべての著作物には、以下の注意事項が含まれていることが条件となります。ただし、本書の派生著作物を技術仕様として使用するために公開することは明示的に禁止されています。

さらに、「コードコンポーネント」 (Web IDL と明記されたセクション内の Web IDL、コード例として明示されている W3C 定義のマークアップ (HTML、CSS など)、およびコンピュータプログラミング言語コード) は、[W3C ソフトウェアライセンス](http://www.w3.org/Consortium/Legal/copyright-software)に基づいてライセンスされています。

通知は以下のとおりです。

「Copyright © 2,015 W3C® (MIT, ERCIM, Keio, Beihang). このソフトウェアまたはドキュメントには、[W3C ドキュメントのタイトルと URI] からコピーまたは派生した内容が含まれています。」

免責事項

本書は「現状のまま」提供され、著作権者は、明示または黙示を問わず、商品性、特定目的への適合性、非侵害、または所有権の保証を含むがこれらに限定されない、ドキュメントの内容があらゆる目的に適していること、およびそのような内容の実装が第三者の特許、著作権、商標、またはその他の権利を侵害しないことについての表明または保証を行いません。

著作権者は、ドキュメントの使用またはその内容の実行または実装から生じる直接的、間接的、特別または結果的な損害について一切の責任を負わないものとします。

書面による事前の許可がない限り、著作権者の名前および商標を本書またはその内容に関する広告または宣伝に使用することはできません。本書の著作権の所有権は、常に著作権者に帰属します。

# ヘッダー宣言
<a name="srgs-header"></a>

次の表は、文法スロットタイプがサポートするヘッダー宣言を示しています。詳細については、*音声認識文法仕様バージョン 1* W3C レコメンデーションの「[文法ヘッダー宣言](https://www.w3.org/TR/speech-grammar/#S4.1)」を参照してください。


| 宣言 | 仕様要件 | XML フォーム | Amazon Lex のサポート |  の仕様 | 
| --- | --- | --- | --- | --- | 
| 文法バージョン | 必須 | [4.3](https://www.w3.org/TR/speech-grammar/#S4.3): grammar 要素の version 属性 | 必須 | SRGS | 
| XML 名前空間 | 必須 (XML のみ) | [4.3](https://www.w3.org/TR/speech-grammar/#S4.3): grammar 要素の xmlns 属性 | 必須 | SRGS | 
| [Document type (ドキュメントタイプ)] | 必須 (XML のみ) | [4.3](https://www.w3.org/TR/speech-grammar/#S4.3): XML DOCTYPE | 推奨 | SRGS | 
| 文字エンコーディング | 推奨 | [4.4](https://www.w3.org/TR/speech-grammar/#S4.4): XML 宣言に含まれる encoding 属性 | 推奨 | SRGS | 
| Language | 音声モードでは必須 DTMF モードでは無視 | [4.5](https://www.w3.org/TR/speech-grammar/#S4.5): grammar 要素の xml:lang 属性 | 音声モードでは必須 DTMF モードでは無視 | SRGS | 
| モード | オプションです。 | [4.6](https://www.w3.org/TR/speech-grammar/#S4.6): grammar 要素の mode 属性 | オプションです。 | SRGS | 
| ルートルール | オプションです。 | [4.7](https://www.w3.org/TR/speech-grammar/#S4.7): grammar 要素の root 属性 | 必須 | SRGS | 
| タグ形式 | オプションです。 | [4.8](https://www.w3.org/TR/speech-grammar/#S4.8): grammar 要素の tag-format 属性 | 文字列リテラルと ECMAScript がサポートされています | SRGS、SISR | 
| 基本 URI | オプションです。 | [4.9](https://www.w3.org/TR/speech-grammar/#S4.9): grammar 要素の xml:base 属性 | オプションです。 | SRGS | 
| 発音レキシコン | オプション、複数可 | [4.10](https://www.w3.org/TR/speech-grammar/#S4.`0): lexicon 属性 | サポートされません | SRGS, PLS | 
| メタデータ | オプション、複数可 | [4.11.1](https://www.w3.org/TR/speech-grammar/#S4.11.1): meta 属性 | 必須 | SRGS | 
| XML メタデータ | オプション、XML のみ | [4.11.2](https://www.w3.org/TR/speech-grammar/#S4.11.2): metadata 属性 | オプションです。 | SRGS | 
| タグ | オプション、複数可 | [4.12](https://www.w3.org/TR/speech-grammar/#S4.12): tag 属性 | グローバルタグはサポートされていません | SRGS | 

**例**

```
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN"
                  "http://www.w3.org/TR/speech-grammar/grammar.dtd">

<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xml:base="http://www.example.com/base-file-path"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="en-US"
         version="1.0"
         mode="voice"
         root="city"
         tag-format="semantics/1.0">
```

# サポートされている XML 要素
<a name="srgs-supported-xml"></a>

Amazon Lex V2 では、カスタム文法用に次の XML 要素がサポートされています。
+ `<item>`
+ `<token>`
+ `<tag>`
+ `<one-of>`
+ `<rule-ref>`

# トークン
<a name="srgs-tokens"></a>

次の表は、文法スロットタイプがサポートするトークン仕様を示しています。詳細については、*音声認識文法仕様バージョン 1* W3C レコメンデーションの「[トークン](https://www.w3.org/TR/speech-grammar/#S2.1)」を参照してください。


| トークンタイプ | 例 | サポート対象? | 
| --- | --- | --- | 
| 引用符で囲まれていない 1 つのトークン | hello | はい | 
| 引用符で囲まれていない 1 つのトークン: アルファベット以外 | 2 | はい | 
| 一重引用符で囲まれたトークン、スペースなし | "hello" | はい、トークンが 1 つしか含まれていない場合は、二重引用符を削除する | 
| スペースで区切られた 2 つのトークン | bon voyage | はい | 
| スペースで区切られた 4 つのトークン | this is a test | はい | 
| 一重引用符で囲まれたトークン、スペースを含む | "San Francisco | いいえ | 
| <token> タグ内の 1 つの XML トークン | <token>サンフランシスコ</token> | いいえ (一重引用符で囲まれたトークン、スペースを含むと同じ) | 

**Notes** (メモ)
+ *一重引用符付きトークン (空白を含む) — この仕様では、二重引用符で囲まれた単語を単一のトークンとして扱う必要があります*。Amazon Lex V2 はそれらをスペースで区切られたトークンとして扱います。
+ *<token> の単一の XML トークン* — 仕様では <token> で区切られた単語を 1 つのトークンとして示す必要があります。Amazon Lex V2 はそれらをスペースで区切られたトークンとして扱います。
+ Amazon Lex V2 では、文法にどちらかの使用が見つかると、検証エラーが発生します。

**例**

```
<rule id="state" scope="public">
    <one-of>
        <item>FL</item>
        <item>MA</item>
        <item>NY</item>
    </one-of>
</rule>
```

# ルール参照
<a name="srgs-rule-reference"></a>

次の表は、文法ドキュメント内で考えられるさまざまな形式のルール参照をまとめたものです。詳細については、*音声認識文法仕様バージョン 1* W3C レコメンデーションの「[ルール参照](https://www.w3.org/TR/speech-grammar/#S2.2)」を参照してください。


| 参照タイプ | XML フォーム | サポート | 
| --- | --- | --- | 
| [ 2.2.1 ](https://www.w3.org/TR/speech-grammar/#S2.2.1) 明示的なローカルルール参照 | <ruleref uri="\$1rulename"/> | はい | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [URI](https://www.w3.org/TR/speech-grammar/#term-uri) で識別される文法の名前付きルールへの明示的な参照 | <ruleref uri="grammarURI\$1rulename"/> | いいえ | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [URI](https://www.w3.org/TR/speech-grammar/#term-uri) で識別される文法のルートルールへの暗示的な参照 | <ruleref uri="grammarURI"/> | いいえ | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [メディアタイプ](https://www.w3.org/TR/speech-grammar/#term-media-type)を持つ [URI](https://www.w3.org/TR/speech-grammar/#term-uri) で識別される文法の名前付きルールへの明示的な参照 | <ruleref uri="grammarURI\$1rulename" type="media-type"/> | いいえ | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [メディアタイプ](https://www.w3.org/TR/speech-grammar/#term-media-type)を持つ [URI](https://www.w3.org/TR/speech-grammar/#term-uri) で識別される文法のルートルールへの暗示的な参照 | <ruleref uri="grammarURI" type="media-type"/> | いいえ | 
| [2.2.3](https://www.w3.org/TR/speech-grammar/#S2.2.3) 特殊ルールの定義 | `<ruleref special="NULL"/>` `<ruleref special="VOID"/>` `<ruleref special="GARBAGE"/>` | いいえ | 

**Notes** (メモ)

1. 文法 URI は外部 URI です。例えば、`http://grammar.example.com/world-cities.grxml`。

1. メディアタイプには以下のものがあります。
   + `application/srgs+xml`
   + `text/plain`

**例**

```
<rule id="city" scope="public">
    <one-of>
        <item>Boston</item>
        <item>Philadelphia</item>
        <item>Fargo</item>
    </one-of>
</rule>

<rule id="state" scope="public">
    <one-of>
        <item>FL</item>
        <item>MA</item>
        <item>NY</item>
    </one-of>
</rule>

<!-- "Boston MA" -> city = Boston, state = MA -->
<rule id="city_state" scope="public">
    <ruleref uri="#city"/> <ruleref uri="#state"/>
</rule>
```

# シーケンスとカプセル化
<a name="srgs-sequence"></a>

以下の例は、サポートされているシーケンスを示しています。詳細については、*音声認識文法仕様バージョン 1* W3C レコメンデーションの「[シーケンスとカプセル化](https://www.w3.org/TR/speech-grammar/#S2.3)」を参照してください。

**例**

```
<!-- sequence of tokens -->
this is a test

<!--sequence of rule references-->
<ruleref uri="#action"/> <ruleref uri="#object"/>

<!--sequence of tokens and rule references-->
the <ruleref uri="#object"/> is <ruleref uri="#color"/>

<!-- sequence container -->
<item>fly to <ruleref uri="#city"/> </item>
```

# 反復
<a name="srgs-repeats"></a>

次の表では、サポートされるルールの反復拡張が示されます。詳細については、*音声認識文法仕様バージョン 1* W3C レコメンデーションの「[反復](https://www.w3.org/TR/speech-grammar/#S2.5)」を参照してください。


| XML フォーム例 | 行動 | サポート対象? | 
| --- | --- | --- | 
| *repeat="n"* repeat="6" | 含まれている式はちょうど「n」回繰り返されます。 「n」は「0」または正の整数でなければなりません。 | はい | 
| *repeat="m-n"* repeat="4-6" | 含まれている拡張が「m」から「n」回 (両端を含む) 繰り返されます。 「m」と「n」はどちらも「0」または正の整数で、「m」は「n」以下でなければなりません。 | はい | 
| *repeat="m-"* repeat="3-" | 含まれている展開は「m」回以上 (含めて) 繰り返されます。 「m」は「0」または正の整数でなければなりません。たとえば、「3-」は、格納されている拡張が 3 回、4 回、5 回以上発生する可能性があることを宣言します。 | はい | 
| *repeat="0-1"*  | 含まれる拡張はオプションです。 | はい | 
| <item repeat="2-4" repeat-prob="0.8"> |   | いいえ | 

# Language
<a name="srgs-language"></a>

以下の説明は、文法に適用される言語識別子が対象です。詳細については、*音声認識文法仕様バージョン 1* W3C レコメンデーションの「[言語](https://www.w3.org/TR/speech-grammar/#S2.7)」を参照してください。

デフォルトでは、文法は[文法ヘッダー](https://www.w3.org/TR/speech-grammar/#S4.1)の言語宣言に[言語識別子](https://www.w3.org/TR/speech-grammar/#term-language)が与えられた単一言語文書です。その文法内のすべてのトークンは、特に宣言されていない限り、**文法の言語に従って処理されます**。文法レベルの言語宣言は**サポートされていません**。

以下の例で、次の操作を行います。

1. 「en-US」言語の文法ヘッダー宣言は、Amazon Lex V2 で**サポートされています**。

1. アイテムレベルの言語アタッチメント (*赤*で強調表示) は**サポートされていません**。言語アタッチメントがヘッダー宣言と異なる場合、Amazon Lex V2 では検証エラーが発生します。

```
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN"
                  "http://www.w3.org/TR/speech-grammar/grammar.dtd">

<!-- the default grammar language is US English -->
<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="en-US" version="1.0">

  <!--
     single language attachment to tokens
     "yes" inherits US English language
     "oui" is Canadian French language
  -->
  <rule id="yes">
    <one-of>
      <item>yes</item>
      <item xml:lang="fr-CA">oui</item>
    </one-of>
  </rule>

  <!-- Single language attachment to an expansion -->
  <rule id="people1">
    <one-of xml:lang="fr-CA">
      <item>Michel Tremblay</item>
      <item>André Roy</item>
    </one-of>
  </rule>
</grammar>
```

# タグ
<a name="srgs-tags"></a>

以下の説明は、文法用に定義されたタグが対象です。詳細については、*音声認識文法仕様バージョン 1* W3C レコメンデーションの「[タグ](https://www.w3.org/TR/speech-grammar/#S2.6)」を参照してください。

SRGS 仕様に基づいて、タグは次のように定義できます。

1. 「[ヘッダー宣言](srgs-header.md)」で説明されている通り、ヘッダー宣言の一部として。

1. *<rule>* 定義の一部として。

以下のタグ形式がサポートされています。
+ `semantics/1.0` (SISR, ECMAScript)
+ `semantics/1.0-literals` (SISR 文字列リテラル)

以下のタグ形式がサポートされています。
+ `swi-semantics/1.0` (ニュアンス独自)

**例**

```
<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xml:base="http://www.example.com/base-file-path"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="en-US"
         version="1.0"
         mode="voice"
         root="city"
         tag-format="semantics/1.0-literals">
    <rule id="no">
        <one-of>
            <item>no</item>
            <item>nope</item>
            <item>no way</item>
        </one-of>
        <tag>no</tag>
    </rule>
</grammar>
```

# 重み
<a name="grammar-weights"></a>

要素には*重み*属性を追加できます。重みは正の浮動小数点値で、音声認識中に項目内のフレーズがどの程度ブーストされるかを表します。詳細については、音声認識文法仕様バージョン 1 W3C レコメンデーションの「[重み](https://www.w3.org/TR/speech-grammar/)」を参照してください。

重みは、0 より大きく 10 以下で、小数点以下桁数は 1 つのみである必要があります。重みが 0 より大きく 1 未満の場合、フレーズはマイナスにブーストされます。重みが 1 より大きく 10 未満の場合、フレーズはプラスにブーストされます。重み 1 は重みが皆無であると同じことであり、フレーズのブーストは行われません。

音声認識のパフォーマンスを向上させるために項目に適切な重みを付けるのは難しい作業です。重みを割り当てる際のヒントをいくつか紹介します。
+ 項目に重みを割り当てていない文法から始めましょう。
+ スピーチのどのパターンがよく誤認されているかを判断します。
+ 音声認識のパフォーマンスが向上し、リグレッションがなくなるまで、重みに異なる値を適用します。

**例 1**

たとえば、空港に関する文法があって、*ニューヨーク*が*ニューアーク*と誤認されることが多い場合は、重み 5 を割り当てることでニューヨークをポジティブに評価できます。

```
<rule> id="airport">
    <one-of>
        <item>
            Boston
            <tag>out="Boston"</tag>
        </item>
        <item weight="5">
            New York
            <tag>out="New York"</tag>
        </item>
        <item>
            Newark
            <tag>out="Newark"</tag>
        </item>
    </one-of>
</rule>
```

**例 2**

たとえば、航空会社の予約コードに、英語のアルファベットで始まり、その後に 3 桁が続く文法があるとします。予約コードはほとんどの場合 B または D で始まりますが、B は P、D は T と誤認されることが多いことに気付きます。B と D をプラスにブーストできます。

```
<rule> id="alphabet">
    <one-of>
        <item>A<tag>out.letters+='A';</tag></item>
        <item weight="3.5">B<tag>out.letters+='B';</tag></item>
        <item>C<tag>out.letters+='C';</tag></item>
        <item weight="2.9">D<tag>out.letters+='D';</tag></item>
        <item>E<tag>out.letters+='E';</tag></item>
        <item>F<tag>out.letters+='F';</tag></item>
        <item>G<tag>out.letters+='G';</tag></item>
        <item>H<tag>out.letters+='H';</tag></item>
        <item>I<tag>out.letters+='I';</tag></item>
        <item>J<tag>out.letters+='J';</tag></item>
        <item>K<tag>out.letters+='K';</tag></item>
        <item>L<tag>out.letters+='L';</tag></item>
        <item>M<tag>out.letters+='M';</tag></item>
        <item>N<tag>out.letters+='N';</tag></item>
        <item>O<tag>out.letters+='O';</tag></item>
        <item>P<tag>out.letters+='P';</tag></item>
        <item>Q<tag>out.letters+='Q';</tag></item>
        <item>R<tag>out.letters+='R';</tag></item>
        <item>S<tag>out.letters+='S';</tag></item>
        <item>T<tag>out.letters+='T';</tag></item>
        <item>U<tag>out.letters+='U';</tag></item>
        <item>V<tag>out.letters+='V';</tag></item>
        <item>W<tag>out.letters+='W';</tag></item>
        <item>X<tag>out.letters+='X';</tag></item>
        <item>Y<tag>out.letters+='Y';</tag></item>
        <item>Z<tag>out.letters+='Z';</tag></item>
    </one-of>
</rule>
```