Select Page
Qwen3-TTS 是什麼?音色設計補上開源 TTS 最大短板

Qwen3-TTS 是什麼?音色設計補上開源 TTS 最大短板

Qwen3-TTS 這次真正補上的,不只是「又一個開源 TTS 模型」,而是把 AI 語音從單純文字轉語音,往「可以設計聲音」推了一步。對創作者來說,這個差異很大:以前多半是找一段參考音頻去克隆,現在可以先用文字描述你想要的音色,再生成符合角色感的聲音。

我會把 Qwen3-TTS 放在本地 TTS 工具鏈的一個重要位置:它不是完全取代 Index TTS2,也不是只適合做 demo,而是補上了「音色捏臉」這個創作端很需要的能力。尤其當它被包進 ComfyUI 節點後,對做短片、角色對白、旁白、多角色音頻工作流的人會更順手。

如果你之前已經看過 VoxelCPM 本地 TTS本地即時語音 Agent,Qwen3-TTS 可以理解成另一條更偏「創作型語音生成」的路線。

先講結論:Qwen3-TTS 最值得看的是音色設計

Qwen3-TTS 的幾個核心能力可以拆成三塊:音色設計、音色克隆、自訂聲音與情緒控制,音色克隆大家比較熟,給一段參考音頻,再讓模型生成相似聲音;真正新鮮的是音色設計,你可以用提示詞描述聲音,例如年齡、性別、顆粒感、情緒、語氣、角色氣質。

這件事對內容創作很實用。做科幻短片時,你可以要一個「低沉、沙啞、有壓迫感的中年男聲」;做兒童故事時,可以要「明亮、溫柔、帶笑意的年輕女聲」;做遊戲角色時,可以先把聲音當成角色設定的一部分,而不是等拿到參考音頻後才開始克隆。

這也是 Qwen3-TTS 和 Index TTS2 的關鍵差異,Index TTS2 在參考音頻和情緒控制上仍然很靈活,但 Qwen3-TTS 把「從文字描述生成音色」這件事做成主能力,兩者不是誰完全取代誰,而是切入點不同。

Qwen3-TTS 的三種用法

從 ComfyUI 節點 README 來看,HAIGC 的 Comfyui-HAIGC-QwenTTS 把 Qwen3-TTS 包成幾個常用節點,最核心的是模型載入、聲音設計、聲音克隆、自訂聲音、角色預設保存與多角色對話合成。

用法需要的模型適合場景限制
聲音設計VoiceDesign用文字描述角色聲線,先捏出音色需要會寫清楚聲音提示詞
聲音克隆Base用參考音頻生成相似聲音需要參考音頻與對應文本
自訂聲音CustomVoice使用預設說話人或提示詞控制聲音情緒與音色控制受模型能力限制
多角色對話搭配角色預設短劇、廣播劇、遊戲 NPC 對話要管理角色名與預設檔

這裡有一個實作上很重要的細節:模型要放在 `ComfyUI/models/qwen-tts/` 下面,節點不會幫你自動下載模型。也就是說,這不是裝好節點就直接能跑,還要自己把 Qwen3-TTS 的對應模型資料夾放到正確位置。

ComfyUI 節點讓它更像創作工作流

如果只看 TTS CLI,Qwen3-TTS 會比較像模型測試。但進到 ComfyUI 節點後,它就開始有工作流價值。你可以把文案、角色聲音、參考音頻、角色預設、多角色對話接成流程,最後輸出可用音頻。

這對影片創作者尤其實用。前面整理 OpenMontage 本地 AI 影片工作流時也提過,影片生成不是只有畫面,旁白、角色語音、字幕和音效都是完整作品的一部分。Qwen3-TTS 這類工具的價值,就是把聲音也放進可控流程裡。

站上之前也整理過 ComfyUI 本機部署工作流。圖像生成和 TTS 看起來是不同領域,但 ComfyUI 的優勢都是一樣的:把模型變成節點,讓創作者能用流程管理。

音色設計:最像「聲音捏臉」的功能

音色設計最適合用在你還沒有參考音頻,但已經知道角色感的情境。比方說,你想要一個「沙啞、低沉、帶警告意味的戰士聲音」,傳統聲音克隆會問你:參考音頻在哪裡?Qwen3-TTS 的 VoiceDesign 則是讓你先用文字描述聲音。

