文法ファイルの構造

文法ファイルは、Speakeasy がファイルの内容を正しく解釈するための特定の構造です。

関連する動画を観る (3:38)

以下は、基本の文法ファイルの内容例です。

#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」などの語句に置き換えます。