GPT-SoVITS 與 Live2D 接線安裝指南
這篇記錄的是把一個只用 edge-tts 讀字幕、沒有臉的 AI VTuber prototype,接上「本地克隆聲線+Live2D 動臉+推流到 YouTube」的實際做法,重點在各個環節之間怎麼串起來,以及本地顯卡撐不撐得住。
適合已經有 Live2D、TTS 或直播軟體基礎知識,手上有 Windows 機器(測試環境是 GTX 1660、6GB VRAM)想自己接一套本地 AI VTuber 線路的人讀。
讀完可以知道:文字輸入到 Live2D 嘴巴同步開合這一段可以在本地跑通,但本地克隆聲線和推流到 YouTube,因為顯存限制,目前還沒能跟即時對話同時運作。
先讀 AI-VTuber 是什麼-白話入門 了解全貌。
TTS 聲音偽裝成麥克風,就能騙 VTube Studio 自動開合嘴巴
Live2D 模型的嘴巴不是被程式直接控制。業界常見做法是用虛擬音訊線,把 TTS 合成出來的聲音偽裝成麥克風輸入,VTube Studio 一聽到聲音音量在變化,就自動張合嘴巴,不需要另外寫嘴型動畫。
整條資料流是這樣走的:
flowchart TD A[觀眾留言] --> B[主程式接收] B --> C[LLM 產生回覆文字] C --> D[GPT-SoVITS 本地聲音克隆] D --> E[語音輸出] E --> F[VB-CABLE 虛擬音效卡] F --> G[VTube Studio 當成麥克風輸入] G --> H[依音量自動唇形同步] H --> I[Live2D 模型嘴巴開合] I --> J[OBS 擷取視窗畫面] J --> K[推送到 YouTube] E -.也可直接播放.-> L[喇叭]
只要有聲音「播放到 CABLE Input」,VTube Studio 就聽得到並開合嘴。正式跑的時候讓程式把語音只導去 CABLE Input,不動系統預設輸出。
技術細節:VB-CABLE 安裝與 VTube Studio 嘴型綁定的完整步驟
安裝 VB-CABLE 時,要對
VBCABLE_Setup_x64.exe按右鍵選「以系統管理員身分執行」,再按 Install Driver。要注意別點到沒有_x64字尾的VBCABLE_Setup.exe,那是 32 位元版本,64 位元 Win11 點錯會靜默失敗,裝置完全不會出現,也不會跳錯誤訊息。不一定要重開機,裝對了之後用Get-PnpDevice -Class AudioEndpoint指令查詢,看到狀態是Status OK / CM_PROB_NONE就代表可以立即測試。裝好後 Windows 音效設定會多出播放裝置
CABLE Input(在播放分頁可能顯示成「喇叭 VB-Audio Virtual Cable」)跟錄音裝置CABLE Output。接著到 VTube Studio 的「リップシンク設定(マイク)」,也就是唇形同步設定裡:
- 打開「マイクを使う」(使用麥克風)開關,沒開的話整個功能不會啟動,這是最容易漏掉的一步。
- 「マイク」選項改選
CABLE Output(VB-Audio Virtual Cable),不是實體的麥克風。- 打開「マイクプレビュー」(麥克風預覽),播放聲音時如果看到綠色音量條在跳,就代表 VTube Studio 有聽到聲音。
再來要綁嘴巴參數:到設定裡的 Live2D 模型參數,找到「Mouth Open」那一塊,把 IN 從
MouthOpen(原本是臉部追蹤讀出來的值)改成VoiceVolume(麥克風音量),OUT 維持ParamMouthOpenY不動。IN 代表觸發來源、OUT 代表被帶動的部位;原本 IN 接的是臉部追蹤,如果沒開鏡頭這個值永遠是零,嘴巴自然不會動。測試時要用「人講話」的聲音,不要用音樂測。音樂的音量通常持續維持在滿格,會讓
VoiceVolume一直頂在最大值,嘴巴反而卡在全開、看起來像沒在動;人聲有停頓和抑揚頓挫,嘴巴才會一開一合。最後做微調校準:「音量ブースト」(音量增幅)設 40 太容易頂滿,調到 20 到 30 之間比較合適;OUT 的上限原本可能是 2.3,改成 1.0 可以避免一點點音量就把嘴巴撐到最大。
免費不代表能商用,模型和聲音的授權要自己查清楚
免費素材不等於可以拿去營利。Live2D 模型分成幾種常見來源,授權條件差很多:
| 方案 | 價格 | 授權重點 | 何時用 |
|---|---|---|---|
| Live2D 官方範例模型(Hiyori 等) | 免費 | 年營業額低於 1000 萬日圓可商用、直播、營利;需在說明欄掛 Live2D 版權聲明;禁止再散布或用於 NSFW | 先用這個跑通 |
| azukistudio「Hamu」(Booth 商店) | 約 2400 日圓 | 明寫直播與影片營利可以,收益歸使用者;需標示 credit | 想要辨識度再買 |
| 一般免費 freemium 模型 | 0 元 | 注意:很多免費版本寫明「商用不可」 | 別拿去營利 |
挑模型時要看日文關鍵字:「商用利用 可/×」「配信」(直播)「収益化」(營利)「クレジット表記」(需標作者)「再配布禁止」(禁止再散布)。
聲音的參考樣本用 Mozilla Common Voice 中文 zh-TW,這是 CC0 公眾領域授權,最安全。GPT-SoVITS 的程式碼和預訓練權重都是 MIT 授權,可商用。
另外要注意 YouTube 從 2025 年 5 月 21 日起規定,AI 語音克隆內容上架要勾選「AI 合成揭露」。誠實揭露不影響營利,不揭露才會被罰。用 Common Voice 的匿名素材不對應真人,比較安全;不要拿名人或聲優的聲音去克隆。
6GB 顯卡沒辦法同時跑 VTube Studio 的臉部運算和 GPT-SoVITS 的語音合成
這是整條線接起來之後最重要的發現。GPT-SoVITS 要在 GTX 1660 上合成出聲音,精度必須設成 FP32(也就是 is_half: false)。1660 這張 Turing 世代的顯卡開 FP16 合成時會直接生成全靜音的音檔,檔案長度正常,但音量只有負 91 分貝,等於沒聲音,這是 Turing 16xx 系列的已知問題。
FP32 才會有聲音,代價是更吃顯存、速度更慢。單獨跑 GPT-SoVITS 時推理速度大約每秒 65 個迭代;但只要 VTube Studio 同時開著,顯存會被佔到剩不到 350MB,多出來的部分溢出到系統記憶體,推理速度掉到每秒 1.2 個迭代,慢了大約 50 倍,一句話要等上百秒。用 nvidia-smi --query-gpu=memory.used,memory.free,utilization.gpu --format=csv 可以直接看到這個溢出。
實驗階段先用 edge-tts 撐著,GPT-SoVITS 的設定、參考音檔、程式路由都保留在原地,之後換裝雲端 GPU 或升級顯卡再切換,.env 裡改一行設定就能切回克隆聲線。
技術細節:GPT-SoVITS 版本選擇與設定檔調整
GPT-SoVITS 官方提供 Windows 整合包,自帶 Python 和 CUDA,不會污染既有的 Python 虛擬環境。實際採用的版本是
GPT-SoVITS-v2pro-20250604.7z(標準版,不是 nvidia50 那個變體),對應 GTX 1660 這種 Turing 架構的顯卡,下載來源是 HuggingFace 上的lj1995/GPT-SoVITS-windows-package,檔案大小約 8.19GB。版本號要注意的一點是,它不是照時間排的直線順序。釋出順序其實是 v2、v3、v4、然後最新的是 v2Pro。v1、v2、v2Pro 是同一個系列,比較省資源、速度快;v3、v4 是另一個系列,比較吃資源。v2Pro 是目前最新、也最適合 1660 這種中階顯卡的版本。
切換到 v2Pro 並設定精度,要改
GPT_SoVITS\configs\tts_infer.yaml裡的custom:區塊:把version設成v2Pro,t2s_weights_path指到s1v3.ckpt,vits_weights_path指到v2Pro/s2Gv2Pro.pth。其中is_half: false是必須設定的,前面提過,開 FP16 會全靜音。啟動前建議先關掉瀏覽器騰出 VRAM 空間,用
.\runtime\python.exe api_v2.py啟動 API,預設會跑在127.0.0.1:9880。啟動訊息裡要看到version: v2Pro、is_half: False、Uvicorn running on ...9880才算正常,第一句合成會需要冷啟動時間比較久,這是正常現象。
技術細節:從 Common Voice 挑選參考音檔的完整步驟
下載 Mozilla Common Voice 中文 zh-TW 資料集後解壓縮,打開
validated.tsv,裡面是已經審核通過的乾淨語音片段。篩選條件是gender = female,up_votes高、down_votes為 0,再找sentence欄位裡長度大約對應 5 到 10 秒發音長度的句子。找到對應的clips/xxx.mp3後要實際試聽,確認咬字清楚、沒有雜訊。接著用 ffmpeg 轉成單聲道 wav 檔:
ffmpeg -i clips/xxx.mp3 -ac 1 -ar 32000 ref.wav最後記下這段音檔對應的逐字稿,也就是
sentence欄位的文字內容,這兩樣(音檔加逐字稿)會一起填進角色設定檔裡的gptsovits區塊,再把.env的TTS_BACKEND從edge改成gptsovits就會切換成克隆聲線。程式本身有保護:GPT-SoVITS 連不上或沒填參考音檔,會自動退回 edge-tts,不會中斷。
語音送進 VB-CABLE 的路徑上,取樣率沒對齊嘴巴就是不會動
把語音送進 CABLE Input 這條路徑上,最常踩到的坑是取樣率沒對齊。如果送到 DirectSound 版本的 CABLE Input(原生 44100Hz),跟程式輸出的取樣率兜不起來,VTube Studio 的音量條會完全沒反應,嘴巴一動也不動,而且不會跳出任何錯誤訊息,只會覺得明明送了聲音卻沒用。
技術細節:語音路由裡的取樣率與回音問題
程式用
sounddevice把語音送進 CABLE Input 給 VTube Studio 用。要把語音統一轉成 48000Hz,並且優先選 WASAPI 版本的 CABLE Input(VB-CABLE 原生就是 48000Hz),才能避開前面提到的取樣率不對齊問題。另一個坑是回音:不要讓喇叭跟 CABLE 兩條路徑同時直接播放同一段聲音,兩條獨立串流疊在一起會產生環繞或回音的效果。作法是在
.env裡設定TTS_MONITOR=0,讓聲音只送到 CABLE,如果想自己聽到監聽,改用 CABLE Output 的「聆聽此裝置」功能,這樣 VTube Studio 跟耳朵收到的是同一份單一串流,不可能產生回音。正式推流時連監聽都關掉,讓 OBS 直接抓 CABLE 的聲音。VB-CABLE 的兩端設定盡量別亂動:CABLE Input 和 CABLE Output 在「進階→預設格式」裡的設定要一致,建議都設成 2 聲道、16 位元、48000Hz。把系統預設輸入輸出裝置設成 CABLE 其實沒必要,反而容易造成混亂或回授,讓各個程式自己指定要用哪個裝置就好。
推流的部分,OBS 用 Spout2 或視窗擷取抓 VTube Studio 的畫面去背,串流金鑰指向 YouTube,先做短時段測試。
推理型 LLM 延遲太高,換非推理模型
免費的推理型模型(像 glm-4.5-air:free)會先想一大串才回答,還要排隊,延遲會拉到上百秒,不適合即時直播互動。改用非推理、MoE 架構的 qwen/qwen3-next-80b-a3b-instruct:free,中文能力夠強,延遲降到約 16 秒,才追得上直播節奏。要更穩定、更低延遲的話,還是得考慮付費模型。
打字到嘴巴同步已打通
目前已確認的部分:VTube Studio 載入範例模型會動;播放聲音到 CABLE Input 時嘴巴會自動開合;GPT-SoVITS API 單獨跑得起來,能合成出聲音,但和 VTube Studio 同時開會因為前面提到的顯存問題慢到不能用;用 edge-tts 代替克隆聲線時,「打字→講話→Live2D 嘴同步動」這一段已經整條打通。克隆聲線和推流到 YouTube 這兩塊還沒完全上線。
尚未驗證的部分:OBS 能不能抓到 VTube Studio 畫面並推流到 YouTube,這部分還沒做完整測試。
已知的地雷:免費 Live2D 模型常常禁止商用,要營利只能用掛授權聲明的官方範例,或另外買明寫可商用的款式;1660 顯存吃緊,GPT-SoVITS 推論前記得先關瀏覽器騰空間;YouTube 規定 AI 語音克隆內容要勾選揭露,誠實揭露不影響營利;GPT-SoVITS 的參考音檔要乾淨、3 到 10 秒、附逐字稿,音色和語速會直接決定輸出的聲音品質。