Speak 方法

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

描述

針對指定的字元說出指定的文字或聲音檔。

語法

agent**。字元 (「CharacterID」) 。Speak** [Text], [Url]

部分 Description
Text 選擇性。 指定字元所顯示內容的字串。
Url 選擇性。 字串運算式,指定音訊檔案 (的位置。WAV 或 。LWV 格式) 。 當字元動畫資料也透過 HTTP 通訊協定) 擷取時,可以將位置指定為檔案 (,包括 UNC 路徑規格) 或 URL (。

 

備註

雖然 TextUrl 參數是選擇性的,但必須提供其中一個參數。 若要使用此方法搭配設定為只在文字方塊中說話的字元,或使用文字轉換語音 (TTS) 引擎,只要提供 Text 參數即可。 包含單字之間的空格,以在文字方塊中定義適當的斷詞符號,即使是傳統不包含空格的語言也一般。

您也可以 (包含垂直線字元 |) Text 參數中指定替代字串,讓伺服器在每次處理 方法時隨機播放不同的字串。

使用 Microsoft 代理程式字元編輯器編譯字元時,會定義 TTS 輸出的字元支援。 若要產生 TTS 輸出,必須先安裝相容的 TTS 引擎,才能呼叫此方法。 如需詳細資訊,請參閱 存取語音服務

如果您使用錄製的音效檔案 (。WAV 或 。LWV 格式只會) 字元的輸出,請在 Url 參數中指定檔案的位置。 此檔案規格可以包含本機 (絕對或相對) 或通用命名慣例, (UNC) 路徑。 檔案名不能包含美國字碼頁 1252 中未包含的任何字元。 不過,如果您使用 HTTP 通訊協定來存取字元動畫資料,請先使用 Get 方法來載入動畫,再呼叫 Speak 方法。 如需創意 的相關資訊 ,請參閱使用 Microsoft 語言資訊音效編輯工具 。LWV 檔案。

使用錄製的音效檔輸出時,您仍然可以使用 Text 參數來指定出現在字元文字方塊中的單字。 不過,如果您指定語言增強的音效檔案 (。LWV) Url 參數,且未指定文字方塊的文字, Text 參數會使用儲存在檔案中的文字。

您也可以使用 您在 Text 參數中包含的特殊標籤來變更語音輸出的參數。 如需詳細資訊,請參閱 Microsoft Agent 語音輸出標記

如果您宣告物件參考,並將其設定為此方法,則會傳回 Request 物件。 您可以使用這個來同步處理常式代碼的其他部分與字元的口語輸出,如下列範例所示:

   Dim SpeakRequest as Object
...
   Set SpeakRequest = Genie.Speak ("And here it is.")
...
   Sub Agent1_RequestComplete (ByVal Request as Object)
   ' Make certain the request exists
   If SpeakRequest Not Nothing Then
      ' See if it was this request
      If Request = SpeakRequest Then
         ' Display the message box 
         Msgbox "Ta da!"
      End If
   End If
   End Sub

您也可以使用 Request 物件來檢查特定錯誤狀況。 例如,如果您使用Speak方法來說話且未安裝相容的 TTS 引擎,伺服器會將 Request 物件的Status屬性設定為 「失敗」,並將Description屬性設定為「類別未註冊」或「未知或物件傳回錯誤」。 若要判斷您是否已安裝 TTS 引擎,請使用 TTSModeID 屬性。

同樣地,如果您有字元嘗試說話聲音檔案,而且檔案尚未載入或音訊裝置發生問題,伺服器也會將 Request 物件的 Status 屬性設定為「失敗」,並顯示適當的錯誤碼號碼。

您也可以在 Speak 文字中包含書簽聲控標籤,以同步處理常式代碼:

   Dim SpeakRequest as Object
...
   Set SpeakRequest = Genie.Speak ("And here \mrk=100\it is.")
...
   Sub Agent1_Bookmark (ByVal BookmarkID As Long)
   If BookmarkID = 100 Then
      ' Display the message box 
         Msgbox "Tada!"
      End If
   End Sub

如需書簽聲控標籤的詳細資訊,請參閱 語音輸出標籤

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

如果您呼叫 Speak 且音訊通道忙碌中,則不會聽到字元的音訊輸出,但文字會顯示在文字方塊中。

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

注意

文字方塊的 Enabled 屬性也必須是 True ,才能顯示文字。

 

注意

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

 

另請參閱

Bookmark 事件RequestStart 事件RequestComplete 事件