[Microsoft代理程式從 Windows 7 開始已被取代,而且可能無法在後續版本的 Windows 中使用。]
HRESULT SetVoice(
BSTR bszVoice // voice text setting for Command
);
- 傳回S_OK,表示作業成功。
命令 必須具有其 Voice 屬性 ,並將 Enabled 屬性設定為可存取語音。 它也必須將其 VoiceCaption 屬性設定為出現在 Voice Commands Window中。 (為了回溯相容性,如果沒有 VoiceCaption,則會使用 Caption 設定。
您提供的 BSTR 運算式可以包含方括號字元 ([ ]) 來表示選擇性單字和垂直橫條字元 (|) 以表示替代字串。 替代項目必須以括弧括住。 例如,“(hello [there] |hi)“ 會告訴語音引擎接受命令的 「hello」、「hello there」 或 「hi」。 請記得在括弧或括弧中的文字與括弧或括弧中的文字之間包含適當的空格。
您可以使用 star • 運算符來指定群組中包含的單字零或多個實例,或加號 (+) 運算符來指定一或多個實例。 例如,下列文法會產生支援「try this」、」please try this“、”please try this“和 ”please try this“的文法,其中包含無限制的 ”please“ 反復專案:
"please* try this"
下列文法格式會排除 「try this」,因為 + 運算子至少定義一個 「please」 實例:
"please+ try this"
重複運算子會遵循優先順序的一般規則,並套用至緊接在前面的文字專案。 例如,下列文法會產生「紐約」和「紐約紐約」,但不會產生「紐約紐約」:
"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)+"
雖然運算符也可以搭配方括號(選擇性分組字元)使用,但這樣做可能會降低 Agent 處理文法的效率。
您也可以使用省略號 (...) 來支援 字,找出,也就是說,告訴語音辨識引擎忽略片語中這個位置所說的話(有時稱為 垃圾 字)。 因此,語音引擎只會辨識字串中的特定單字,而不論何時使用相鄰的單字或片語說話。 例如,如果您將此屬性設定為 “[...]check mail [...]“ 語音辨識引擎會比對 ”please check mail“ 或 ”check mail please“ 等詞組到此命令。 省略號可以在字串內的任何位置使用。 不過,請小心使用這項技術,因為具有省略號的語音設定可能會增加不想要的相符專案的可能性。
定義命令的字組和文法時,請務必確定您至少包含一個必要的單字;也就是說,請避免只提供選擇性單字。 此外,請確定該字只包含可發音的文字和字母。 對於數位,最好拼出單字,而不是使用數值表示法。 此外,請省略任何標點符號或符號。 例如,不要使用 “#10 $10 pizza!”,而是使用 “number one one ten dollar pizza”。 包含一個命令不可發音的字元或符號,可能會導致語音引擎無法編譯所有命令的文法。 最後,讓您的語音參數與您定義的其他語音命令相異。 命令的語音文法越相似,語音引擎就越有可能發生辨識錯誤。 您也可以使用信賴分數來更清楚地區分兩個可能有類似或類似聲音語音文法的命令。
設定 CommandVoice 屬性會自動啟用 Agent 的語音服務,讓接聽鍵和接聽提示可供使用。 不過,它不會載入語音辨識引擎。
注意
可用的文法功能可能取決於語音辨識引擎。 您可能想要與引擎廠商檢查,以判斷支援哪些文法選項。 使用 IAgentCharacterEx::SRModeID 來指定引擎。
另請參閱
IAgentCommand::GetVoice、IAgentCommand::SetCaption、IAgentCommand::SetEnabled、IAgentCommands::Add、IAgentCommands::Insert