IAgentCharacter::Speak

[自 Windows 7 起,Microsoft Agent 已被取代,後續版本的 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 Agent 字元編輯器編譯字元時,會定義 TTS 輸出的支援。

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

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

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

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

注意

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

 

另請參閱

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