這對角色型內容很關鍵。短劇、遊戲、動畫、解說頻道,都常常不是缺一個真實人聲,而是缺一個「符合角色設定」的聲音。音色設計讓 TTS 從工具變成創作材料,這是我覺得 Qwen3-TTS 最值得測的地方。

但提示詞也會變成新門檻。你不能只寫「好聽的聲音」,最好描述清楚年齡、性別、音域、情緒、語速、質感、場景。例如:

A deep, raspy middle-aged male voice, slow pace, serious and threatening tone, cinematic fantasy character.

中文也可以寫,但英文描述通常比較容易控制細節。之後如果要大量產角色聲音,我會建議把常用聲音提示詞整理成自己的 prompt library。

聲音克隆:自然度不錯,但仍要看參考音頻品質

Qwen3-TTS 的聲音克隆需要參考音頻,也最好提供參考音頻對應的文本,這點和很多 zero-shot voice cloning 工具一樣:參考音頻越乾淨,語速和情緒越穩,克隆結果越容易自然。

這裡我會提醒兩件事。第一,不要拿太吵、太短、音量忽大忽小的音頻當參考;第二,克隆聲音牽涉聲紋與授權問題,不要拿真人聲音去做未經同意的商業使用,工具越方便,這條線越要自己守住。

如果你主要目標是語音克隆,可以把 Qwen3-TTS 和 VoxCPM 語音克隆一起測,不要只看單句 demo,要測長句、情緒、停頓、重複生成穩定性。

情緒控制:Qwen3-TTS 和 Index TTS2 的取捨

Qwen3-TTS 可以透過自訂聲音與預設說話人做某種程度的情緒與語氣控制,但這裡要小心期待值,它的自訂情緒方式更偏「用預設或提示詞控制」,而 Index TTS2 在某些情境下則可以直接用參考音頻帶出情緒,操作上會更直覺。

所以我不會說 Qwen3-TTS 全面打掉 Index TTS2。更準確的說法是:

  • 你想從文字描述直接設計聲音,Qwen3-TTS 更值得測。
  • 你有很好的參考音頻,想保留聲音和情緒,Index TTS2 仍然有優勢。
  • 你要做 ComfyUI 影音工作流,Qwen3-TTS 節點會更容易串進流程。
  • 你要穩定量產,兩者都要測長文本、批次生成和錯誤率。

安裝與使用時先注意這幾點

  1. 模型要自己下載:節點預設讀 `ComfyUI/models/qwen-tts/`,資料夾命名要和模型後綴一致。
  2. 先確認模型類型VoiceDesign、Base、CustomVoice 對應的功能不同,載錯模型就會覺得節點怪怪的。
  3. FP16 / FP32 和 CUDA 要看環境GPU 跑得快,但顯存、驅動、torch 版本都會影響穩定性。
  4. 角色預設要管理好如果要做多角色對話,角色名、.pt 預設檔和對白格式最好固定。
  5. 節點早期可能有 bug遇到預設節點跑不起來,先看 GitHub issue 和最新 commit,不要急著判定模型不可用。

如果你只是想快速試用,也可以先用 ModelScope 的 Qwen3-TTS demoRunningHub 工作流感受效果。真正要放進自己的內容生產流程,再回頭做本地 ComfyUI 部署。

適合誰?

我覺得 Qwen3-TTS 特別適合四種人。

  • 短片創作者。需要快速做旁白、角色音、警告音、廣播音,不想每次找真人錄音。
  • 遊戲與互動敘事作者。多角色對話、NPC 聲音、角色預設會很有用。
  • ComfyUI 工作流玩家。想把聲音生成接進圖像、影片、字幕和後製流程。
  • 本地 AI 研究者。想比較 Qwen3-TTS、Index TTS2、VoxCPM、ChatTTS 等不同開源 TTS 路線。

如果你只需要最簡單的文字轉語音,反而不一定要上這套。Qwen3-TTS 的價值在於音色設計、角色聲音與工作流整合,而不是單純把一段文字念出來。

資源整理

