用白話文解釋 RVC
RVC 代表檢索å¼èªžéŸ³è½‰æ›ï¼ˆRetrieval-based Voice Conversion)。它是一個開æºçš„ AI ç³»çµ±ï¼Œèƒ½å³æ™‚將一個人的è²éŸ³è½‰æ›æˆå¦ä¸€å€‹äººçš„è²éŸ³ï¼ŒåŒæ™‚ä¿ç•™ä½ èªªè©±çš„ä¸€åˆ‡ç‰¹å¾µï¼šä½ çš„ç”¨è©žã€ä½ 的節å¥ã€ä½ çš„æƒ…æ„Ÿå’Œä½ çš„èªžèª¿ã€‚åªæœ‰è²éŸ³çš„èº«ä»½æœƒæ”¹è®Šã€‚çµæžœè½èµ·ä¾†å°±åƒä¸€å€‹çœŸæ£ä¸åŒçš„äººèªªå‡ºäº†ä½ ä¸€å—ä¸å·®çš„è©±ï¼Œè€Œä¸æ˜¯ä½ 自己的è²éŸ³ç¶“éŽæ¿¾æ³¢æˆ–音高變æ›å¾Œçš„版本。
RVC 如何é‹ä½œâ€”â€”å››éšŽæ®µè™•ç†æµç¨‹
ç•¶ä½ é€éŽ RVC æ¨¡åž‹èªªè©±æ™‚ï¼Œä½ çš„éŸ³è¨Šåœ¨åˆ°é”è¼¸å‡ºç«¯ä¹‹å‰æœƒç¶“éŽå››å€‹ä¸åŒçš„處ç†éšŽæ®µã€‚了解這些階段å¯ä»¥è§£é‡‹ç‚ºä»€éº¼ RVC è½èµ·ä¾†æ¯”傳統的語音效果逼真得多。
- ●階段 1 — 內容特徵æå–:一個å為 HuBERT(或其變體 ContentVec)的神經網路會分æžä½ 的原始音訊,並æå–èˆ‡èªªè©±è€…ç„¡é—œçš„å…§å®¹ç‰¹å¾µâ€”â€”åŸºæœ¬ä¸Šå°±æ˜¯ä½ èªªäº†ä»€éº¼ä»¥åŠä½ æ˜¯æ€Žéº¼èªªçš„ï¼Œä½†ç§»é™¤äº†ä½ çš„è²éŸ³èº«ä»½ã€‚RVC v2 使用 768 ç¶çš„特徵å‘é‡ï¼ˆé«˜æ–¼ v1 çš„ 256 ç¶ï¼‰ï¼Œèƒ½æ•æ‰æ›´ç´°å¾®çš„語音細節。
- ●階段 2 — 音高æå–:一個å為 RMVPE(Robust Multiscale Waveform-based Pitch Estimation)的ç¨ç«‹æ¨¡åž‹æœƒæå–ä½ èªžéŸ³çš„åŸºé »ï¼ˆF0ï¼‰â€”â€”ä¹Ÿå°±æ˜¯ä½ çš„éŸ³é«˜è¼ªå»“ã€æ—‹å¾‹å’ŒéŸ»å¾‹ã€‚這就是為什麼轉æ›å¾Œçš„輸出能ä¿ç•™ä½ è‡ªç„¶èªžèª¿çš„åŽŸå› ã€‚
- ●階段 3 — 索引檢索(FAISS):這就是「檢索å¼ã€èªžéŸ³è½‰æ›ä¸çš„「檢索ã€ã€‚在訓練期間,目標語音的特徵會被儲å˜åœ¨ä¸€å€‹å‘é‡è³‡æ–™åº«ä¸ã€‚在推論期間,FAISS(Facebook AI Similarity Searchï¼‰æœƒç‚ºä½ èªžéŸ³çš„æ¯å€‹ç‰‡æ®µæ‰¾åˆ°æœ€åŒ¹é…çš„è²éŸ³ç‰¹å¾µã€‚這é€éŽå°‡è½‰æ›å»ºç«‹åœ¨ç›®æ¨™èªžéŸ³çš„真實樣本上,減少了「音色洩æ¼ã€â€”—å³åŽŸå§‹è²éŸ³æ»²é€å‡ºä¾†çš„ç¾è±¡ã€‚
- ●階段 4 — ç¥žç¶“åˆæˆï¼ˆVITS / HiFi-GAN Vocoder):一個基於 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speechï¼‰çš„ç”Ÿæˆæ¨¡åž‹æœƒçµåˆä½ æå–的內容特徵ã€éŸ³é«˜æ•¸æ“šå’Œæª¢ç´¢åˆ°çš„è²éŸ³ç‰¹å¾µï¼Œä¾†åˆæˆä¸€å€‹å…¨æ–°çš„éŸ³è¨Šæ³¢å½¢ã€‚è¼¸å‡ºä¸æ˜¯ä½ è²éŸ³çš„修改版本——而是由神經網路生æˆçš„全新音訊。
為什麼 RVC è½èµ·ä¾†æ¯” Pitch Shifting 更逼真
傳統的變è²å™¨å°ä½ ç¾æœ‰çš„è²éŸ³å¥—用音訊效果——Pitch Shiftingã€å…±æŒ¯å³°è½‰ç§»ã€EQ 濾波。這就åƒåœ¨ç…§ç‰‡ä¸Šå¥—用 Instagram 濾é¡ï¼šä½ å¯ä»¥æ”¹è®Šå¤–觀,但底下顯然還是åŒä¸€å¼µåœ–片。原始的è²éŸ³ç‰¹å¾µç¸½æ˜¯æœƒæ»²é€å‡ºä¾†ï¼Œå°¤å…¶æ˜¯åœ¨æŒçºŒçš„語音ä¸ã€‚RVC çš„é‹ä½œæ–¹å¼å‰‡å®Œå…¨ä¸åŒã€‚å®ƒå°‡ä½ çš„èªžéŸ³è§£æ§‹æˆå…§å®¹å’ŒéŸ³é«˜ï¼Œå®Œå…¨æ¨æ£„ä½ çš„è²éŸ³èº«ä»½ï¼Œç„¶å¾Œä½¿ç”¨ä¸€å€‹è¨“練好的神經網路從é 開始釿§‹éŸ³è¨Šã€‚輸出的是一個新的è²éŸ³ï¼Œè€Œä¸æ˜¯èˆŠè²éŸ³çš„æ¿¾æ³¢ç‰ˆæœ¬ã€‚這就是為什麼 RVC çš„è²éŸ³å¸¸å¸¸èˆ‡çœŸå¯¦äººè²é›£ä»¥å€åˆ†â€”â€”å› ç‚ºå®ƒå€‘æ˜¯ç”±ä¸€å€‹å¸ç¿’了人類實際è²éŸ³æ¨¡å¼çš„æ¨¡åž‹åˆæˆçš„。
RVC 模型檔案詳解
當人們分享或下載 RVC 語音模型時,會涉åŠä¸‰ç¨®é¡žåž‹çš„æª”案。了解æ¯ç¨®æª”æ¡ˆçš„ä½œç”¨æœ‰åŠ©æ–¼ä½ ç²å¾—最佳效果。
- ●.pth (PyTorch 模型) — æ ¸å¿ƒèªžéŸ³æ¨¡åž‹ï¼ŒåŒ…å«è¨“練好的神經網路權é‡ã€‚é€™æ˜¯èªžéŸ³è½‰æ›æ‰€éœ€çš„ä¸»è¦æª”案。一個典型的 .pth 模型大å°ç‚º 50-100 MBï¼Œå®ƒæ•æ‰äº†ç›®æ¨™èªžéŸ³å®Œæ•´çš„è²éŸ³ç‰¹å¾µï¼šéŸ³è‰²ã€å…±é³´ã€æ°£æ¯æ„Ÿå’Œå…±æŒ¯å³°çµæ§‹ã€‚
- ●.index (FAISS 索引) — 一個å¯é¸ä½†å»ºè°ä½¿ç”¨çš„附屬檔案,包å«ä¸€å€‹å¯æœå°‹çš„訓練音訊特徵å‘é‡è³‡æ–™åº«ã€‚在推論期間,模型使用æ¤ç´¢å¼•來檢索訓練數據ä¸çš„真實è²å¸æ¨¡å¼ï¼Œå¾žè€Œé¡¯è‘—æé«˜è¼¸å‡ºå“質並減少瑕疵。沒有 .index 檔案,轉æ›ä»ç„¶å¯ä»¥é€²è¡Œï¼Œä½†è²éŸ³å¯èƒ½è½èµ·ä¾†æ›´æ™®é€šã€‚
- ●.onnx (Open Neural Network Exchange) — 一種優化éŽçš„坿”œå¼æ¨¡åž‹æ ¼å¼ã€‚å°‡ .pth 模型轉æ›ç‚º .onnx å¯ä»¥å¯¦ç¾æ›´å¿«çš„æŽ¨è«–ã€æ›´ä½Žçš„記憶體使用é‡ï¼Œä¸¦èˆ‡éž Python çš„é‹è¡Œç’°å¢ƒç›¸å®¹ã€‚åƒ Echo Live 這樣的應用程å¼ä½¿ç”¨ .onnx æ¨¡åž‹ï¼Œå› ç‚ºå®ƒå€‘å¯ä»¥è¢«åŽŸç”ŸåŠ è¼‰ï¼Œè€Œç„¡éœ€ Python è§£è¯å™¨æˆ– PyTorch 安è£ã€‚
RVC v1 vs v2
RVC v2 是目å‰çš„æ¨™æº–。相較於 v1,最顯著的改進是特徵æå–çš„ç¶åº¦ï¼šv1 使用來自 HuBERT çš„ 256 ç¶ç‰¹å¾µå‘é‡ï¼Œè€Œ v2 使用 768 ç¶å‘é‡ã€‚這種更高的ç¶åº¦èƒ½æ•æ‰æ›´è©³ç´°çš„è²éŸ³ç‰¹å¾µï¼Œç”¢ç”Ÿæ›´è‡ªç„¶ã€æ›´æº–確的轉æ›â€”â€”å°¤å…¶æ˜¯åœ¨è·¨æ€§åˆ¥è®Šè²æ™‚,差異最為明顯。RVC v2 é‚„å—益於改進的訓練穩定性和é™ä½Žçš„æŽ¨è«–å»¶é²ã€‚代價是ç¨é«˜çš„計算需求。é‡è¦çš„æ˜¯ï¼Œv1 å’Œ v2 模型ä¸å¯äº’æ›â€”—在 v1 上訓練的模型無法在 v2 æµç¨‹ä¸ä½¿ç”¨ï¼Œé™¤éžé‡æ–°è¨“ç·´ã€‚å°æ–¼æ–°å°ˆæ¡ˆï¼Œè«‹å‹™å¿…使用 v2。
RVC 與其他語音 AI 技術的比較
RVC 並éžå”¯ä¸€çš„語音 AI æŠ€è¡“ï¼Œä½†å®ƒä½”æ“šäº†ä¸€å€‹ç‰¹å®šçš„åˆ©åŸºå¸‚å ´ï¼Œä½¿å…¶éžå¸¸é©åˆå³æ™‚變è²ã€‚
- ●RVC vs Pitch Shifting — Pitch Shifting ä¿®æ”¹é »çŽ‡ã€‚RVC 生æˆå…¨æ–°çš„音訊。Pitch Shifting è½èµ·ä¾†åƒæ©Ÿå™¨äººï¼›RVC è½èµ·ä¾†åƒäººé¡žã€‚å“è³ªä¸Šæ²’æœ‰å¯æ¯”性。
- ●RVC vs TTS (æ–‡å—轉語音) — TTS 從文å—輸入生æˆèªžéŸ³ã€‚RVC 從音訊輸入轉æ›èªžéŸ³ã€‚TTS 用於內容生æˆï¼ˆé…éŸ³ã€æœ‰è²æ›¸ï¼‰ï¼›RVC ç”¨æ–¼å³æ™‚é€šè¨Šï¼ˆéŠæˆ²ã€é€šè©±ã€ç›´æ’)。它們解決的是ä¸åŒçš„å•題。 用任何角色的聲音生成高品質語音。在 Echo Live 中選擇內建聲音,或使用相容的 RVC 角色模型。 Kokoro 或 Supertonic 生成語音,RVC 將其轉換為角色的聲音。全程本機執行,支援匯出 WAV 和儲存至 Soundboard。匯入自訂模型需要 Pro。
- ●RVC vs SVC (æŒè²è½‰æ›) — SVC 是 RVC 的近親,專為æŒå”±è€Œå„ªåŒ–。它能比標準 RVC æ›´å¥½åœ°è™•ç†æŒçºŒéŸ³ã€é¡«éŸ³å’ŒéŸ³æ¨‚樂å¥ã€‚使用 SVC 進行 AI æŒæ›²ç¿»å”±ï¼›ä½¿ç”¨ RVC é€²è¡Œå³æ™‚變è²ã€‚
- ●RVC vs GPT-SoVITS / VALL-E — 這些較新的架構æä¾›é›¶æ¨£æœ¬èªžéŸ³å…‹éš†ï¼šåªéœ€å¹¾ç§’é˜çš„åƒè€ƒéŸ³è¨Šå³å¯å°‡ä½ çš„è²éŸ³è½‰æ›ç‚ºç›®æ¨™è²éŸ³ï¼Œç„¡éœ€è¨“ç·´ã€‚ä»£åƒ¹æ˜¯æ›´é«˜çš„è¨ˆç®—æˆæœ¬ã€è¼ƒä¸ä¸€è‡´çš„çµæžœï¼Œä¸”å°æ–¼ä½Žå»¶é²çš„峿™‚使用尚ä¸å¯¦ç”¨ã€‚RVC ä»ç„¶æ˜¯å³æ™‚è½‰æ›æ–¹é¢æœ€ç¶“å¾—èµ·è€ƒé©—çš„é¸æ“‡ã€‚
峿™‚效能
RVC çš„æž¶æ§‹æ•ˆçŽ‡é«˜ï¼Œè¶³ä»¥åœ¨æ¶ˆè²»ç´šç¡¬é«”ä¸Šå³æ™‚é‹è¡Œã€‚在ç¾ä»£ GPU(NVIDIA GTX 1650 æˆ–æ›´é«˜éšŽï¼‰ä¸Šï¼Œå–®æ¬¡æŽ¨è«–é€šå¸¸éœ€è¦ 10-30 æ¯«ç§’ï¼Œé€™å°æ–¼å³æ™‚å°è©±ã€éŠæˆ²å–Šè©±å’Œç›´æ’ä¾†èªªå·²ç¶“è¶³å¤ å¿«ã€‚å¼·çƒˆå»ºè°ä½¿ç”¨ GPU åŠ é€Ÿï¼ˆé€éŽ NVIDIA çš„ CUDAã€Windows 上的 AMD/Intel çš„ DirectML 或 Apple Silicon çš„ CoreML)以實ç¾å³æ™‚使用。僅使用 CPU 進行推論是å¯èƒ½çš„ï¼Œä½†æœƒå¢žåŠ é¡¯è‘—çš„å»¶é²ï¼Œä½¿å¾—å¤§å¤šæ•¸ç”¨æˆ¶çš„å³æ™‚å°è©±è®Šå¾—ä¸åˆ‡å¯¦éš›ã€‚
去哪裡找語音模型
RVC 社群已經產生了數åƒå€‹å…費的語音模型。最大的儲å˜åº«æ˜¯ Hugging Face(æœå°‹ã€ŒRVC modelã€ï¼‰ã€Hugging Face(專門的語音模型託管)以åŠç¤¾ç¾¤ Discord 伺æœå™¨ï¼Œå‰µä½œè€…æ¯å¤©éƒ½æœƒåœ¨ä¸Šé¢åˆ†äº«æ–°æ¨¡åž‹ã€‚模型涵蓋了原創è²éŸ³ã€è§’色ã€å人以åŠè‡ªè¨‚創作。å“質åƒå·®ä¸é½Šâ€”—在乾淨ã€ç¨ç«‹çš„äººè²æ•¸æ“šä¸Šè¨“練,並使用 10-30 分é˜éŸ³è¨Šçš„æ¨¡åž‹èƒ½ç”¢ç”Ÿæœ€ä½³æ•ˆæžœã€‚
é–‹æºç”Ÿæ…‹ç³»
RVC 最åˆç”± GitHub 上的 RVC-Project 團隊開發,並作為開æºè»Ÿé«”發布。這種開放性使得生態系æˆç‚ºå¯èƒ½ï¼šä»»ä½•人都å¯ä»¥è¨“練模型,任何人都å¯ä»¥åŸºæ–¼ RVC 開發應用程å¼ï¼Œä»»ä½•人都å¯ä»¥è²¢ç»æ”¹é€²ã€‚基於 RVC 的主è¦å°ˆæ¡ˆåŒ…括 Applioï¼ˆé ˜å…ˆçš„è¨“ç·´å·¥å…·ï¼‰ã€w-okada Voice Changer(一個多模型語音轉æ›ä¼ºæœå™¨ï¼‰å’Œ Echo Liveï¼ˆä¸€æ¬¾å°ˆæ³¨æ–¼å³æ™‚ RVC 並整åˆäº† DSP 音效和音效æ¿çš„原生桌é¢è®Šè²å™¨ï¼‰ã€‚該技術是å…è²»ä¸”å¯¬é¬†çš„â€”â€”æ ¸å¿ƒ RVC 引擎沒有授權費或使用é™åˆ¶ã€‚
開始使用 RVC
使用 RVC 最快的方法是é€éŽä¸€å€‹èƒ½ç‚ºä½ è™•ç†æ•´å€‹æµç¨‹çš„æ¡Œé¢æ‡‰ç”¨ç¨‹å¼ã€‚Echo Live (voicechanger.live) 將整個 RVC 推論引擎打包到一個原生安è£ç¨‹å¼ä¸â€”—無需 Pythonã€ç„¡éœ€å‘½ä»¤åˆ—ã€ç„¡éœ€æ‰‹å‹•ç®¡ç†æ¨¡åž‹ã€‚å°æ–¼æƒ³è¦è¨“練自訂語音模型的用戶,Applio æ˜¯æœ€å—æ¡è¿Žçš„é–‹æºè¨“ç·´å·¥å…·ã€‚å°æ–¼å¸Œæœ›åœ¨å¤šç¨®æ¨¡åž‹æž¶æ§‹ï¼ˆåŒ…括 Beatrice å’Œ so-vits-svc ä»¥åŠ RVCï¼‰ä¸Šæ“æœ‰æœ€å¤§æŽ§åˆ¶æ¬Šçš„æŠ€è¡“用戶,w-okada Voice Changer æä¾›äº†ä¸€å€‹å¯é…置的基於伺æœå™¨çš„è¨å®šã€‚