文法ファイルの構造
文法ファイルは、Speakeasy がファイルの内容を正しく解釈するための特定の構造です。
以下は、基本の文法ファイルの内容例です。
#BNF+EM V2.1;
/*
GRAMMAR: usa_states.bnf
説明:
これは米国の一部の州を認識する文法ファイルです。
何を言うことができますか?
次の任意のアメリカの州を言うことができます。
*/
!grammar usa_states;
!start <state>;
<state>:
アラバマ
| アラスカ
| コネチカット
| フロリダ
| アイダホ
| カンザス
| "ニュージャージー"
| "New York";
#BNF+EM V2.1;
各文法ファイルは、Speakeasy が文法ファイルを処理する方法を特定する #BNF+EM V1.1; などの文で始まる必要があります。 この行を修正する必要はありません。
/* */ または //
コメント (エンジンが無視する情報) を作成するには、行の先頭を // にするか、テキストを /* および */ マーカーで囲みます。 [説明] と [読み上げ可能な内容] セクションを編集し、文法ファイルに行う変更を説明できます。
!grammar [filename]
文法ファイルの名前を変更する場合は、コマンド !grammar
が新しいファイル名を使用する必要があります。 たとえば、ファイルの名前が VoicePick.bnf に変更された場合、コマンドは !grammar VoicePick; のようになります。
!start <state>;
!start コマンドは、文法を使用しているときに、使用可能になる文法の用語グループを指定します。上記の例では、エンジンは <state> ルールのすべての用語を待機します。 複数のルールが存在し、1つだけがコマンドによって参照された場合、すべての他のルールは無視されます。
<state>: アラバマ | コネチカット |...
<state>: と最後の ; の間の単語と語句は、文法が許可する用語です。各単語または語句は、 | (OR 記号) で区切る必要があります。 用語はすべて同じ行に一覧表示されるか、簡単に編集できるように垂直に配置されることができます。
New York、New Jersey などの他に類似している可能性がある用語の認識を改善するには、語句を"" (引用符) で囲みます。 Speakeasy エンジンは、強制的に、許可された語句をより詳細にユーザ応答に対して比較します。
複数のルール
一部の文法ファイルでは、主なルールがサブセクションに分割され、用語を管理しやすくなっています。 ファイルに複数のルールがある場合は、 !start 行で使用されるルールにすべて含まれることを確認してください。
!start <Speech>;
<Speech>: <YesNo> | <Maybe>;
<YesNo>: はい | いいえ;
<Maybe>: maybe;
この例では、<Speech> ルールには <YesNo> と <Maybe> ルールがあるため、エンジンは <YesNo> ルールと <Maybe> ルールの両方のすべての用語を待機します。
類似している用語
同じように聞こえる単語がある場合は、認識結果が低下する可能性があります。 認識を改善するには、長く固有のフレーズを使用します。 たとえば、「faster」や「fastest」などの類似した用語を使用する代わりに、「go faster」や「warp speed」などの語句に置き換えます。