Qwen3-TTS 補上的是創作者最想要的控制感

Qwen3-TTS 最讓我在意的,不是它又多會念文字,而是它讓聲音開始可以被設計。對內容創作來說,聲音不是最後補上的配件,而是角色、情緒和敘事的一部分。

它目前還不是無腦安裝、無腦量產的工具。模型要自己放、節點要確認版本、不同功能要對應不同模型,ComfyUI 工作流也需要一點整理。但方向很明確:TTS 正在從「文字轉語音」進化成「聲音設計工具」。

一句話總結:Index TTS2 仍然香,但 Qwen3-TTS 把音色捏臉這塊補起來了。之後做角色語音、短劇旁白、多角色對話,我會把它列入優先測試清單。

Hugging Face speech-to-speech:本地即時語音 Agent 怎麼跑?

Hugging Face speech-to-speech:本地即時語音 Agent 怎麼跑?

Hugging Face 的 speech-to-speech 真正有趣的地方,不只是「本地 AI 語音聊天」這句話,而是它把即時語音 Agent 拆成一條清楚的工程管線:VAD 偵測你什麼時候開始和結束說話,STT 把語音轉成文字,LLM 產生回應,TTS 再把文字變回聲音。

這條路線的價值很直覺:如果你不想把麥克風聲音、私人對話、公司資料一路送到雲端,那就把語音 Agent 搬回自己的機器。代價也很明顯:你要處理 Python、FFmpeg、CUDA、模型下載、本地 LLM server、TTS 後端、瀏覽器端 WebSocket。這不是「安裝一個 App 就結束」的工具。

如果你之前看過 VoxelCPM 本地 TTS,這篇可以當成下一步:TTS 只是讓 AI 開口,speech-to-speech 則是把「聽、想、說」接成一個即時循環。

先講結論:它不是語音模型,而是一條可替換的語音 Agent 管線

huggingface/speech-to-speech 的 README 把架構講得很清楚:這是一條低延遲、模組化的 voice-agent pipeline,順序是 VAD → STT → LLM → TTS,並且透過 OpenAI Realtime-compatible WebSocket API 對外提供服務。

也就是說,你可以把支援 OpenAI Realtime 協議的 client 指到本機 server。

這個設計比單純做一個 demo 更有意思,因為每一段都能換。

STT 可以用 Parakeet、Whisper、Faster Whisper、MLX Whisper 或 Paraformer;LLM 可以接 OpenAI-compatible provider,也可以接 vLLM、llama.cpp、llama-server;TTS 可以用 Qwen3-TTS、Kokoro、Pocket TTS、ChatTTS 或 MMS TTS。

換句話說,它的重點不是某個模型最強,而是把語音 Agent 做成可插拔架構。

這和 OpenWork / OpenCode 工作台的方向有點像:真正可長期使用的 AI 工具,不應該只綁死在單一供應商或單一模型。

Speech-to-speech 和傳統語音翻譯有什麼差別?

Hugging Face Audio Course 裡對 speech-to-speech translation 的說明很適合拿來釐清概念。

傳統機器翻譯是文字到文字,speech-to-speech 則是語音到語音。最常見的做法是串接:先把語音轉成文字,再做翻譯或生成,最後合成語音。

它也提醒一個很重要的問題:管線越長,錯誤越會累積,延遲也越高。

ASR 認錯一個字,後面的 LLM 可能照著錯字理解;LLM 回答太長,TTS 就要等更久;TTS 聲音不自然,最後體驗還是會掉下來。

所以本地即時語音 Agent 的關鍵不是只看「能不能講話」,而是看四件事:

  • 語音辨識是不是準,尤其是中文、口音、背景噪音。
  • LLM 回應是不是夠快,不要讓人等到出戲。
  • TTS 聲音是不是自然,長時間聽會不會疲勞。
  • 整條管線的延遲是不是穩定,而不是偶爾順、偶爾卡。

官方預設路線:先跑起 realtime server

官方 quickstart 很短:

pip install speech-to-speech
export OPENAI_API_KEY=...
speech-to-speech


跑起來之後,server 會在本機開一個 OpenAI Realtime 相容端點,常見位置是:
ws://localhost:8765/v1/realtime

