IAgentCommands::SetVoice
[Microsoft エージェントは Windows 7 の時点で非推奨となり、以降のバージョンの Windows では使用できない場合があります。]
HRESULT SetVoice(
BSTR bszVoice // the Voice setting for Command collection
);
Command の Voice テキスト プロパティを設定 します。
- 操作が成功したことを示すS_OKを返します。
Commands コレクションには、音声テキスト プロパティが音声アクセス可能に設定されている必要があります。 また、文字のポップアップ メニューに表示するには、 VoiceCaption プロパティまたは Caption プロパティが [音声コマンド] ウィンドウに表示され、 Visible プロパティが True に設定されている必要があります。
指定する BSTR 式には、省略可能な単語を示す角かっこ文字 ([ ]) と、代替文字列を示す縦棒文字 (|) を含めることができます。 代替はかっこで囲む必要があります。 たとえば、"(hello [there] |hi)" は、コマンドに対して "hello"、"hello there"、または "hi" を受け入れるように音声エンジンに指示します。 角かっこまたはかっこに含める単語と、その他のテキストの間に適切なスペースを含める必要があります。 角かっこまたはかっこで囲まれたテキストと、角かっこまたはかっこ以外のテキストの間には、必ず適切なスペースを含めます。
star (*) 演算子を使用して、グループに含まれる単語のインスタンスを 0 個以上指定するか、プラス (+) 演算子を使用して 1 つ以上のインスタンスを指定できます。 たとえば、次の結果として、"try this"、"please this"、および "please try this" をサポートする文法が作成され、無制限の反復で "please" が返されます。
"please* try this"
次の文法形式では、+ 演算子で "please" のインスタンスが少なくとも 1 つ定義されているため、"try this" は除外されます。
"please+ try this"
繰り返し演算子は、通常の優先順位の規則に従い、直前のテキスト項目に適用されます。 たとえば、次の文法では "New York" と "New York York" になりますが、"ニューヨーク ニューヨーク" は行われません。
"New York+"
したがって、通常は、これらの演算子をグループ化文字と共に使用します。 たとえば、次の文法には "New York" と "New York New York" の両方が含まれます。
"(New York)+"
繰り返し演算子は、電話番号や項目リストの指定などの繰り返しシーケンスを含む文法を作成する場合に便利です。
"call (one|two|three|four|five|six|seven|eight|nine|zero|oh)*"
"I'd like (cheese|pepperoni|pineapple|canadian bacon|mushrooms|and)+"
演算子は角かっこ (省略可能なグループ化文字) でも使用できますが、これを行うと、エージェントによる文法処理の効率が低下する可能性があります。
省略記号 (...) を使用して 単語のスポッティングをサポートすることもできます。つまり、語句内のこの位置で話されている単語 ( ガベージ ワードとも呼ばれる) を無視するように音声認識エンジンに指示することもできます。 省略記号を使用すると、音声エンジンは、隣接する単語または語句で読み上げられたときに関係なく、文字列内の特定の単語のみを認識します。 たとえば、このプロパティを "[...] に設定するとします。チェックメール [...]" 音声認識エンジンは、"メールをチェックしてください" や "メールをチェックしてください" などの語句をこのコマンドに一致させます。 省略記号は、文字列内の任意の場所で使用できます。 ただし、省略記号で音声設定を行うと、不要な一致の可能性が高まる可能性があるため、この手法を使用する場合は注意してください。
コマンドの単語と文法を定義する場合は、必要な単語を少なくとも 1 つ含めます。つまり、省略可能な単語のみを指定しないでください。 さらに、単語に発音可能な単語と文字のみが含まれていることを確認します。 数値の場合は、あいまいな表現を使用するのではなく、単語をスペル アウトすることをお勧めします。 たとえば、"345" は適切な文法形式ではありません。 同様に、"IEEE" ではなく、"I triple E" を使用します。 また、句読点や記号は省略してください。 たとえば、"#1 $10 pizza!" の代わりに、"10 ドルの数字のピザ" を使用します。 1 つのコマンドに発音できない文字や記号を含めると、音声エンジンがすべてのコマンドの文法をコンパイルできなくなる可能性があります。 最後に、定義した他の音声コマンドから、音声パラメーターをできるだけ明確にします。 コマンドの音声文法の類似性が高いほど、音声エンジンで認識エラーが発生する可能性が高くなります。 また、信頼度スコアを使用して、類似または類似の音声文法を持つ可能性のある 2 つのコマンドをより適切に区別することもできます。
"text\pronunciation" の形式で文法単語に含めることができます。ここで、"text" は表示されるテキスト、"発音" は発音を明確にするテキストです。 たとえば、ユーザーが "first" と言うと、文法 "1st\first" が認識されますが、 Command イベントは "1st\first" というテキストを返します。 IPA (国際ふりがな) を使用して発音を指定することもできます。発音は、シャープ記号 ("#") で始まり、IPA の発音を表すテキストで開始します。
日本語音声認識エンジンでは、"かな\漢字" という形式で文法を定義し、代替発音を減らし、精度を高めることができます。 (下位互換性のために順序は逆になります)。これは漢字の正しい名前の発音に特に重要です。 ただし、かなを使わずに「漢字」を渡すだけでかまいません。その場合、エンジンは漢字に対して受け入れられるすべての発音を聞く必要があります。 かなだけを渡すこともできます。
グループ化または繰り返しの書式設定文字を使用するエラーを除き、Microsoft エージェントは、エンジン自体がエラーを報告しない限り、文法のエラーを報告しません。 文章校正で、エンジンがコンパイルに失敗したが、エンジンが処理せず、エラーとして返された場合、エージェントはエラーを報告できません。 そのため、クライアント アプリケーションでは 、Voice プロパティの文法を定義する際に注意する必要があります。
Note
使用できる文法機能は、音声認識エンジンによって異なります。 エンジンのベンダーにチェックして、サポートされている文法オプションを決定することができます。 特定のエンジンを使用するには、 SRModeID を使用します。
このプロパティの操作は、Microsoft エージェント サーバーの音声認識状態の状態によって異なります。 たとえば、音声認識が無効になっているか、インストールされていない場合、この関数はすぐには効果がありません。 ただし、セッション中に音声認識が有効になっている場合は、クライアント アプリケーションが入力アクティブのときにコマンドにアクセスできるようになります。
参照
IAgentCommands::GetVoice、 IAgentCommands::SetCaption、 IAgentCommands::SetVisible