跳至主要内容

如何使用插件

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 Content 和 Show 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 Rate 和 Num Of Channels。

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

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

取消文字轉語音​

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

在藍圖中取消文字轉語音

當合成被取消時:

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

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

語者選擇​

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

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