預設路線會用本地 STT、本地 TTS,再把 LLM 接到 OpenAI-compatible API。你如果想讓 LLM 也留在本機,可以用 llama.cpp 啟動本地模型 server,再把 `responses_api_base_url` 指到本機。

speech-to-speech \
  --model_name "ggml-org/gemma-4-E4B-it-GGUF" \
  --responses_api_base_url "http://127.0.0.1:8080/v1" \
  --responses_api_api_key ""


這裡的重點是 OpenAI-compatible。只要你的本地 LLM server 能提供類似 OpenAI API 的介面,它就有機會接進來。這也是為什麼 Ollama 遠端連線和本地 OpenAI-compatible server 的設定很重要:語音只是入口,真正回答問題的是後面的 LLM。

Windows 實作路線:不是難,是零件很多

核心流程可以簡化成這樣:

  1. 裝 Python 3.11、Git、FFmpeg。
  2. 建立 `C:\s2s` 之類的資料夾,開 venv。
  3. 安裝 `speech-to-speech`。
  4. 用 llama.cpp 跑本地 Qwen 模型,開在 `http://127.0.0.1:8080/v1`。
  5. 啟動 speech-to-speech,把 STT 指到 Whisper、LLM 指到本地 server、TTS 指到 Qwen3-TTS。
  6. 開網頁 client,WebSocket 指到 `localhost:8765`。

這裡最容易踩坑的是 FFmpeg 和 winget。留言裡有人遇到 `winget` 找不到,這通常代表 Windows App Installer / winget 沒裝好,或 PowerShell 環境找不到它。這時候不要卡在同一條命令,可以改成手動下載 FFmpeg,或先修好 winget,再重新開 PowerShell。

架構表:每一段都可以替換,但每一段也都會出事

階段作用常見選擇容易卡住的地方
VAD判斷使用者何時開始/停止說話Silero VAD背景噪音、切句太早或太晚
STT語音轉文字Parakeet、Whisper、Faster Whisper中文辨識、口音、GPU/CPU 速度
LLM理解問題並產生回應OpenAI-compatible API、llama.cpp、vLLM、Ollama 類服務延遲、上下文長度、模型能力
TTS文字轉語音Qwen3-TTS、Kokoro、Pocket TTS、ChatTTS聲音自然度、CUDA wheel、中文品質
Client麥克風輸入與播放Realtime WebSocket client、網頁呼吸球介面瀏覽器權限、WebSocket 位置、服務啟動順序

這張表就是我對本地語音 Agent 的看法:模組化很香,但你不能只看成功 demo 任一段延遲太高、模型太大、依賴裝錯、WebSocket 指錯,都會讓整體體驗掉下來。

4GB 顯存、4090、CPU:期待值要分開看

如果你只是想體驗,本地小模型加 CPU/GPU 混跑可以試;如果你想每天使用,就要認真看顯卡、VRAM、記憶體、模型大小與量化格式。這部分可以搭配 AI 工作站顯卡選購那篇看,因為語音 Agent 不是只吃一個模型,而是一整條 pipeline。

本地部署值不值得?

安裝太複雜、Python 依賴一直重裝、免費雲端語音也能用、中文場景不一定比微信等現成工具舒服。

我會這樣判斷:

  • 如果你只想偶爾語音聊天,雲端 App 更省事。
  • 如果你在意隱私、離線、可控模型,本地 speech-to-speech 才有意義。
  • 如果你要接自己的 Agent 或自動化流程,OpenAI Realtime 相容 API 很有價值。
  • 如果你不想處理依賴,等整合包或 Docker / 一鍵腳本會比較舒服。

有留言建議做整合包,把 Python、虛擬環境、依賴、模型檔都打包好。這個方向很務實。語音 Agent 要走向一般使用者,最重要的可能不是模型再強一點,而是安裝流程少掉一半。

接進 Hermes、OpenWork 或自己的 Agent:語音只是入口

有人問如果部署在 Hermes 裡,是不是就不用打字了。方向是對的,但要分清楚:speech-to-speech 解決的是語音輸入與語音輸出,Agent 真正能不能工作,還要看後面的工具調用、上下文、記憶、權限與任務執行。

