文字轉語音技術在近年來取得了巨大進步,但合成語音與人類對話的自然節奏之間仍然存在著持續的差距。大多數 TTS 模型能產出清晰乾淨的語音,但聽起來明顯是人造的——發音完美,卻缺乏讓對話感覺真實的停頓、氣息聲、笑聲和音調變化。ChatTTS 直接針對這個差距,提供一個從頭開始為對話式語音而非旁白或公告而設計的開源模型。
由 2noise 團隊開發,ChatTTS 因其能夠產生聽起來真正像人類的語音而在開源社群中迅速獲得關注。該模型在超過 30,000 小時的對話音訊資料上進行訓練,刻意優先考慮自然的對話模式,而非大多數商業 TTS 資料集所偏好的原始錄音品質。其結果是一個會笑、會停頓、會逐漸消失,並以感覺非常自然的方式變化音高和節奏的模型。
該模型的架構建立在現代的基於 transformer 的神經編解碼器語言模型之上,理念上類似於 Bark 和 VALL-E 等模型,但專門針對網路上使用最廣泛的兩種語言——英文和中文——進行了最佳化。它在單一句子中混合使用英文和中文的能力,使其對於從語言學習到國際客服等雙語應用特別有價值。
ChatTTS 與其他 TTS 模型有何不同?
根本差異在於訓練資料的理念和韻律建模。大多數 TTS 系統是在有聲書錄音或專業旁白資料集上訓練的:乾淨、節奏良好且刻意清晰地發音。這些在朗讀時效果極佳,但在對話情境中聽起來不自然。
ChatTTS 在對話資料上訓練——真實的人類對話,包含所有的不完美、重疊、猶豫和富有表現力的變化。模型學會了重現這些模式,包括副語言元素,如笑聲、可聽見的呼吸聲和填充詞(「嗯」、「啊」),這些對於聽起來自然的對話至關重要,但通常會被 TTS 訓練語料庫過濾掉。
| TTS 模型 | 訓練資料 | 韻律控制 | 語言 | 自然度評分 | VRAM |
|---|---|---|---|---|---|
| ChatTTS | 30,000+ 小時對話 | 細粒度符號 | 英文、中文 | 非常高 | 4 GB |
| Bark (Suno) | 標記音訊 | 粗略(說話者提示) | 多語言 | 高 | 10+ GB |
| VALL-E (Microsoft) | 60,000 小時 | 說話者適應 | 英文 | 非常高 | 8+ GB |
| Piper TTS | 多樣化 | 有限(速度/音高) | 多語言 | 中等 | 1-2 GB |
| Edge / Azure TTS | 專業錄音室 | SSML 標記 | 100+ 語言 | 高 | 雲端 API |
ChatTTS 的韻律控制實際上如何運作?
ChatTTS 提供了開源 TTS 中最細粒度的韻律控制系統之一。韻律標記不需要複雜的 SSML 標記或後處理,而是直接作為特殊符號嵌入在文字中:
| 符號 | 效果 | 使用範例 |
|---|---|---|
[laugh] | 輕笑 | 「那太好笑了 [laugh] 我真不敢相信」 |
[uv_break] | 清音呼吸/停頓 | 「嗯 [uv_break] 讓我想想」 |
[v_break] | 濁音猶豫 | 「我不太確定 [v_break] 也許明天?」 |
[lbreak] | 長停頓以強調 | 「答案是 [lbreak] 四十二」 |
| 詞內冒號 | 延長母音 | 「我非: 常抱歉聽到這個」 |
這種基於符號的方法意味著開發人員可以編寫具有特定情感和節奏品質的對話,而不需要單獨的韻律預測模型。這些符號的功能類似於劇本中的舞台指示——它們告訴模型如何表演臺詞,而不僅僅是說什麼詞。
graph LR
A[帶韻律符號的輸入文字] --> B[ChatTTS 分詞器]
B --> C[Transformer 編碼器]
C --> D[神經編解碼器解碼器]
D --> E[離散音訊編碼]
E --> F[聲碼器 / 編解碼器解碼器]
F --> G[輸出波形:24kHz WAV]
H[說話者提示嵌入] --> CChatTTS 有哪些實際應用?
ChatTTS 以對話為重點,解鎖了傳統 TTS 力不從心的使用案例:
語音助手和聊天機器人受益最直接。客服機器人讀稿式回應聽起來機械化;使用 ChatTTS 則可以插入自然的猶豫、確認甚至同理的語調。語言學習應用程式可以使用 ChatTTS 產生逼真的雙語對話範例,具有真實的節奏。對話量大的有聲書旁白,當角色以自然的對話模式說話時會更具吸引力。內容創作——包括 YouTube 旁白、播客片段和社交媒體配音——可以從不像合成語音的語音中獲得製作價值。
| 應用 | 傳統 TTS | ChatTTS | 重要性 |
|---|---|---|---|
| 客服 IVR | 明顯合成 | 近乎人類對話 | 更高的客戶滿意度 |
| 語言學習應用 | 僵硬發音 | 自然對話流暢度 | 更好的聽力理解 |
| 遊戲 NPC 對話 | 預錄或機械化 | 動態、富有表現力的語音 | 降低製作成本 |
| 無障礙工具 | 功能正常但平淡 | 引人入勝、多變的表達 | 改善使用者體驗 |
| 內容創作 | 需要大量編輯 | 更少的後製 | 更快的製作週期 |
ChatTTS 的資源需求如何?
ChatTTS 設計用於實際部署。該模型在 GPU 推理時約需 4 GB VRAM,這個適中的佔用空間可以在大多數消費級 GPU 上執行。CPU 推理是可行的,但速度約慢 10-20 倍。
| 推理模式 | 硬體 | 速度(每秒音訊) |
|---|---|---|
| CUDA GPU | NVIDIA RTX 3060+ | ~0.3-0.5 倍即時 |
| CUDA GPU | NVIDIA RTX 4090 | ~2-3 倍即時 |
| Metal GPU | Apple M2/M3 | ~0.8-1.5 倍即時 |
| 僅 CPU | 現代多核心 | ~5-10 倍即時 |
該模型的 GitHub 儲存庫提供了簡單的 Python API。基本的推理腳本只需不到 20 行程式碼,讓非語音合成專家的開發人員也能輕鬆上手。
關於 ChatTTS 的常見問題
如何開始使用 ChatTTS
對於熟悉 Python 和 PyTorch 的人來說,在本地設定 ChatTTS 非常簡單:
- 從 github.com/2noise/ChatTTS 克隆儲存庫
- 安裝依賴項:
pip install ChatTTS torch torchaudio - 執行基本推理腳本:
import ChatTTS
import torchaudio
chat = ChatTTS.Chat()
chat.load_models()
texts = ["你好 [uv_break] 這是 ChatTTS 的測試 [laugh]"]
wavs = chat.infer(texts, use_decoder=True)
torchaudio.save("output.wav", wavs[0], 24000)
模型權重在首次載入時自動下載。完整的管線——從文字到可播放的 WAV 檔案——在支援 CUDA 的 GPU 上只需不到一分鐘即可執行。
sequenceDiagram
participant Dev as 開發者
participant API as ChatTTS API
participant Model as 預訓練模型
participant Output as WAV 檔案
Dev->>API: 匯入 ChatTTS 函式庫
Dev->>API: 呼叫 load_models()
API->>Model: 下載權重 (~2GB)
Model-->>API: 模型就緒
Dev->>API: 文字 + 韻律符號
API->>Model: 編碼與推理
Model-->>API: 音訊編解碼器幀
API->>Output: 解碼為波形
Output-->>Dev: 可播放的 WAV 檔案ChatTTS 的授權考量
ChatTTS 採用雙重授權方法。預設的開源授權是 AGPLv3,要求任何包含該模型權重的軟體在散佈時也必須使用相容的開源授權。對於非商業研究和個人專案,可以使用 CC BY-NC 4.0 授權,只要不用於商業目的即可免費使用。
正在建立商業應用程式的開發人員應仔細查閱儲存庫中的授權檔案,並考慮 AGPLv3 條款是否與其散佈模式相容。該儲存庫還包含一份用於商業授權查詢的單獨協議。
延伸閱讀
- ChatTTS GitHub 儲存庫 — 原始碼、模型權重和文件
- ChatTTS 官方示範頁面 — 互動式瀏覽器示範
- Hugging Face ChatTTS 模型卡 — 模型權重和設定
- Bark by Suno AI — 具有類似目標的替代開源 TTS
- 神經編解碼器語言模型解析 — ChatTTS 所屬 TTS 架構系列的基礎論文