IAgentCharacter::Speak

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

HRESULT Speak(
   BSTR bszText,    // text to speak
   BSTR bszURL,     // URL of a file to speak
   long * pdwReqID  // address of a request ID
);

說出文字或聲音檔。

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

bszText

字元要說的文字。

bszURL

要用於口語輸出之音效檔案的 URL (或檔案規格) 。 這可以是標準音效檔案 (。WAV) 或語言增強的音效檔案 (。LWV) 。

pdwReqID

接收 Speak 要求識別碼的變數位址。

若要使用此方法搭配設定為使用文字轉換語音的字元, (TTS) 引擎;只要提供 bszText 參數即可。 您可以包含垂直線字元 (|) bszText 參數中指定替代字串,因此每次伺服器處理方法時,都會隨機播放不同的字串。 使用 Microsoft 代理程式字元編輯器編譯字元時,會定義 TTS 輸出的支援。

如果您想要使用字元的音效檔案輸出,請在 bszURL 參數中指定檔案的位置。 使用 HTTP 通訊協定來下載聲音檔案時,請使用 Prepare 方法,以確保檔案的可用性,再使用此方法。 您可以使用 bszText 參數來指定出現在字元文字方塊中的單字。 如果您指定語言增強的音效檔案 (。lWV) bszURL 參數,且未指定文字, bszText 參數會使用儲存在檔案中的文字。

Speak方法會使用播放的最後一個動畫來判斷要播放的說話動畫。 例如,如果您在Speak命令前面加上IAgentCharacter::P lay 「GestureRight」,伺服器將會播放GestureRight,然後播放GestureRight說話動畫。 如果最後播放的動畫沒有說話動畫,則 Microsoft Agent 會播放指派給字元的 Speaking 狀態的動畫。

如果您呼叫 Speak 且音訊通道忙碌中,則不會聽到字元的音訊輸出,但文字會顯示在文字方塊中。 文字方塊的 Enabled 屬性也必須是 True ,才能顯示文字。

Microsoft Agent 在文字方塊中自動斷字,使用空白字元來分隔單字,例如空格 (符和定位字元) 。 不過,它可能會中斷一個字,以符合球形。 在日文、中文和泰文等語言中,空格不會用來中斷單字,請在字元之間插入 Unicode 零寬度空白字元 (0x200B) ,以定義邏輯斷詞符號。

注意

在使用Speak方法之前,請先使用IAgentCharacterEx::SetLanguageID設定字元的語言識別項 (,以確保文字方塊內顯示適當的文字。

 

另請參閱

IAgentCharacter::P layIAgentBalloon::GetEnabledIAgentCharacter::P repare