也就是說,語音不是 Agent 的全部,只是更自然的控制入口。你可以想像之後用語音叫本地 Agent 幫你查資料、改檔案、跑腳本、操作工作流,但這需要像 OpenWorkHermes Agent 這類工作台或 runtime 來承接任務。

真正有用的組合會是:speech-to-speech 負責「聽和說」,Agent runtime 負責「做事」,本地 LLM / 工具 / MCP 負責「連到你的資料和系統」。語音只是讓人更容易下指令,不能替代完整的任務架構。

資源整理

本地即時語音 Agent 很香,但現在還偏工程師玩具

speech-to-speech 讓本地語音 Agent 的架構變得很清楚:你可以把 VAD、STT、LLM、TTS 串起來,對外提供 OpenAI Realtime 相容 API,再用網頁或其他 client 連進來。這條路很有想像空間,尤其適合隱私敏感、離線使用、機器人、客服、語言練習、自建 AI 助手。

但我不會把它包裝成人人都該裝。現階段它還需要處理太多環境問題,Windows 下尤其明顯。真正適合的人,是願意花時間把本地模型、音訊依賴、GPU、WebSocket 和 Agent runtime 串起來的人。

一句話總結:本地即時語音不是為了取代手機上的語音助手,而是為了把「能聽、能想、能說」這個入口,接到你自己的模型、資料和工作流上。這件事如果跑順,會比單純聊天更有價值。

FAQ

speech-to-speech 是什麼?

speech-to-speech 是 Hugging Face 的開源語音 Agent 管線,透過 VAD、STT、LLM、TTS 四個階段,把使用者語音轉成模型回應,再合成語音輸出。

它可以完全本地運行嗎?

可以,但需要把 STT、LLM、TTS 都換成本地後端,例如 Whisper、llama.cpp 或其他 OpenAI-compatible 本地 LLM server,以及 Qwen3-TTS 等本地語音合成模型。

為什麼不用雲端語音助手就好?

如果只是日常聊天,雲端語音助手更省事。本地方案的價值在於隱私、離線、可控模型、可接自有資料與 Agent 工作流。

不用雲端!免費語音克隆神器 VoxCPM|30種語言+方言,離線生成專業播音聲音

不用雲端!免費語音克隆神器 VoxCPM|30種語言+方言,離線生成專業播音聲音

🧠 什麼是 VoxCPM?

VoxCPM 是由 OpenBMB 推出的新一代語音生成模型,主打:

👉 超低樣本聲音克隆(只需5秒)
👉 完全本地運行(無需雲端)
👉 多語言+多方言支持(30+)

簡單講一句話:

👉 它就是「語音界的 Stable Diffusion」


🚀 核心特色

🎙️ 1️⃣ 極致聲音複製(5秒搞定)

只需要一段短短語音(約5秒):

  • 可複製音色
  • 模擬說話風格
  • 保留情緒與語氣

👉 幾乎達到「真人等級」


🎚️ 2️⃣ 專業播音員等級輸出

生成語音具備:

  • 清晰度高(接近錄音室品質)
  • 節奏自然
  • 可長文本生成(Podcast / 有聲書)

👉 可直接商用(需注意授權)


🌏 3️⃣ 多語言+方言(重點)

支援:

  • 中文(普通話)
  • 台語(閩南語)
  • 廣東話
  • 四川話
  • 英文 / 日文 / 韓文 等

👉 這點直接屌打很多 TTS 工具


🔒 4️⃣ 完全本地運行

不像:

  • ElevenLabs(雲端)
  • PlayHT(雲端)

VoxCPM:

✅ 無需上傳聲音
✅ 不怕資料外洩
✅ 無 API 費用

⚙️ 安裝教學(本地部署)

📦 硬體需求(建議)

  • GPU:RTX 3060 以上(最佳)
  • RAM:16GB+
  • OS:Ubuntu / Windows(WSL)

🧩 Step 1:下載專案

官方 Repo👇
👉 VoxCPM GitHub repository


🧩 Step 2:安裝環境


🧩 Step 3:下載模型

依照 repo 指示下載:

  • 主模型(Urv5)
  • 聲音模型

🧩 Step 4:執行推理


🧩 Step 5:使用WEBUI

