共用方式為


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 要求標識碼的變數位址。

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

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

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

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

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

注意

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

 

另請參閱

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