Voice 屬性 (Commands 物件)

[從 Windows 7 開始,Microsoft Agent 已被取代,而且在後續版本的 Windows 中可能無法使用。]

描述

會傳回或設定傳遞至語音引擎文法的文字, (辨識) 。

語法

agent**。字元 (「CharacterID」) 。Commands.Voice** [ = string]

部分 描述
string 字串運算式,對應至語音引擎用來辨識此命令的字組或片語。

 

備註

如果您未提供此參數,則 Commands物件的VoiceCaption不會出現在 [語音命令] 視窗中。

您提供的字串運算式可以包含方括弧字元 ([ ]) ,以指出選擇性單字和垂直線字元 (|) 表示替代字串。 替代專案必須以括弧括住。 例如,「 (hello [there] |hi) 「 會告訴語音引擎接受命令的 」hello「、」hello there「 或 」hi」。 請記得在括弧或括弧中的文字與不在括弧或括弧中的文字之間包含適當的空格。 您可以使用 star (*) 運算子來指定群組中包含的單字零或多個實例,或加號 (+) 運算子來指定一或多個實例。 例如,下列文法會產生支援「try this」、「please try this」、「please try this」、「please try this」、with unlimited iterations of 「please」 的文法:

   "please* try this"

下列文法格式會排除 「try this」,因為 + 運算子會定義至少一個 「please」 實例:

   "please+ try this"

重複運算子會遵循優先順序的一般規則,並套用至緊接在前面的文字專案。 例如,下列文法會產生 「New York」 和 「New York York」,而不是 「New York New 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)+"

雖然運算子也可以搭配選用的方括弧群組字元使用,但這樣做可能會降低 Agent 處理文法的效率。

您也可以使用省略號 (...) 來支援 字組辨識,也就是說,告訴語音辨識引擎忽略片語中這個位置所說的文字 (,有時稱為 垃圾 字組) 。 因此,語音引擎只會辨識字串中的特定單字,而不論使用連續的單字或片語讀出。 例如,如果您將此屬性設定為 「[...]check mail [...]「,語音辨識引擎會比對此命令的片語,例如 「請核取郵件」或「檢查郵件請」。 省略號可以在字串內的任何位置使用。 不過,請小心使用這項技術,因為它可能會增加不必要的相符專案的可能性。

定義命令的文字文法時,請至少包含一個必要字組;也就是說,請避免只提供選擇性字組。 此外,請確定單字只包含可讀字和字母。 對於數位而言,最好是拼字,而不是使用模棱兩可的標記法。 例如,「345」 不是良好的文法格式。 同樣地,不要使用 「IEEE」,而是使用 「I triple E」。 此外,請省略任何標點符號或符號。 例如,不要使用 「the #1 $10 pizza!」,而是使用 「the number one ten dollar pizza」。 包含一個命令不可發音的字元或符號,可能會導致語音引擎無法編譯您所有命令的文法。 最後,讓您的語音參數與您定義的其他語音命令盡可能不同。 命令的語音文法之間的相似度愈大,語音引擎就越有可能產生辨識錯誤。 您也可以使用信賴分數來更清楚地區分兩個可能具有類似或類似音效語音文法的命令。

您可以在文法文字中包含 「text\發音」形式,其中 文字 是顯示的文字, 發音 是厘清發音的文字。 例如,當使用者說「first」時,會辨識文法 「1st\first」,但 Command 事件會傳回文字 「1st\first」。 您也可以使用 IPA (International Phonetic Alphabet) 來指定發音,方法是以井字元號字元 (「#」) 開始發音,然後包含代表 IPA 發音的文字。

對於日文語音辨識引擎,您可以用 「kana\kanji」 的形式定義文法,減少替代發音並增加精確度。 (回溯相容性的排序會反轉。) 這對於漢字中適當名稱的發音特別重要。 不過,您可以只傳入沒有假名的漢字,在此情況下,引擎應該接聽漢字的所有可接受發音。 您也可以只傳入 Kana。

另請注意,對於日文、中文和泰文等語言,請勿使用空白字元來指定斷詞符號,請插入 Unicode 零寬度空白字元 (0x200B) 表示邏輯斷詞符號。

除了使用群組或重複格式字元的錯誤之外,除非引擎本身報告錯誤,否則 Agent 將不會報告文法中的錯誤。 如果您在文法中傳遞無法編譯引擎的文字,但引擎不會處理並傳回為錯誤,Agent 就無法報告錯誤。 因此,用戶端應用程式必須仔細定義 Voice 屬性的文法。

注意

可用的文法功能可能取決於語音辨識引擎。 您可能想要洽詢引擎的廠商,以判斷支援的文法選項。 使用 SRModeID 來使用特定的引擎。

 

此屬性的作業取決於伺服器語音辨識屬性的狀態。 例如,如果語音辨識已停用或未安裝,此屬性就不會有任何作用。