# WebUI 
python lora_ft_webui.py   # http://localhost:7860

🧠 進階玩法(你可以做什麼)

💰 商業應用

  • AI 配音 SaaS
  • 有聲書生成平台
  • YouTube 自動旁白

🧪 高階玩法

  • 聲音角色庫(多人 voice profile)
  • Telegram 語音 Bot
  • 客製客服語音

⚠️ 注意事項(很重要)

⚙️ 技術限制

  • 中文效果最佳
  • 部分方言仍在優化
  • GPU 需求較高

🆚 VoxCPM vs 其他 TTS

工具本地聲音克隆方言成本
VoxCPM免費
ElevenLabs普通$$$
PlayHT普通$$$

👉 結論:
本地部署 = VoxCPM 完勝

參考資料

官方網站

移除背景聲音工具(UVR5)

ChatTTS-完整使用指南

ChatTTS-完整使用指南

免費且超強大的 AI TTS,文字轉語音模型+工具,有許多語氣的控制,也可以很精準的寫程式控制效果,是RD眼中好用的Local端開源的TTS

特色說明

1.大規模的數據:10萬小時的訓練資料,現在開源的是4小時的版本

2.專用設計:專門對於對話情境、視頻介紹的情境所設計的模型

3.開源特性:可以很簡單的整合到你的WEB中

4.支持語氣:oral, laugh, break

安裝前準備

python 3.10

CUDA

GIT

gradio

安裝說明

github 複製

git clone https://github.com/2noise/ChatTTS
cd ChatTTS

安裝依賴

pip install --upgrade -r requirements.txt

執行 webui

python examples/web/webui.py

利用 CLI

python examples/cmd/run.py "Your text 1." "Your text 2."

要整合在 python 程式碼中,可以安裝 PyPI

pip install ChatTTS
pip install git+https://github.com/2noise/ChatTTS
pip install -e .

整合程式碼

###################################
# Sample a speaker from Gaussian.

rand_spk = chat.sample_random_speaker()
print(rand_spk) # save it for later timbre recovery

params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb = rand_spk, # add sampled speaker 
    temperature = .3,   # using custom temperature
    top_P = 0.7,        # top P decode
    top_K = 20,         # top K decode
)

###################################
# For sentence level manual control.

# use oral_(0-9), laugh_(0-2), break_(0-7) 
# to generate special token in text to synthesize.
params_refine_text = ChatTTS.Chat.RefineTextParams(
    prompt='[oral_2][laugh_0][break_6]',
)

wavs = chat.infer(
    texts,
    params_refine_text=params_refine_text,
    params_infer_code=params_infer_code,
)

###################################
# For word level manual control.

text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text,  params_infer_code=params_infer_code)
"""
In some versions of torchaudio, the first line works but in other versions, so does the second line.
"""
try:
    torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]).unsqueeze(0), 24000)
except:
    torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]), 24000)

V3版本

音色庫

https://www.modelscope.cn/studios/ttwwwaa/chattts_speaker

注意事項

1.是否要使用CUDA,需要的話,記得安裝依賴

2.要用CUDA,怎選擇 Linux 平台,相容性比較好

3.Python最好用3.10版本,並且用conda

直接使用

https://chattts.com

colab

modalScope

參考資源

ChatTTS Github

ChatTTS官網

Chat TTS UI

Chat TTS 翻譯

MediaFire一件安裝包

Lobe Chat UI-有plugin,多模態的AI CHAT UI – 雨 (rain.tips)

AI Tools – AI工具大全(總整理) – 雨 (rain.tips)

搭配 Free AI 產圖Flux

Youtube 電影十分鐘解說的 AI 語音合成

Youtube 電影十分鐘解說的 AI 語音合成

我睡覺前的催眠語音,經過了分析以及搜尋,終於找到正確的 AI ,分別是阿里雲的直播天王-艾菲,和 MS AZURE 的雲希

阿里雲 – 智能语音交互

https://ai.aliyun.com/nls

Microsoft AZURE – 文字轉換語音

https://azure.microsoft.com/zh-tw/products/cognitive-services/text-to-speech/#features

https://azure.microsoft.com/zh-cn/products/cognitive-services/text-to-speech/#features