一、系統架構與分工
示範環境是一台沒有高階顯卡的商務筆電:顯示記憶體只有 2GB,低於主流 TTS 模型的最低需求(4GB),直接在本機訓練必定失敗。所以整個流程採「本機+雲端」分工:
- 本機(CPU 模式):資料準備(錄音切分、語音辨識標註、人工校對)+日常配音推理(合成語音)
- Google Colab(免費 T4 GPU):只負責模型微調訓練,訓練完把兩個模型檔下載回本機
二、本機安裝與啟動
從官方 GitHub 下載 Windows 整合包(本文使用 v2pro-20250604 版),解壓到自選的安裝資料夾(本文以 <安裝資料夾> 代稱,路徑避免中文與空格較保險)。
- 啟動(CPU 模式):顯卡顯存不足 4GB 的機器,不要用整合包原本的
go-webui.bat,低階顯卡會被程式偵測到並嘗試使用,2GB 顯存直接爆掉閃退。做法是建立一支 CPU 專用啟動腳本(在原啟動指令前先設set CUDA_VISIBLE_DEVICES=-1隱藏顯卡),強制全程 CPU。啟動後等 1~2 分鐘,瀏覽器開http://127.0.0.1:9874。 - 關閉:把啟動時跳出的黑色命令列視窗關掉即可。
三、資料準備(本機 WebUI)
3.1 錄音要求
- 長度 5~10 分鐘,一個檔即可(wav / mp3 / flac)
- 安靜房間、無背景音樂、無回音;語速和語氣接近教學影片旁白的感覺
3.2 語音切分(0b)
分頁「0-前置資料集獲取工具」→「0b-語音切分工具」:「音頻自動切分輸入路徑」填錄音檔完整路徑,其他參數不動,按「開啟語音切分」。輸出在 output\slicer_opt\。
3.3 語音辨識標註(0c ASR)
「0c-批量 ASR 工具」:輸入目錄填 output/slicer_opt,模型選「達摩 ASR」(中文),按「開啟離線批量 ASR」。輸出標註檔 output\asr_opt\slicer_opt.list。
3.4 人工校對(0d):強烈建議
「0d-語音文本校對標註工具」路徑填 output/asr_opt/slicer_opt.list 後開啟,逐句聽音檔對文字。
校對省力原則:模型學的是「文字↔發音」對應,不是文意。
- 不用改:同音錯字(例:代辦=待辦,發音吻合就無害)
- 要改:聽漏字、多出字、發音不同的錯字、文字與語音明顯對不上的句子
3.5 打包上傳包
最終要做出 dataset.zip,內含:切片資料夾 slicer_opt\(所有 wav)+標註檔 myvoice.list。
/content/dataset/slicer_opt/檔名.wav;原檔是 Windows 反斜線路徑,直接上傳會 FileNotFoundError。存檔須為 UTF-8(無 BOM)。可以用文字編輯器批次取代路徑字首,或交給 AI 工具代改。
四、Colab 環境建置
Notebook 連結(舊版 colab_webui.ipynb 已失效,認明官方 repo 的新檔):
https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-WebUI.ipynb
先設 GPU:選單「執行階段 → 變更執行階段類型」→ T4 GPU。之後依序:
- 執行 Cell 1(開頭
%%writefile /content/setup.sh),一秒完成。 - 執行 Cell 2(開頭
%pip install -q condacolab)→ 中途跳「工作階段當機/已重新啟動」屬正常 → 再執行一次 Cell 2 → 等 10~15 分鐘裝完。 - 執行 starlette 修正(新增一個程式碼 cell 貼上):
!source activate GPTSoVITS && pip install "starlette>=0.40.0,<0.46.0" - 上傳與解壓:把
dataset.zip拖進左側檔案面板的/content,新增 cell 執行:!unzip -o /content/dataset.zip -d /content/dataset - 執行 Launch WebUI cell(最後一個)。建議先把
python webui.py改成python webui.py zh_CN介面才是中文。輸出裡找https://xxxxx.gradio.live網址(Ctrl+F 搜 gradio.live),點開即是 WebUI。
機器還活著嗎?快速判斷
- 右上角有 RAM/磁碟量條=有連上機器;顯示「連線/重新連線」=已斷線
- 跑
!ls /content:有 GPT-SoVITS=環境還在;只有 sample_data=機器被回收,全部重來 - 斷線≠回收:幾分鐘內重新連線常可接回原機器;閒置約 90 分鐘以上才會整台收走
五、Colab 訓練
5.1 訓練集格式化(1A)
開 WebUI「1-GPT-SOVITS-TTS」分頁,照下表填:
| 欄位 | 填入值 |
|---|---|
| Experiment/model name(實驗/模型名) | myvoice |
| Version of the trained model(版本) | v2ProPlus |
| 1A Text labelling file(文本標註文件) | /content/dataset/myvoice.list |
| 1A Audio dataset folder(訓練集音頻目錄) | /content/dataset/slicer_opt |
捲到「1Aabc-Training Set One-Click Formatting」按橘色「Open Training Set One-Click Formatting」,約 1~3 分鐘。完成判斷:Colab Launch cell 輸出依序出現 1-get-text.py → 2-get-hubert-wav32k.py → 3-get-semantic.py 且沒有紅字 Traceback。
5.2 微調訓練(1B)
- 按「Open SoVITS Training」(參數預設),T4 約 5~10 分鐘,輸出框顯示「SoVITS Training Finished」。
- 完全跑完後,GPT Training 區塊先把 Batch size 改成 4(預設值在免費版 12.7GB RAM 上會無聲當機),再按「Open GPT Training」,約 10~20 分鐘。
5.3 下載模型(每完成一個就立刻下載!)
| Colab 檔案位置 | 說明 |
|---|---|
/content/GPT-SoVITS/SoVITS_weights_v2ProPlus/ 內 myvoice_e8_s***.pth | SoVITS 權重,約 100~200MB,SoVITS 訓練完就先下載 |
/content/GPT-SoVITS/GPT_weights_v2ProPlus/ 內 myvoice-e15.ckpt | GPT 權重,約 150MB;多個檔取 e 後數字最大者 |
左側檔案面板找到檔案 → 右鍵 → 下載。機器隨時可能被回收,訓練完拖延下載=可能整段重來。
六、回本機推理(日常配音)
- 把兩個模型檔放進本機對應資料夾:
檔案 放到 .ckpt<安裝資料夾>\GPT_weights_v2ProPlus\.pth<安裝資料夾>\SoVITS_weights_v2ProPlus\ - 以 CPU 腳本啟動 → 「1-GPT-SoVITS-TTS」→「1C-推理」→ 版本選
v2ProPlus→ 按「刷新模型路徑」→ 下拉選 myvoice 的 GPT 與 SoVITS 模型 → 勾「開啟 TTS 推理 WebUI」(開在http://127.0.0.1:9872)。 - 推理頁面:上傳一段 5~10 秒的參考音頻(從
output\slicer_opt挑一句最方便),填上那句的文字、語言選中文;下方貼要配音的稿子 → 合成。
- CPU 速度預期:10 分鐘旁白約跑 10~20 分鐘,掛著等即可;成品在
output\資料夾 - 稿子分段合成:一段一段做,失敗重跑成本低
- 專有名詞唸錯:稿子裡改用同音字調整發音
七、疑難排解(實戰踩坑紀錄)
| 症狀 | 原因 | 解法 |
|---|---|---|
| Cell 2 跑到一半「工作階段當機/已重新啟動」 | condacolab 安裝必經的重啟 | 正常現象,再執行一次 Cell 2 即可 |
網頁 Internal Server Error;後台 TypeError: unhashable type: 'dict' | starlette 版本太新(≥0.46) | pip install "starlette>=0.40.0,<0.46.0" 後重啟 Launch(GitHub issue #2762) |
| gradio.live 顯示 No interface is running | 後端已停止(Launch cell 被停掉或當機),頁面可能停留舊畫面 | 看 Launch cell 圖示:三角形=已停;重新執行取得新網址 |
格式化報 FileNotFoundError: /content/dataset/myvoice.list | 換新機器後 zip 未重新解壓 | 停 Launch → 跑 unzip → 重啟 Launch |
| Launch cell 無聲變停止、無任何 Traceback | 系統 RAM(12.7GB)耗盡被強制終止,常發生在 GPT 訓練 | 重啟後 GPT Training 的 Batch size 調 4;常態發生可考慮 Colab Pro |
| 訓練完找不到權重資料夾 | 機器已被回收,成果全失 | !ls /content 確認;預防=訓練完立刻下載 |
| 本機命令列跑 ASR 報 UnicodeEncodeError(cp950) | Windows 中文編碼 | python 加 -X utf8 參數;用 WebUI 操作通常不會遇到 |
| 按鈕按了沒反應、輸出框不更新 | gradio 通道不穩,事件其實可能已送達 | 以 Colab Launch cell 輸出為準;必要時重新整理頁面重填欄位 |
八、重要路徑速查
| 用途 | 路徑 |
|---|---|
| 本機主程式 | <安裝資料夾>(整合包解壓位置) |
| 本機啟動(CPU 模式) | 自建的 CPU 專用啟動腳本(見第二節) |
| 主 WebUI/推理 WebUI | http://127.0.0.1:9874/http://127.0.0.1:9872 |
| 切片輸出/標註檔 | output\slicer_opt\/output\asr_opt\slicer_opt.list |
| 上傳包 | 自訂工作資料夾下的 dataset.zip |
| 合成成品 | <安裝資料夾>\output\ |