分享程式代碼相關筆記
目前文章總數:254 篇
最後更新:2026年 10月 17日
Seed-VC 是一套 Zero-shot Voice Conversion(零樣本聲音轉換)技術。
它的目的不是重新演唱一首歌,而是從來源音訊保留內容與表演,再 將說話者或歌手的音色替換成參考聲音。
Seed-VC Github連結
Source Audio(來源歌曲/歌聲)
├─ 歌詞內容
├─ 演唱時間
├─ 節奏與斷句
├─ 音高輪廓 F0
└─ 原始表演方式
Target Voice(自己的聲音參考)
└─ 身分與音色特徵
↓ Seed-VC
Output Audio
└─ 來源歌曲的唱法 + 目標參考的音色
所謂 Zero-shot,表示不必先蒐集大量本人歌聲建立專屬模型,也不需為每個目標聲音重新訓練。
只要提供一小段品質良好的參考音訊,模型便能在推論階段擷取目標音色。
簡要來說 Seed-VC 使用內容編碼、音色條件、F0 音高條件與 Diffusion Transformer 共同產生新聲音。
本篇 ComfyUI 整合採用 Seed-VC 的 44.1 kHz F0-conditioned 模型,並且最終會將 原生成的 AI 歌曲替換成另一個 AI 聲音,作為展示。
來源歌聲 ─→ Whisper Small:擷取語音內容
└→ RMVPE:擷取 F0 音高輪廓
目標聲音 ─→ CAMPPlus:擷取歌手/說話者音色
內容 + F0 + 目標音色
↓
Seed-VC Diffusion Transformer
↓
BigVGAN 44.1 kHz Vocoder
↓
轉換後的 Mono 歌聲
Seed-VC 有針對不同用途設計的模型:
| 選項 | 優點 | 代價 |
|---|---|---|
| 22 kHz 語音模型 | 較輕量、較適合即時語音 | 歌聲高頻細節與極高音較受限制 |
| 44.1 kHz 歌聲模型 | 保留較多高頻與歌唱細節,適合離線轉換 | 模型更重、記憶體與時間需求較高 |
ComfyUI-Timbre-Transfer 選用 44.1 kHz Singing Voice Conversion 模型,而不是較小的 22 kHz 即時語音模型。
由於本篇基底為 ComfyUI-Timbre-Transfer 的工作流,因此使用高品質 44.1 kHz 路線。
ComfyUI-Timbre-Transfer 將 Seed-VC 包裝成 ComfyUI 節點
並加入長音訊分段、Crossfade、自動下載模型與 Stereo Reconstruction。
Seed-VC 本體輸出:Mono 44.1 kHz
ComfyUI-Timbre-Transfer 額外處理:
├─ 長音訊自動切塊與交叉淡化
├─ 從較長參考錄音選出活躍片段
├─ Timbre Strength 音色混合
├─ Peak Protection
上一篇已經透過 ACE-STEP 1.5 完成一首包含人聲的歌曲
這一次不重做編曲,而是延續原來的歌詞、旋律與演唱時機,把歌手音色轉成前篇(利用 CC0 檔案庫合法訓練你的 GPT-SoVITS 模型)英文朗讀者女性的聲音。
ACE-STEP 1.5 生成歌曲
↓
GPT-SoVITS v2 擷取分離生成歌曲 AI 歌唱者的原唱、背景樂曲
+
英文女性朗讀者 26 秒乾淨聲音參考
↓
輸出「英文女性朗讀者」的歌曲版本
這種方式特別適合自己不容易唱準高音,但想先聽聽歌曲套用個人聲線後的大致效果。
它比較接近 Demo 與創作預覽,不能完全取代本人錄唱、聲音指導與後期混音。
| 輸入 | 負責資訊 | 本篇使用檔案 |
|---|---|---|
| source_audio | 字詞、演唱節奏、斷句、旋律、F0 與表演 | ACE-STEP 1.5 產生的歌聲或 Vocal Stem |
| target_voice | 目標人物的音色與說話者特徵 | 本人乾淨說話錄音 |
如果來源歌手的高音唱法不自然,轉換後通常不會自動變成完美表演, 因為 Seed-VC 仍會沿用來源的音高與表演資訊。
反過來說,Target Voice 不一定要唱同一首歌
乾淨、穩定的說話錄音也能作為零樣本音色參考。
將整首歌送進 Voice Conversion,模型會同時接觸主唱、和聲、鼓、Bass、Synth 與殘響。
這些非語音聲音可能造成內容編碼器、F0 擷取器與 Vocoder 的判斷困難。
推薦正式流程:
Full Mix
├─ Vocal Stem ─→ Seed-VC ─→ Converted Vocal ─┐
└─ Instrumental Stem ─────────────────────────┼→ Mix / Master
└→ Final Song
如果歌曲本來就是自己用 AI 生成,建議在產生階段就保存可取得的 Vocal、Instrumental 或 Stem,能比事後從完整 Mix 分離得到更乾淨的素材。
本篇情境使用「LJSpeech 的聲音」與「自己創作的AI歌曲」,風險相對明確。
如果改用其他人物聲音,即使只有幾秒參考,也可能包含可辨識的生物特徵與人格權風險。
可以考慮:
- 自己的錄音與自己擁有的歌曲
- 已取得聲音本人及音樂權利人的明確授權
- 依授權條件使用的合法資料
不應該:
- 未經同意複製歌手、朋友、同事或公眾人物聲線
- 製作誤導他人相信是真人演唱的內容
- 用於詐騙、冒充、政治誤導或規避身分驗證
- 忽略歌曲、歌詞、伴奏與模型本身的授權條件
音訊只在本機處理不代表可以忽略同意與著作權
※技術可行性與使用權利是兩件不同的事。
以下是本次預計測試的環境:
| 項目 | 本次環境 |
|---|---|
| GPU | NVIDIA GeForce RTX 5070(12 GB VRAM) |
| CPU | Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz,3192 Mhz,6 個核心,12 個邏輯處理器 |
| RAM | 48 GB |
| OS | Microsoft Windows 10 專業版 |
| 所需模型(自動下載安裝) | Seed-VC 44.1k Model Loader (2.5GB 左右) |
※音樂聲線替換模型 GPU 12 VRAM 是可以正常支援的
進入 Github 上的ComfyUI-Timbre-Transfer,並拉到中間下載工作流
或者點擊下載SeedVC_44k_Voice_Conversion_Default.json
將下載好的 SeedVC_44k_Voice_Conversion_Default.json 檔案,進行匯入
匯入成功後,第一次使用會需要安裝 SeedVC 相關擴充
SeedVCModelLoader
SeedVCVoiceConversion
SeedVCRestoreOriginalStereo
打開 ComfyUI 的自定義節點管理器,會發現無法線上安裝,這是因為此節點需要手動安裝
要手動安裝插件,要先進入 ComfyUI 的容器,依序執行訪問容器內容:
其中 comfyui-nvidia : 要替換成您的容器名稱
docker exec -it comfyui-nvidia /bin/bash
進入後,要到虛擬環境的 venv 下操作,因此
Source /comfy/mnt/venv/bin/activate
接著進入到存放擴充節點的對應目錄
※依照自己的環境或多或少有差異
cd /basedir/custom_nodes
接著輸入以下指令進行節點擴充下載 ComfyUI-Timbre-Transfer.git
git clone https://github.com/ethanfel/ComfyUI-Timbre-Transfer.git
下載完成 .git 專案後,切換到該目錄下
cd ComfyUI-Timbre-Transfer
安裝擴充節點,此指令會將約束到的 torch_lock.txt 檔案相關套件,安裝齊全
python -m pip install --constraint /comfy/mnt/torch_lock.txt -r requirements.txt
安裝成功後,可以輸入以下 2 個指令(仍在 VENV 中)檢查當前是否正確
python -m pip check
並確認載入核心是否正常:
python -c "import torch, torchaudio, numpy, munch; print('torch=', torch.__version__); print('torchaudio=', torchaudio.__version__); print('numpy=', numpy.__version__); print('CUDA=', torch.cuda.is_available())"
預期可以看到:
No Broken requirements found.
torch= 2.14.0+cu130
torchaudio=2.11.0+cu130
numpy=2.4.6
CUDA=True
最後,為了要讓新的擴充節點生效,要重啟 ComfyUI Docker 容器
該工作流可整理成以下 7 個區塊:
| 工作流區塊 | 功能 |
|---|---|
| 1. Seed-VC 44.1K | 載入 Seed-VC 44.1 kHz 聲音轉換模型及相關元件。首次執行時會自動下載缺少的模型;device 控制運算裝置,precision 控制運算精度,模型完整下載後可將 download_missing 設為 false。 |
| 2. Source performance | 載入要被轉換的來源人聲,提供歌詞發音、旋律、音高、節奏、咬字與演唱方式。建議使用從歌曲分離出的乾淨純人聲,不要直接輸入含伴奏的完整歌曲。 |
| 3. Target voice reference(10-20s) | 載入目標人物的聲音參考,提供聲紋與音色特徵。建議使用 10~20 秒乾淨、單一說話者、無音樂、無混響及無長時間停頓的錄音;清唱參考通常比演講錄音更適合歌聲轉換。 |
| 4. Seed-VC high-quality 44.1k conversion | 將 Source performance 的歌詞、旋律與唱法保留下來,並將音色轉換為 Target voice reference 的聲音,輸出 44.1 kHz 單聲道人聲。此節點也可設定音色強度、擴散步數、參考秒數、音高調整、長度、隨機種子及輸出音量。 |
| 5. Restore original stereo around converted voice | 將 Seed-VC 產生的單聲道人聲放回中央聲道,並從原始來源保留左右聲道差異,以重建較自然的立體聲寬度、空間感與殘響。此節點不是伴奏混音器;若要加入背景音樂,仍需另外將轉換後人聲與無人聲伴奏混合。 |
| 6. Preview converted stereo | 在 ComfyUI 中直接播放並預覽重建後的立體聲結果,用於檢查聲音相似度、音量、破音、原聲殘留及立體聲效果,不會另外匯出正式檔案。 |
| 7. Save Seed-VC stereo Output | 將最終立體聲結果儲存至 ComfyUI 的輸出目錄;可透過檔名前綴設定輸出子目錄與檔案名稱,方便後續在 Audacity、REAPER 或其他混音軟體中使用。 |
其中在第 1. 部時會自動安裝所需模型,最後的6. 7. 會輸出替換聲音後的結果
Seed-VC 44.1k Model Loader 的 download_missing 保持 true,第一次執行時會下載約 2.5 GB 的必要檔案:
- Seed-VC 44.1 kHz Checkpoint 與固定版本原始碼
- OpenAI Whisper Small Content Encoder
- NVIDIA BigVGAN 44.1 kHz Vocoder
- RMVPE Pitch Extractor
- CAMPPlus Speaker Encoder
預設保存位置:
ComfyUI/
└─ models/
└─ seed_vc/
第一次執行要保持網路連線且磁碟空間足夠。
※下載完成後,若希望完全離線執行,可將 download_missing 設為 false。
官方 Default Workflow 的起始值如下:
| 參數 | 預設值 | 用途 |
|---|---|---|
| timbre_strength | 1.0 | 完整使用目標 CAMPPlus 音色 Embedding |
| diffusion_steps | 30 | 高品質預設值 |
| cfg_rate | 0.7 | Seed-VC Classifier-Free Guidance |
| reference_seconds | 20.0 | 使用 20 秒參考聲音 |
| auto_f0_adjust | false | 保留來源歌聲的音高範圍 |
| pitch_shift | 0 | 不進行半音位移 |
| length_adjust | 1.0 | 保持原始演唱時間 |
| seed | 0 | 擴散取樣種子 |
| output_gain_db | 0.0 | 不額外增加或降低輸出音量 |
| peak_protection | true | 避免輸出新增削波 |
| peak_ceiling_db | -1.0 | 峰值保護上限為 -1 dBFS |
首次執行先不用修改參數。確認能運行正常後,再依照自己需求進行調整參數。
我們保持原本的工作流,但為了要方便展示替換人聲後的結果,因此需要添加 3 個節點
依序添加此 3 個節點
| 名稱 | 說明 |
|---|---|
| instrument (原背景音樂) | 上傳音樂檔案,主要傳原始的背景歌曲(不含人聲) |
| 音频合并 | 音頻1 接上 instrument (原背景音樂) 節點 |
| 音頻2 接上 Restore original stereo around converted voice 節點 (此節點是變換人聲後的成果) | |
| Save Seed-VC Merge stereo output | 保存此音樂,完成新的人聲 + 原背景音樂的替換成果 |
最終再將擴增的 3 個節點,圈選轉為子工作流 (當然可以跳過此步驟,但可以優化工作流檢視)
整體上不影響自動化生成
本篇基於原始工作流的擴充調整,提供點擊下載
網路上與工具有很多可以將一首歌的歌曲與人聲分離,我們這邊將上一篇 成果 - 音樂生成結果的 AI 音樂
歌詞:
[Intro - instrumental]
[Verse 1]
夜色落在街角
霓虹映著微笑
末班車緩緩經過
帶走白天的喧鬧
[Pre-Chorus - building energy]
風把回憶輕輕翻頁
我聽見熟悉的心跳
[Chorus - uplifting]
沿著風向前奔跑
讓星光陪我到破曉
就算明天還很遙遠
今晚也不要停靠
[Instrumental - electric piano solo]
[Outro - fade out]
把未完成的願望
留給下一次破曉
生成的 AI 音樂透過之前分享的 GPT-SoVITS v2 的去除背景音與提取純人聲方式分離此AI音樂
分離上面的AI音樂,產生的背景音樂 如下:
分離上面的AI音樂,產生的純人聲如下:
將分離後已 產生的純人聲 在 Source performance 作為上傳檔案
準備一個替換的人聲,約 20 秒上下,這裡使用 英文朗讀者女性的聲音。來當替換對象。
英文女性朗讀者的腔調:
將分離後已 產生的背景音樂 在 instrument (原背景音樂) 作為上傳檔案
目的是最後的混音合併輸出
上述準備工作都完成後,可以執行運行 (首次點擊依照網路速度要等待一段時間下載模型約 2.5 GB)
最終替換成 英文朗讀者聲音 + 原始歌曲 的生成結果:
若無法從網頁撥放可以點擊下載
這裡提供原始的 AI 音樂做比較:
若無法從網頁撥放可以點擊下載
在應用場景上,適合 Demo 與創作預覽,雖不能取代本人唱歌,但若有一首新的歌曲,且尚未確定歌手人選
這時可以使用此工具:先將某些潛在對象的歌手聲音替換上去,便於評估者找出符合此音域的歌手。
第一次執行需要下載約 2.5 GB 模型,可能因網路、代理伺服器、防毒軟體或磁碟空間中斷。
檢查項目:
- download_missing 是否為 true
- ComfyUI/models/seed_vc 是否可寫入
- 磁碟是否有足夠空間
- Hugging Face 是否能正常連線
- 終端機是否仍顯示下載進度
- 不完整檔案是否需要依專案說明重新下載
成功下載後可將 download_missing 改為 false,確認離線時不會再嘗試連線。
顯卡在低階規格的時候可能會出現 Out of Memory 的狀況,建議排錯誤順序:
1. Source 先裁成 10~30 秒
2. Diffusion Steps 降到 10~20 做預覽
3. Precision 保持 auto,不要直接改 FP32
4. 關閉其他占用 GPU 的模型與程式
5. 重啟 ComfyUI,避免先前工作流仍佔用 VRAM
6. 分段處理完整歌曲,再做 Crossfade 與混音
長音訊雖然會由節點自動分塊,但總處理時間仍會增加
應先用最困難的高音片段確認參數 ,再投入整首歌曲。
44.1 kHz 能保留更多高頻,但模型仍屬於 模擬音色
氣聲、耳語、吼腔、尖叫與極高音都是困難案例。
可以依序測試:
1. 使用乾淨 Vocal Stem
2. 換一段包含較高音域的本人參考
3. 固定其他參數,Steps 由 30 提高到 40~50
4. 更換 Seed
5. 比較 Timbre Strength 1.0 與 0.5
6. 比較 Auto F0 Adjust 開/關
7. 只重做問題音節,最後局部剪輯
如果來源高音本身已失真,Voice Conversion 通常只會將問題帶到新音色,而不會自動修復原始表演。
Seed-VC 原始 GitHub 儲存庫目前已進入唯讀封存狀態
ComfyUI-Timbre-Transfer 則固定使用特定上游原始碼與模型版本,降低更新造成的不確定性。
這代表現在可用的工作流不會立刻失效,但未來新版 PyTorch、CUDA 或 ComfyUI 可能出現相容性問題,而上游不一定會繼續維護。
建議保存:
- 可正常運作的 ComfyUI 與 Custom Node Commit
- Python、PyTorch、CUDA 版本
- 已下載模型與模型授權資訊
- 官方 Workflow JSON
- 一份短測試音訊與正確輸出
更新大型環境前先備份,並用短測試工作流驗證,不要直接在唯一可用環境中全面升級。
這篇完成了 Seed-VC 與 ComfyUI-Timbre-Transfer 的安裝、模型下載、兩份音訊輸入、歌聲轉換與 Stereo Reconstruction。
整個流程最重要的是:Source Performance 提供「怎麼唱」,Target Voice 提供「像誰的音色」。
整理建議實作順序:
1. 準備自己擁有權利的來源歌曲
2. 錄製 10~20 秒乾淨的參考聲音
3. 匯入預設 ComfyUI Workflow
4. 先用 10~30 秒片段與預設參數測試
5. 固定 Seed,依序比較 Timbre Strength、Reference 與 Steps
6. 正式版本先分離 Vocal,只轉換人聲
7. 回到原背景音樂 + 新轉換聲音,實現混音完成
Seed-VC 能快速讓創作者預覽自己的聲線套用在歌曲上的效果,但最終品質仍取決於來源表演、參考錄音、音域差距與後製能力。
把它當作歌聲設計與 Demo 製作工具:而不是一鍵取代歌手與混音工程,會更容易得到可控、可負責任的結果。