跳至主要内容

如何使用插件

Runtime Text To Speech 插件使用可下載的語音模型將文字合成為語音。這些模型在編輯器的插件設置中管理、下載,並打包供執行階段使用。按照下列步驟開始。

編輯器端

按照 此處 的描述,下載適合您項目的語音模型。您可以同時下載多個語音模型。

執行階段端

使用 CreateRuntimeTextToSpeech 函數創建合成器。確保保持對它的引用(例如,在 Blueprints 中作為單獨的變數或在 C++ 中使用 UPROPERTY),以防止它被垃圾回收。

在 Blueprints 中創建 Runtime Text To Speech 合成器的範例

合成語音

該外掛提供兩種文字轉語音合成模式:

  1. 一般文字轉語音:合成整個文字並在完成時返回完整音訊
  2. 串流文字轉語音:在生成音訊時逐塊提供音訊區塊,允許即時處理

每種模式支援兩種選擇語音模型的方法:

  • 依名稱:根據名稱選擇語音模型(建議用於 UE 5.4+)
  • 依物件:透過直接引用選擇語音模型(建議用於 UE 5.3 及更早版本)

一般文字轉語音

依名稱

Text To Speech (By Name) 函式在從 UE 5.4 開始的 Blueprints 中更加方便。它允許您從已下載模型的清單中選取語音模型。在 低於 5.3 的 UE 版本 中,此下拉清單不會出現,因此如果您使用的是更舊的版本,您需要手動遍歷 GetDownloadedVoiceModels 返回的語音模型陣列來選取所需的模型。

在 Blueprints 中使用 Text To Speech by Name 的範例

使用物件方式

Text To Speech (By Object) 函式適用於所有版本的 Unreal Engine,但它將語音模型顯示為資產參考的下拉選單,這較不直覺。此方法適合 UE 5.3 及更早版本,或者若您的專案因任何原因需要直接參考語音模型資產。

一個在 Blueprints 中使用 Text To Speech by Object 的範例

如果您已下載模型但看不到它們,請開啟 Voice Model 下拉選單,點擊設定(齒輪圖示),然後啟用 Show Plugin ContentShow Engine Content,讓模型可見。

串流文字轉語音

針對較長的文字或您想要在音訊生成時即時處理資料的情況,可以使用文字轉語音功能的串流版本:

  • Streaming Text To Speech (By Name) (StreamingTextToSpeechByName in C++)
  • Streaming Text To Speech (By Object) (StreamingTextToSpeechByObject in C++)

這些函數會在音訊生成時以區塊形式提供音訊資料,讓您無需等待整個合成完成即可立即處理。這對於即時音訊播放、即時視覺化等各種應用,或任何需要逐步處理語音資料的情境都非常實用。

依照名稱串流

Streaming Text To Speech (By Name) 函數的運作方式與一般版本類似,但會透過 On Speech Chunk 委派以區塊形式提供音訊。

在藍圖中使用 Streaming Text to Speech by Name 的範例

按物件串流

Streaming Text To Speech (By Object) 函式提供相同的串流功能,但改為接受語音模型物件參考。

在 Blueprints 中使用 Streaming Text To Speech by Object 的範例

音訊播放

對於常規(非串流)的文字轉語音,On Speech Result 委派會提供合成音訊作為浮點格式的 PCM 資料(在 Blueprints 中為位元組陣列,在 C++ 中為 TArray<uint8>),以及 Sample RateNum Of Channels

對於播放,建議使用 Runtime Audio Importer 外掛程式將原始音訊資料轉換為可播放的聲音波形。

以下是如何合成文字與播放音訊的 Blueprint 節點可能的外觀範例(可複製節點):

取消文字轉語音

您隨時可以透過在合成器實例上呼叫 CancelSpeechSynthesis 函數來取消正在進行的文字轉語音合成操作:

在藍圖中取消文字轉語音

當合成被取消時:

  • 合成過程將盡快停止
  • 任何進行中的回呼都會被終止
  • 完成委派(completion delegate)會以 bSuccess = false 和一個指示合成已被取消的錯誤訊息來呼叫
  • 所有為合成分配的資源都會被妥善清理

這對於長文本或當你需要中斷播放以開始新的合成時特別有用。

語者選擇

兩個文字轉語音功能都接受一個可選的語者 ID 參數,這在處理支援多個語者的語音模型時很有用。你可以使用 GetSpeakerCountFromVoiceModelGetSpeakerCountFromModelName 功能來檢查所選的語音模型是否支援多個語者。如果有多個語者可用,只需在呼叫文字轉語音功能時指定你想要的語者 ID 即可。有些語音模型提供了豐富的多樣性——例如,English LibriTTS 包含 超過 900 種不同的語者 可供選擇。

Runtime Audio Importer 外掛還提供額外功能,例如將音訊資料匯出到檔案、傳遞給 SoundCue、MetaSound 等。更多詳細資訊,請參閱 Runtime Audio Importer 文件