IAgentCommand::SetVoice

[Microsoft 代理程式在 Windows 7 中已被取代,且在後續版本的 Windows 中可能無法使用。]

HRESULT SetVoice(
   BSTR bszVoice  // voice text setting for Command
);

設定CommandVoice屬性。

  • 傳回S_OK,表示作業成功。

bszVoice

BSTR,指定CommandVoice屬性的文字。

CommandVoice屬性和Enabled屬性必須設為可語音存取。 它也必須將其 VoiceCaption 屬性設定為出現在 [語音命令] 視窗中。 (如需回溯相容性,如果沒有 VoiceCaption,則會使用 Caption 設定。)

您提供的 BSTR 運算式可以包含方括弧字元 ([ ]) ,以指出選擇性單字和垂直線字元 (|) 表示替代字串。 替代專案必須以括弧括住。 例如,「 (hello [there] |hi) 「 會告訴語音引擎接受命令的 」hello「、」hello there「 或 」hi」。 請記得在括弧或括弧中的文字與括弧或括弧中的文字之間包含適當的空格。

您可以使用 star (*) 運算子來指定群組中包含的單字實例或加號 (+) 運算子來指定一或多個實例。 例如,下列文法會產生支援「試用此」、「請試用此」和「請試用此」的文法,且反復專案無限制地「請」:

   "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)+"

當您想要撰寫包含重複序列的文法時,重複運算子很有用,例如電話號碼或專案清單的規格:

   "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 [...]「 語音辨識引擎會比對此命令的片語,例如「請檢查郵件」或「檢查郵件。」。 省略號可以在字串內的任何位置使用。 不過,請小心使用這項技術,因為具有省略號的語音設定可能會增加不必要的相符專案。

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

設定CommandVoice屬性會自動啟用 Agent 的語音服務,讓接聽金鑰和接聽提示可供使用。 不過,它不會載入語音辨識引擎。

注意

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

 

另請參閱

IAgentCommand::GetVoiceIAgentCommand::SetCaptionIAgentCommand::SetEnabledIAgentCommands::AddIAgentCommands::Insert