共用方式為


Speak 方法

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

描述

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

語法

代理程式**。字元 (“CharacterID]。Speak** [Text], [Url]

部分 描述
文字 自選。 字串,指定字元所說的內容。
URL 自選。 指定音訊檔案位置的字串表達式 。。WAV 或 。LWV 格式)。 位置可以指定為檔案(包括 UNC 路徑規格)或 URL(當字元動畫數據也透過 HTTP 通訊協定擷取時)。

 

言論

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

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

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

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

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

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

如果您宣告對象參考並將它設定為此方法,則會傳回 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

您也可以使用 要求 物件來檢查特定錯誤狀況。 例如,如果您使用 Speak 方法來說話且未安裝相容的 TTS 引擎,則伺服器會將 Request 物件的 Status 屬性設定為 “failed”,且其 Description 属性為 “Class not registered” 或 “Unknown 或 object returned error”。 若要判斷您是否已安裝 TTS 引擎,請使用 TTSModeID 屬性。

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

您也可以在語音文字中包含書籤語音標記,以同步處理您的程式代碼:

   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 命令前面加上 PlayGestureRight”,伺服器將會播放 GestureRight,然後播放 GestureRight 說話動畫。 如果上一個播放的動畫沒有說話動畫,Agent 就會播放指派給角色 狀態的動畫。

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

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

注意

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

 

注意

使用 Speak 方法來確保文字批注方塊內顯示適當的文字之前,請先設定字元的語言識別碼(藉由設定字元的 LanguageID

 

另請參閱

Bookmark 事件RequestStart 事件RequestComplete 事件