[Microsoft代理程式從 Windows 7 開始已被取代,而且可能無法在後續版本的 Windows 中使用。]
HRESULT SetVoice(
BSTR bszVoice // the Voice setting for Command collection
);
- 傳回S_OK,表示作業成功。
Commands 集合必須將其 Voice text 屬性設定為可語音存取。 它也必須將它的 VoiceCaption 或 Caption 屬性設定為出現在 [語音命令] 視窗中,且其 Visible 屬性設定為 True,才能出現在字元的彈出視窗中。
您提供的 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“ 等詞組到此命令。 省略號可以在字串內的任何位置使用。 不過,請小心使用這項技術作為具有省略號的語音設定,可能會增加不想要的相符專案的可能性。
定義命令的文字和文法時,請至少包含一個必要的單字;也就是說,請避免只提供選擇性單字。 此外,請確定該字只包含可發音的文字和字母。 對於數位,最好拼出單字,而不是使用模棱兩可的表示法。 例如,“345” 不是良好的文法形式。 同樣地,請使用 「I triple E」。,而不是 」IEEE」。。 此外,請省略任何標點符號或符號。 例如,不要使用 “#10 $10 pizza!”,而是使用 “number one one ten dollar pizza”。 包含一個命令不可發音的字元或符號,可能會導致語音引擎無法編譯所有命令的文法。 最後,讓您的語音參數與您定義的其他語音命令相異。 命令的語音文法越相似,語音引擎就越有可能發生辨識錯誤。 您也可以使用信賴分數來更清楚地區分兩個可能有類似或類似聲音語音文法的命令。
您可以在文法字詞中包含 「text\發音」,其中 「text」 是顯示的文字,而 「發音」 是釐清發音的文字。 例如,當使用者說 「first」 時,會辨識文法 「1st\first」,但 Command 事件會傳回 “1st\first” 文字。 您也可以使用 IPA(國際語音字母)來指定發音,方法是以磅符號字元 (“#” ) 開頭髮音,然後代表 IPA 發音的文字。
對於日文語音辨識引擎,您可以使用「假名\漢字」的形式定義文法,減少替代發音並增加精確度。 (順序會針對回溯相容性而反轉。對於漢字中適當名稱的發音來說,這特別重要。 不過,您可以直接傳入「漢字」,而沒有假名,在這種情況下,引擎應該接聽漢字的所有可接受發音。 您也可以只傳入 Kana。
除了使用群組或重複格式化字元的錯誤之外,除非引擎本身報告錯誤,否則除非引擎本身報告錯誤,Microsoft 否則 agent 不會報告文法中的錯誤。 如果您在文法中傳遞引擎無法編譯的文字,但引擎不會處理並傳回為錯誤,Agent 就無法回報錯誤。 因此,用戶端應用程式必須小心定義 Voice 屬性的文法。
注意
可用的文法功能可能取決於語音辨識引擎。 您可能想要與引擎廠商檢查,以判斷支援哪些文法選項。 使用 SRModeID 來使用特定引擎。
此屬性的作業取決於 agent 伺服器語音辨識狀態Microsoft的狀態。 例如,如果語音辨識已停用或未安裝,則此函式不會立即生效。 不過,如果在會話期間啟用語音辨識,當其用戶端應用程式為輸入作用中時,命令就會變成可存取。
另請參閱
IAgentCommands::GetVoice、IAgentCommands::SetCaption、IAgentCommands::SetVisible