ルールグラマ
グラマファイルを用いた音声認識
AmiVoice API Private で利用可能な「音声入力_ルール」エンジン(-a-rule-input-private)では、ユーザが作成したグラマファイルを用いて音声認識を行うことができます。たとえば、IVR システムで顧客情報の音声認識を行う場合に、会員番号の確認など、一定のルールに基づいて限られた単語のみが用いられる発話が期待される場面などに有効です。
グラマファイルフォーマット
「音声入力_ルール」エンジンでは、JSpeech Grammar Format(JSGF)で記述されたグラマファイル(JSGF グラマファイル)、または、Speech Recognition Grammar Specification(SRGS)で記述されたグラマファイル(SRGF グラマファイル)を使用することができます。これらのフォーマットを使用することで音声認識エンジンに認識して欲しいフレーズ(単語のセット)とタグ(フレーズが認識された時に付随情報としてアプリケーションに返される文字列)を限定的に記述することができます。新しくグラマファイルを作成する場合は JSGF グラマファイルを推奨します。 ここでは、2つのグラマファイルの仕様について簡単な説明をしますが、それぞれのグラマファイルの仕様の詳細については、以下の Web ページを参照してください。
- JSpeech Grammar Format: https://www.w3.org/TR/jsgf/
- Speech Recognition Grammar Specification Version 1.0: https://www.w3.org/TR/speech-grammar/
JSGF グラマファイル簡易仕様
JSGF グラマファイルは、以下の要素で構成されます。
ヘッダ情報
文字エンコーディング情報、および、国・言語情報を記述します。「ヘッダ情報」の形式は、以下の通りです。
#JSGF V1.0;
#JSGF V1.0 <文字エンコーディング情報>;
#JSGF V1.0 <文字エンコーディング情報> <国・言語情報>;
文字エンコーディング情報、および、国・言語情報は、記述を省略することができます。
例:
#JSGF V1.0;
#JSGF V1.0 MS932;
#JSGF V1.0 MS932 ja-JP;
#JSGF V1.0 UTF-8;
grammar 文
グラマ名を記述します。「grammar 文」の形式は、以下の通りです。
grammar 【グラマ名】;
グラマ名には、グラマファイル名からパス部分や拡張子部分を除いた文字列を指定するようにしてください。
例:
grammar Sample;
ルール定義文
実 際に音声認識エンジンに認識して欲しいフレーズとタグの定義を記述します。一つのグラマファイルの中に複数のルール定義文を記述することができます。 ルールには、public ルールと private ルールの二種類があります。public ルールは、それ単独で音声認識エンジンに認識して欲しいフレーズやタグを規定するものです。private ルールは、他のルールから参照されるものです。 public ルールの「ルール定義文」の形式は、以下の通りです。
public <【ルール名】> = 【ルール定義】;
private ルールの「ルール定義文」の形式は、以下の通りです。
<【ルール名】> = 【ルール定義】;
ルール定義については、ルール定義を参照してください。
例:
public <sample1> = おはよう <sample2>;
<sample2> = AmiVoice\あみぼいす;
ルール定義
ルール定義は、以下の要素で構成されます。
単語
音声認識エンジンにより認識して欲しい単語を記述します。単語は、直列ないし並列に記述することができます。単語の「表記」と「読み」は\(バックスラッシュ)で区切ります。一つの「表記」に対して複数の「読み」を記述する場合は、それぞれの読みを/(スラッシュ)で区切ります。形式は、以下の通りです。
| 記号 | 説明 |
|---|---|
( ) | 「集合化」を示す |
| | 「並列」を示す |
\ | 表記と読みの区切りを示す |
/ | 読みの区切りを示す |
直列の例:
・・・ AmiVoice\あみぼいす/あみ 音声認識\おんせいにんしき エンジン ・・・
並列の例:
・・・ ( AmiVoice\あみぼいす/あみ | 音声認識\おんせいにんしき | エンジン ) ・・・
単語の記述の仕方については、以下も確認してください。
- 「読み」 に指定できる文字列は、ひらがなと「ー」(長音記号)と「.」(ピリオド)のみです。
- 「読み」 を記述する際に、「ー」(長音記号)を使用して記述しても、「ー」(長音記号) を使用せずに記述しても、音声認識エンジン内部では、共に同じ「読み」 として扱います。この同一視ルールに基づき、重複するような単語の登録はしないようにしてください。
例:
「かー」=「かあ」 「きゃー」=「きゃあ」
「きー」=「きい」
「くー」=「くう」 「きゅー」=「きゅう」
「けー」=「けい」=「けえ」
「こー」=「こう」=「こお」 「きょー」=「きょう」=「きょお」など
- 「読み」 の中に「は」や「へ」を使用する場合、これらは 常に「h a」や「h e」として扱います。「w a」や「e」として扱われることはありません。
- 「読み」 を記述する際に、「.」(ピリオド)を使用することで、上記の同一視ルールを強制的に行わないような記述が可能になります。 例:
「やまのうち」 → “やまのーち”
「やまの.うち」 → “やまのうち”
「りくうんきょく」 → “りくーんきょく”
「りく.うんきょく」→ “りくうんきょく” など