lang: vi slug: rvc title: ‘RVC: Triển khai chuyển đổi giọng nói AI với hơn 35 nghìn sao’ description: ‘RVC (Chuyển đổi giọng nói dựa trên truy xuất) là khung chuyển đổi giọng nói dựa trên VITS tương thích với GPT-SoVITS, Coqui TTS và demucs. Hướng dẫn này đề cập đến việc triển khai Docker, quy trình đào tạo, tích hợp API và tăng cường sản xuất.’ tags: [“ai-tools”, “open-source”, “speech”, “tts”, “voice-ai”] date: 2026-05-19 00:00:00+08:00 lastmod: 2026-05-19 00:00:00+08:00 tech_stack: [] application_domain: Ai Tools source_version: ’' licensing_model: Open Source license_type: MIT file_size: ’' file_md5: ’' download_url: ’' backup_url: ’' github_repo: ‘https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI' last_maintained: ‘2026-05-19’ draft: false categories: [‘ai-tools’] aliases:- /bài/rvc/ câu hỏi thường gặp:

  • q: ‘RVC cần bao nhiêu dữ liệu huấn luyện để sao chép giọng nói?’ a: ‘RVC có thể đào tạo với âm thanh rõ ràng chỉ trong 1 phút, nhưng 10 đến 30 phút mang lại kết quả tốt hơn đáng kể. Chất lượng âm thanh quan trọng hơn số lượng, do đó, một bản ghi âm trong phòng thu ngắn sẽ tốt hơn nhiều giờ gọi điện thoại ồn ào.’
  • q: ‘RVC có thể chạy trên CPU mà không cần GPU không?’ a: ‘Suy luận RVC có thể chạy trên CPU, mặc dù nó chậm hơn khoảng 10 đến 20 lần so với GPU. Tuy nhiên, việc đào tạo yêu cầu GPU NVIDIA hỗ trợ CUDA với ít nhất 4GB VRAM và việc đào tạo CPU là không thực tế nếu tốc độ chậm hơn 50 lần trở lên.’
  • q: ‘Sự khác biệt giữa RVC v1 và v2 là gì?’ a: ‘RVC v2 nâng cấp bộ mã hóa nội dung từ HuBERT 9 lớp với các tính năng 256 chiều lên HuBERT 12 lớp với các tính năng 768 chiều và thêm bộ phân biệt 3 chu kỳ để có chất lượng âm thanh tốt hơn. Các mô hình được đào tạo trước v2 không tương thích ngược với v1 và tất cả các dự án mới nên sử dụng v2.’
  • q: ‘Làm cách nào để giảm hiện tượng rò rỉ âm sắc từ loa nguồn trong RVC?’ a: ‘Điều chỉnh tham số index_rate, tham số này kiểm soát mức độ suy luận phụ thuộc vào chỉ mục truy xuất Faiss so với âm thanh nguồn. Bắt đầu ở mức 0,75 và tăng lên 1,0 để thu được nhiều đặc điểm hơn từ giọng đã được đào tạo hoặc giảm xuống 0,3 đến 0,5 nếu âm thanh phát ra có vẻ giả tạo.’
  • q: ‘RVC có thể chuyển đổi văn bản thành giọng nói hay chỉ âm thanh thành âm thanh?’ a: ‘RVC chỉ thực hiện chuyển đổi giọng nói từ âm thanh sang âm thanh và không thể tạo giọng nói từ văn bản. Để có quy trình nhân bản chuyển văn bản thành giọng nói đầy đủ, hãy kết hợp quy trình đó với công cụ TTS như GPT-SoVITS, Coqui TTS hoặc Edge-TTS.’

featureImage: /images/articles/rvc-triển-khai-chuyển-đổi-giọng-nói-ai-v.png —{{< thông tin tài nguyên >}}

Biểu trưng RVC
## Giới thiệuBạn cần một quy trình chuyển đổi giọng nói sẽ đào tạo trong 10 phút, chạy trên một GPU duy nhất và tạo ra đầu ra có chất lượng phát sóng. Hệ sinh thái nguồn mở đã tạo ra hàng chục công cụ nhân bản giọng nói, nhưng hầu hết đều yêu cầu hàng giờ đào tạo, bộ dữ liệu khổng lồ hoặc API đám mây tính phí theo phút. RVC (Chuyển đổi giọng nói dựa trên truy xuất), một khung dựa trên VITS với hơn 35.700 sao GitHub, giảm thời gian đào tạo xuống dưới 10 phút với chỉ 10 phút âm thanh rõ ràng. Hướng dẫn này hướng dẫn cách thiết lập RVC sẵn sàng cho sản xuất — Triển khai Docker, quy trình đào tạo, tích hợp API và các bước tăng cường bạn cần trước khi chuyển đến người dùng.##RVC là gì?RVC là một khung chuyển đổi giọng nói nguồn mở giúp chuyển đổi giọng nói của người này sang giọng nói của người khác trong khi vẫn giữ nguyên nội dung lời nói, ngữ điệu và nhịp điệu. Được xây dựng trên VITS với mô-đun khớp tính năng dựa trên truy xuất, nó đạt được thời gian đào tạo dưới 10 phút trên GPU dành cho người tiêu dùng và hỗ trợ suy luận theo thời gian thực với độ trễ thấp tới 90 mili giây.## Cách thức hoạt động của RVCKiến trúc của RVC kết hợp bốn mô-đun cốt lõi:Trích xuất tính năng nội dung — Sử dụng ContentVec (một biến thể tách rời của HuBERT) để trích xuất các đặc điểm ngữ âm và ngôn ngữ bất biến của người nói từ âm thanh nguồn. ContentVec loại bỏ nhận dạng người nói trong khi vẫn bảo toàn thông tin nội dung, khiến nó trở nên lý tưởng cho các tác vụ chuyển đổi giọng nói.Trích xuất cao độ — Sử dụng RMVPE (Mô hình mạnh mẽ để ước tính cao độ giọng hát), được trình bày tại Interspeech 2023, để trích xuất tần số cơ bản (F0). RMVPE xử lý âm thanh đa âm và hoạt động chính xác ngay cả khi việc tách nguồn không hoàn hảo.Mô hình hóa âm thanh — Được xây dựng trên VITS (Suy luận biến đổi với phương pháp học đối nghịch để chuyển văn bản thành giọng nói từ đầu đến cuối), một VAE có điều kiện được tăng cường bằng các luồng chuẩn hóa. VITS tạo ra âm thanh có độ trung thực cao thông qua quá trình đào tạo đối nghịch giữa bộ tạo và bộ phân biệt đối xử nhiều giai đoạn.Mô-đun truy xuất — Cải tiến đặc trưng của RVC. Trong quá trình đào tạo, các tính năng nội dung được lập chỉ mục trong cơ sở dữ liệu vectơ Faiss. Trong quá trình suy luận, các tính năng nguồn được thay thế bằng top-K lân cận gần nhất từ ​​tập huấn luyện (K=8 theo mặc định), giảm đáng kể hiện tượng rò rỉ âm sắc từ loa nguồn. Tham số index_rate (α, thường là 0,3) kiểm soát sự kết hợp giữa các đối tượng được truy xuất và đối tượng nguồn.
Sơ đồ kiến ​​trúc RVC
## Cài đặt & Thiết lập### Điều kiện tiên quyếtRVC chạy trên Linux, macOS và Windows. Để đào tạo, cần có GPU NVIDIA có VRAM ít nhất 4GB (khuyến nghị 8GB+). Chỉ dành cho suy luận, CPU hoạt động với độ trễ chấp nhận được.Phần cứng tối thiểu:

  • GPU: NVIDIA GTX 1660 6GB/RTX 2060 8GB (đào tạo); 4GB VRAM (chỉ suy luận)
  • CPU: Bộ xử lý Intel/AMD 4 nhân
  • RAM: tối thiểu 8GB, khuyến nghị 16GB
  • Dung lượng: 10GB dung lượng trống cho các mô hình và phần phụ thuộc### Phương pháp 1: Triển khai Docker (Khuyến nghị cho sản xuất)Dockerfile chính thức sử dụng CUDA 11.6.2 trên Ubuntu 20.04 với Python 3.9:``` bash
Sao chép kho lưu trữ #

git clone https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI.git cd Dựa trên truy xuất-Chuyển đổi giọng nói-WebUI

Xây dựng hình ảnh Docker #

docker build -t rvc-webui:latest .

Chạy với sự hỗ trợ GPU và gắn kết âm lượng #

docker run -d –name rvc \ –gpus tất cả \ -p 7865:7865 \ -v $(pwd)/weights:/app/weights \ -v $(pwd)/opt:/app/opt \ rvc-webui:mới nhất

với người dùng docker-compose:```
yam
l
phiên bản: '3.8'dịch vụ: 
rvc: 
xây dựng: . 
container_name: rvc-webui 
thời gian chạy: nvidia 
môi trường: 
- NVIDIA_VISIBLE_DEVICES=tất cả 
cổng: 
- "7865:7865" 
khối lượng: 
- ./weights:/app/weights 
- ./opt:/app/opt 
- ./assets:/app/assets 
triển khai: 
tài nguyên: 
đặt chỗ: 
thiết bị: 
- trình điều khiển: nvidia 
```y
a
m
l
phiên bản: '3.8' 

dịch vụ: 
rvc: 
xây dựng: . 
container_name: rvc-webui 
thời gian chạy: nvidia 
môi trường: 
- NVIDIA_VISIBLE_DEVICES=tất cả 
cổng: 
- "7865:7865" 
khối lượng: 
- ./weights:/app/weights 
- ./opt:/app/opt 
- ./assets:/app/assets 
triển khai: 
tài nguyên: 
đặt chỗ: 
thiết bị: 
- trình điều khiển: nvidia 
đếm: 1 
khả năng: [gpu] 
khởi động lại: trừ khi dừng lại 
```c
ài
đặt -r request.txt# Tải xuống các mô hình đã được huấn luyện trước 
công cụ python/download_models.py# Hoặc tải xuống thủ công từ HuggingFace 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretraining_v2/D40k.pth -P assets/pretraining_v2/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretraining_v2/G40k.pth -P assets/pretraining_v2/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretraining_v2/f0D40k.pth -P ass```
bas
h
# Bắt đầu với docker-compose 
docker-soạn lên -d 

# Kiểm tra nhật ký 
nhật ký soạn thảo docker -f rvc 
```/f0G40k.pth -P nội dung/pretrain_v2/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt -P assets```
bas
h
# Sao chép kho lưu trữ 
git clone https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI.git 
cd Dựa trên truy xuất-Chuyển đổi giọng nói-WebUI 

#Tạo môi trường ảo 
python3 -m venv venv 
nguồn venv/bin/kích hoạt 

# Cài đặt phụ thuộc 
cài đặt pip -r require.txt 

# Tải xuống các mô hình đã được huấn luyện trước 
công cụ python/download_models.py 

# Hoặc tải xuống thủ công từ HuggingFace 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretraining_v2/D40k.pth -P assets/pretraining_v2/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretraining_v2/G40k.pth -P assets/pretraining_v2/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretraining_v2/f0D40k.pth -P assets/pretraining_v2/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretraining_v2/f0G40k.pth -P assets/pretraining_v2/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt -P assets/hubert/ 
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt -P assets/rmvpe/ 
```b
a
o
gồm) để tách nguồn:``` bash 
# Tách giọng hát khỏi nhạc nền 
công cụ python/uvr5/uvr5_cli.py \ 
--input_path ./raw_audio/song_with_music.wav \ 
--output_path ./dataset/ \ 
--model_name "HP2-人声giọng hát+非人声nhạc cụ" 
```### Bước 2: Tiền xử lý và trích xuất tính năngTrong tab WebUI **Train**:1. Đặt **Tên thử nghiệm** (ví dụ: `my_voice_v2`) 
2. Đặt **Tốc độ lấy mẫu mục tiêu** thành 40kHz (được khuyến nghị) 
3. Đặt **Phiên bản RVC** thành v2 
4. Đặt **Kiến trúc mô hình** thành `rmvpe_gpu` 
5. Đặt **Đường dẫn tập dữ liệu** vào thư mục âm thanh của bạn 
6. Nhấp vào **Đào tạo bằng một cú nhấp chuột**Hoặc thông qua dòng lệnh:``` bash 
# Bước 1: Tiền xử lý (mẫu lại, cắt lát, loại bỏ khoảng lặng) 
python trainset_preprocess_pipeline_print.py \ 
./dataset/my_voice \ 
40000 \ 
8 # số luồng CPU#Bước 2: Trích xuất đặc trưng bằng ContentVec 
python extract_feature_print.py \ 
--model_name my_voice_v2 \ 
--sample_rate 40000 \ 
--pitch_extractor rmvpe \
 --gpu 0# Bước 3: Huấn luyện mô hình 
trăn train_nsf_sim_cache_sid_load_pretrain.py \ 
--model_name my_voice_v2 \ 
--sample_rate 40000 \ 
--batch_size 8 \ 
-``` phản đối 
# Cài đặt phần phụ thuộc ROCm (Ubuntu/Debian) 
sudo apt cài đặt rocm-hip-sdk rocm-opencl-sdk 

# Đặt biến môi trường 
xuất ROCM_PATH=/opt/rocm 
xuất HSA_OVERRIDE_GFX_VERSION=10.3.0 

# Thêm người dùng vào nhóm kết xuất và video 
sudo usermod -aG kết xuất $USER 
sudo usermod -aG video $USER 

# Cài đặt các yêu cầu cụ thể của AMD 
cài đặt pip -r yêu cầu-amd.txt

nhật ký/ └── my_voice_v2/ ├── đã thêm_IVF512_Flat_nprobe_1.index # Chỉ mục truy xuất Faiss ├── G_.pth # Điểm kiểm tra máy phát điện ├── D_.pth # Điểm kiểm tra phân biệt đối xử └── config.json # Cấu hình mô hình ![Tab đào tạo RVC WebUI](https://raw.githubusercontent.com/RVC-Project/Retrieval bas h

Khởi động giao diện web Gradio #

python suy luận-web.py

WebUI sẽ có tại http://localhost:7865 #

|----------|-------------|--------|--------------|-------| 
| RTX 3090 (24GB) | Âm thanh 10 phút | 200 | ~18 phút | Xuất sắc | 
| RTX 4090 (24GB) | Âm thanh 10 phút | 200 | ~12 phút | Xuất sắc | 
| RTX 3060 (12GB) | Âm thanh 10 phút | 200 | ~35 phút | Rất Tốt | 
| GTX 1660 (6GB) | Âm thanh 10 phút | 200 | ~90 phút | Tốt | 
| Colab T4 (16GB) | Âm thanh 10 phút | 200 | ~40 phút | Rất Tốt |## Tích hợp với các công cụ phổ biến### Tích hợp 1: GPT-SoVITS (Đường ống TTS + RVC)GPT-SoVITS tạo lời nói từ văn bản; RVC c```
bas
h
# Tách giọng hát khỏi nhạc nền 
công cụ python/uvr5/uvr5_cli.py \ 
--input_path ./raw_audio/song_with_music.wav \ 
--output_path ./dataset/ \ 
--model_name "HP2-人声giọng hát+非人声nhạc cụ" 
```, loa_wav: str, rvc_model: str): 
"""GPT-SoVITS TTS → Đường dẫn chuyển đổi giọng nói RVC""" 

# Bước 1: Tạo giọng nói với GPT-SoVITS 
tts_response = request.post("http://localhost:9880/tts", json={ 
"văn bản": văn bản, 
"refer_wav_path": loa_wav, 
"prompt_text": "Văn bản nhắc nhở tham khảo", 
"prompt_lingu": "en", 
"text_ngôn ngữ": "en" 
}) 

với open("/tmp/tts_output.wav", "wb") là f: 
f.write(tts_response.content) 

# Bước 2: Convert giọng nói với RVC API 
rvc_response = request.```
bas
h
# Bước 1: Tiền xử lý (mẫu lại, cắt lát, loại bỏ khoảng lặng) 
python trainset_preprocess_pipeline_print.py \ 
./dataset/my_voice \ 
40000 \ 
8 # số luồng CPU 

#Bước 2: Trích xuất đặc trưng bằng ContentVec 
python extract_feature_print.py \ 
--model_name my_voice_v2 \ 
--sample_rate 40000 \ 
--pitch_extractor rmvpe \ 
--gpu 0 

# Bước 3: Huấn luyện mô hình 
trăn train_nsf_sim_cache_sid_load_pretrain.py \ 
--model_name my_voice_v2 \ 
--sample_rate 40000 \ 
--batch_size 8 \ 
--total_epoch 200 \ 
--save_every_epoch 5 \ 
--pretraining_G nội dung/pretrain_v2/f0G40k.pth \ 
--pretrain_D nội dung/pretrain_v2/f0D40k.pth \ 
--gpu 0 
```t
_path: str): 
# Tạo bằng Coqui XTTS v2 
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", gpu=True) 
tts.tts_to_file( 
văn bản=văn bản, 
loa_wav="reference.wav", 
ngôn ngữ="vi", 
file_path="/tmp/coqui_out.wav" 
) 

# Chuyển đổi qua RVC 
với open("/tmp/coqui_out.wav", "rb") là f: 
tập tin = {"tập tin": f} 
dữ liệu = { 
"model_name": rvc_model, 
"cao độ": 0, 
"index_rate": 0,5 
} 
phản hồi = request.post( 
"http://localhost:7865/api/voice_conversion", 
tập tin=tập tin, 
dữ liệu=dữ liệu 
) 

với open(output_path, "wb") là f: 
``` bash 
# Tạo chỉ mục Faiss để truy xuất 
công cụ python/suy luận/train_index.py \ 
--model_name my_voice_v2 \ 
--sample_rate 40000 
```c
ách
ly giọng hát trước khi tập luyện:``` bash 
# Cài đặt demucs 
cài đặt pip demucs# Tách giọng hát bằng demucs (chất lượng tốt hơn UVR5 cho các bản phối phức tạp) 
demucs -``` 
nhật ký/ 
└── my_voice_v2/ 
├── đã thêm_IVF512_Flat_nprobe_1.index # Chỉ mục truy xuất Faiss 
├── G_*.pth # Điểm kiểm tra máy phát điện 
├── D_*.pth # Điểm kiểm tra phân biệt đối xử 
└── config.json # Cấu hình mô hình 
```riev
a
l
-based-Voice-Conversion-WebUI/main/assets/gui_preview.png)RVC bao gồm GUI chuyển đổi giọng nói theo thời gian thực cho các ứng dụng trực tiếp:``` bash 
# Khởi động GUI thời gian thực 
trăn gui_v1.py# Hoặc với DirectML cho GPU AMD/Intel 
trăn gui_v1.py --dml# Các thông số chính cho độ trễ thấp: 
# - Thời gian chặn: 0,25s (thấp hơn = độ trễ ít hơn, CPU nhiều hơn) 
# - Làm mờ chéo: 0,05 giây 
# - Hiệp phụ: 2,5 giây 
# - Trình trích xuất cao độ: fcpe (nhanh nhất) hoặc rmvpe (chất lượng tốt nhất) 
```C
ấu
hình để phát trực tuyến (độ trễ từ đầu đến cuối 90ms với ASIO):``` con trăn 
# ví dụ gui_config.py 
cấu hình = { 
"block_time": khối 0,1, # 100ms cho độ trễ thấp hơn 
"crossfade_time": 0,04, 
"thêm_thời gian": 2.0, 
"f0method": "fcpe", # Trình trích xuất cao độ nhanh nhất 
"rms_mix_rate": 0,25, 
"index_rate": 0,3, 
"cao độ": 0, 
"I_noise_reduce": Đúng, 
"O_noise_reduce": Sai 
} 
```### Tích hợp 5: Máy chủ API (FastAPI)RVC cung cấp API REST dựa trên FastAPI để triển khai sản xuất:``` bash 
# Khởi động máy chủ API 
trăn api_240604.py# API sẽ có tại http://localhost:7865 
`````` con trăn 
# Ví dụ ứng dụng khách cho suy luận API 
yêu cầu nhập khẩu# Lo``` trăn 
# gpt_sovits_rvc_pipeline.py 
nhập khẩu quy trình con 
yêu cầu nhập khẩu 
hệ điều hành nhập khẩu 

def tts_then_convert(văn bản: str, loa_wav: str, rvc_model: str): 
"""GPT-SoVITS TTS → Đường dẫn chuyển đổi giọng nói RVC""" 

# Bước 1: Tạo giọng nói với GPT-SoVITS 
tts_response = request.post("http://localhost:9880/tts", json={ 
"văn bản": văn bản, 
"refer_wav_path": loa_wav, 
"prompt_text": "Văn bản nhắc nhở tham khảo", 
"prompt_lingu": "en", 
"text_ngôn ngữ": "en" 
}) 

với open("/tmp/tts_output.wav", "wb") là f: 
f.write(tts_response.content) 

# Bước 2: Convert giọng nói với RVC API 
rvc_response = request.post("http://localhost:7865/voice_conversion", json={ 
"input_audio": "/tmp/tts_output.wav", 
"model_name": rvc_model, 
"pitch_shift": 0, 
"index_rate": 0,75, 
"bán kính bộ lọc": 3, 
"volume_envelope": 0,25 
}) 

trả về rvc_response.json()["output_path"] 

kết quả = tts_then_convert( 
text="Xin chào, đây là giọng nói nhân bản.", 
loa_wav="./reference.wav", 
rvc_model="my_voice_v2" 
) 
print(f"Âm thanh đã chuyển đổi được lưu vào: {result}") 
```) | 0,05x | 0,15x | 0,08x | 0,02x |### Trường hợp sử dụng sản xuất**AI Music Covers** — Chuyển đổi các bản nhạc để bắt chước giọng hát của nghệ sĩ cụ thể cho nội dung giải trí. Khả năng trích cao độ RMVPE của RVC duy trì khả năng tái tạo giai điệu chính xác ngay cả khi phát giọng phức tạp.**Sửa đổi giọng nói phát trực tiếp** — Thay đổi giọng nói theo thời gian thực cho người sáng tạo nội dung. Với trình điều khiển GUI và ASIO, độ trễ từ đầu đến cuối đạt tới 90 mili giây, hầu hết khán giả không thể nhận ra.**Bảo vệ quyền riêng tư** — Ẩn danh danh tính người nói trong các cuộc phỏng vấn được ghi âm, âm thanh của trung tâm cuộc gọi và dữ liệu giọng nói nhạy cảm trong khi vẫn giữ được nội dung cảm xúc và tính dễ hiểu.**Bản địa hóa nội dung** — Lồng tiếng nội dung video trong khi vẫn duy trì đặc điểm giọng nói của người nói gốc trên nhiều ngôn ngữ khi kết hợp với quy trình TTS.**Tăng cường tập dữ liệu giọng nói** — Tạo dữ liệu đào tạo tổng hợp cho hệ thống ASR bằng các ngôn ngữ có nguồn tài nguyên thấp, như đã được chứng minh trong nghiên cứu học thuật đạt được mức mất phân kỳ KL là 0,68 sau 200 kỷ nguyên.## Cách sử dụng nâng cao / Tăng cường sản xuất### Cân nhắc về bảo mật``` con trăn 
# api_production.py — Trình bao bọc API cứng cáp 
từ nhập fastapi FastAPI, HTTPException, Phụ thuộc 
từ fastapi.secu```
pytho
n
# coqui_rvc_bridge.py 
từ TTS.api nhập TTS 
yêu cầu nhập khẩu 

def coqui_to_rvc(text: str, rvc_model: str, out_path: str): 
# Tạo bằng Coqui XTTS v2 
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", gpu=True) 
tts.tts_to_file( 
văn bản=văn bản, 
loa_wav="reference.wav", 
ngôn ngữ="vi", 
file_path="/tmp/coqui_out.wav" 
) 

# Chuyển đổi qua RVC 
với open("/tmp/coqui_out.wav", "rb") là f: 
tập tin = {"tập tin": f} 
dữ liệu = { 
"model_name": rvc_model, 
"cao độ": 0, 
"index_rate": 0,5 
} 
phản hồi = request.post( 
"http://localhost:7865/api/voice_conversion", 
tập tin=tập tin, 
dữ liệu=dữ liệu 
) 

với open(output_path, "wb") là f: 
f.write(response.content) 
trả về đường dẫn đầu ra 
``` con trai 
└── custom_brand_voice/ 
├── model.pth 
├── chỉ mục.faiss 
└── config.json 
`````` con trăn 
# Trình tải mô hình động để triển khai nhiều người thuê 
hệ điều hành nhập khẩu 
nhập khẩu toàn cầudef list_available_models(models_dir="./models"): 
"""Liệt kê tất cả các mẫu giọng nói có sẵn""" 
mô hình = [] 
đối với model_dir trong glob.glob(os.path.join(models_dir, "*/")): 
tên = os.path.basename(os.path.dirname(model_dir)) 
pth_files = glob.glob(os.path.join(model_dir, "*.pth")) 
index_files = glob.glob(os.path.join(model_dir, "*.faiss")) + \ 
glob.glob(os.path.join(model_dir, "*.index")) 
nếu pth_files và index_files: 
models.append({ 
"tên": tên, 
"pth": pth_files[0], 
"chỉ mục": index_files[0] 
}) 
trả lại mô hình 
```### Giám sát và ghi nhật ký``` con trăn 
# giám sát.py — Số liệu tương thích với Prometheus 
từ prometheus_client bộ đếm nhập, biểu đồ, start_http_s```
bas
h
# Cài đặt demucs 
cài đặt pip demucs 

# Tách giọng hát bằng demucs (chất lượng tốt hơn UVR5 cho các bản phối phức tạp) 
demucs --two-stems=vocals --mp3 --mp3-bitrate 320 input_song.mp3 

# Sử dụng bài hát riêng biệt để đào tạo RVC 
mv tách/htdemucs/input_song/vocals.wav ./dataset/clean_voice.wav 
```m
e
.time() 
thử: 
kết quả = performance_conversion(audio_path, model_name) 
chuyển đổi_count.inc() 
kết quả trả về 
ngoại trừ Ngoại lệ là e: 
error_count.labels(error_type=type(e).__name__).inc() 
nâng cao 
cuối cùng: 
chuyển đổi_duration.observe(time.time() - bắt đầu)# Điểm cuối chỉ số bắt đầu 
bắt đầu_http_server(9090) 
```### Xuất ONNX để suy luận nhanh hơn``` bash 
# Xuất mô hình đã đào tạo sang ONNX để suy luận bất khả tri về CPU/GPU 
công cụ python/export_onnx.py \ 
--checkpoint_path ./logs/my_voice_v2/G_12000.pth \ 
--outp``` bash 
# Khởi động GUI thời gian thực 
trăn gui_v1.py 

# Hoặc với DirectML cho GPU AMD/Intel 
trăn gui_v1.py --dml 

# Các thông số chính cho độ trễ thấp: 
# - Thời gian chặn: 0,25s (thấp hơn = độ trễ ít hơn, CPU nhiều hơn) 
# - Làm mờ chéo: 0,05 giây 
# - Hiệp phụ: 2,5 giây 
# - Trình trích xuất cao độ: fcpe (nhanh nhất) hoặc rmvpe (chất lượng tốt nhất) 
``` đảo ngược | Chuyển đổi giọng hát | 
| **Thời gian đào tạo** (dữ liệu 10 phút) | ~18 phút (RTX 3090) | ~45 phút | ~2 giờ | ~15 phút | 
| **VRAM GPU tối thiểu** (đào tạo) | 4GB | 8GB | 8GB | 4GB | 
| **Dữ liệu đào tạo tối thiểu** | 1 phút | 1 phút | 10 phút | 5 phút | 
| **Bộ chiết cao độ** | RMVPE / FCPE | RMVPE | Thu hoạch / Crepe | Thu hoạch / Crepe | 
| **Bộ mã hóa nội dung** | ContentVec (768-dim)```
pytho
n
# ví dụ gui_config.py 
cấu hình = { 
"block_time": khối 0,1, # 100ms cho độ trễ thấp hơn 
"crossfade_time": 0,04, 
"thêm_thời gian": 2.0, 
"f0method": "fcpe", # Trình trích xuất cao độ nhanh nhất 
"rms_mix_rate": 0,25, 
"index_rate": 0,3, 
"cao độ": 0, 
"I_noise_reduce": Đúng, 
"O_noise_reduce": Sai 
} 
```c
k
p
t
hợp nhất) | Không | Không | Không | 
| **Tích hợp UVR5** | Tích hợp | Riêng biệt | Riêng biệt | Riêng biệt | 
| **Giấy phép** | MIT | MIT | Điều khoản BSD-3 | Apache-2.0 | 
| **Sao GitHub** | 35.700+ | 43.000+ | 21.200+ | 2.800+ | 
| **Cập nhật lần cuối** | 2024-06 | 2025-04 | 2023-12 (được lưu trữ) | 2024-03 |**Khi nào nên chọn RVC:** Bạn cần đào tạo nhanh, chuyển đổi theo thời gian thực hoặc khớp tính năng dựa trên truy xuất để giảm thiểu rò rỉ âm sắc. RVC là ch```
bas
h
thực dụng 
# Khởi động máy chủ API 
trăn api_240604.py 

# API sẽ có tại http://localhost:7865 
``` nhân bản giọng nói (không chuyển đổi âm thanh sang âm thanh). GPT-SoVITS vượt trội trong việc tạo giọng nói từ văn bản với 1-```
pytho
n
# Ví dụ ứng dụng khách cho suy luận API 
yêu cầu nhập khẩu 

# Tải mô hình trước 
request.post("http://localhost:7865/load_model", json={ 
"pth_path": "./weights/my_voice_v2.pth", 
"index_path": "./logs/my_voice_v2/add_IVF512_Flat_nprobe_1.index" 
}) 

# Thực hiện chuyển đổi giọng nói 
với open("input_audio.wav", "rb") là f: 
phản hồi = request.post( 
"http://localhost:7865/voice_conversion", 
file={"file": f}, 
dữ liệu={ 
"cao độ": 0, 
"index_rate": 0,75, 
"bán kính bộ lọc": 3, 
"volume_envelope": 0,25, 
"bảo vệ": 0,33 
} 
) 

với open("converted_output.wav", "wb") là f: 
f.write(response.content) 
```k
h
ông
phù hợp với độ trung thực của các giải pháp thương mại như Nhân bản giọng nói ElevenLabs hoặc Microsoft Azure Speech Studio. Đối với việc sao chép giọng nói cấp doanh nghiệp, API trả phí vẫn dẫn đầu.**Hạn chế kiểm soát cảm xúc.** RVC duy trì cảm xúc và giai điệu của âm thanh nguồn nhưng không thể điều khiển biểu hiện cảm xúc một cách độc lập. Các công cụ như CosyVoice 3 hoặc Seed-VC cung cấp khả năng kiểm soát giai điệu chi tiết hơn.**Yêu cầu về phần cứng để đào tạo.** Mặc dù hiệu quả hơn các giải pháp thay thế, việc đào tạo vẫn cần có GPU NVIDIA rời. Việc đào tạo CPU là không thực tế (chậm hơn 50 lần). Phiên bản GPU đám mây sẽ tăng thêm chi phí vận hành.**Rủi ro đạo đức và pháp lý.** Công nghệ nhân bản giọng nói có thể bị lạm dụng để tạo âm thanh giả mạo, lừa đảo và mạo danh. RVC không bao gồm cơ chế hình mờ hoặc an toàn tích hợp. Việc triển khai sản xuất phải thực hiện xác minh sự đồng ý, ghi nhật ký kiểm tra và hình mờ âm thanh tổng hợp.**Khoảng trống hỗ trợ ngôn ngữ.** RVC hoạt động tốt với các ngôn ngữ chính (tiếng Anh, tiếng Trung, tiếng Nhật, tiếng Hàn) nhưng chất lượng giảm đối với các ngôn ngữ có thanh điệu (tiếng Thái, tiếng Việt) và các ngôn ngữ có nguồn tài nguyên thấp với phạm vi mô hình được huấn luyện trước hạn chế.## Câu hỏi thường gặp### RVC cần bao nhiêu dữ liệu đào tạo? 
RVC có thể huấn luyện với âm thanh rõ ràng chỉ trong 1 phút, nhưng 10–30 phút mang lại kết quả tốt hơn đáng kể. Điều quan trọng là chất lượng âm thanh chứ không phải số lượng. Một bản ghi âm trong phòng thu dài 10 phút sẽ tốt hơn 2 giờ gọi điện thoại ồn ào. Giữ tiếng ồn xung quanh, âm nhạc và âm vang ở mức tối thiểu.### RVC có thể chỉ chạy trên CPU không? 
Có, chỉ để suy luận. Việc đào tạo yêu cầu GPU có khả năng CUDA. Suy luận của CPU chậm hơn 10–20 lần so với GPU nhưng hoạt động cho các tác vụ xử lý hàng loạt trong đó độ trễ không quá quan trọng. Để chuyển đổi theo thời gian thực, chúng tôi khuyên bạn nên sử dụng GPU có ít nhất 4GB VRAM.### Sự khác biệt giữa RVC v1 và v2 là gì? 
RVC v2 thay đổi bộ mã hóa nội dung từ HuBERT 9 lớp với các tính năng 256 chiều thành HuBERT 12 lớp với các tính năng 768 chiều và thêm bộ phân biệt 3 giai đoạn để cải thiện chất lượng âm thanh. Tất cả các dự án mới chỉ nên sử dụng mô hình v2. Các mô hình được đào tạo trước v2 không tương thích ngược với v1.### Làm cách nào để giảm rò rỉ âm sắc trong âm thanh được chuyển đổi? 
Điều chỉnh tham số **index_rate**. Giá trị cao hơn (0,7–1,0) làm tăng sự phụ thuộc vào chỉ mục truy xuất, lấy được nhiều tính năng hơn từ ```
pytho
n
# api_production.py — Trình bao bọc API cứng cáp 
từ nhập fastapi FastAPI, HTTPException, Phụ thuộc 
từ fastapi.security nhập HTTPBearer, HTTPAuthorizationCredentials 
nhập hashlib 

bảo mật = HTTPBearer() 

def verify_token(thông tin xác thực: HTTPAuthorizationCredentials): 
"""Xác minh mã thông báo API để triển khai sản xuất""" 
dự kiến = hashlib.sha256(TOKEN.encode()).hexdigest() 
nếu thông tin xác thực.credentials != dự kiến: 
tăng HTTPException(status_code=401, chi tiết="Mã thông báo không hợp lệ") 
trả về Đúng 

@app.post("/voice_conversion") 
async def safe_convert( 
tập tin: Tải lên tập tin, 
thông tin xác thực: HTTPAuthorizationCredentials = Phụ thuộc (bảo mật) 
): 
verify_token(thông tin xác thực) 
# ... logic chuyển đổi 
trả về {"output_url": signature_url} 
``` và tránh mã hóa lại các tệp MP3 nhiều lần.### Làm cách nào để kết hợp hai mẫu giọng nói với nhau? 
Sử dụng tab **ckpt merge** trong WebUI. Tải hai tệp mô hình .pth và đặt tỷ lệ hòa trộn (0,0 = 100% mô hình A, 1,0 = 100% mô hình B, 0,5 = hòa trộn bằng nhau). Mô hình hợp nhất kế thừa đặc điểm của cả hai giọng nói. Điều này hoạt động tốt để tạo ra các giọng nói lai mà không cần đào tạo lại.### Tại sao giọng nói được chuyển đổi của tôi nghe như robot hoặc bị méo? 
Nguyên nhân phổ biến: (1) không đủ dữ liệu hoặc kỷ nguyên huấn luyện - đào tạo trong ít nhất 200 kỷ nguyên; (2) âm thanh đầu vào ồn ào - sử dụng UVR5 hoặc demucs để tách nguồn; (3) trích xuất cao độ không chính xác - sử dụng rmvpe để nói, thu âm để hát; (4) tốc độ lấy mẫu không khớp - đảm bảo suy luận khớp với tốc độ mẫu đào tạo.## Phần kết luậnRVC cung cấp bash``` cấp độ sản xuất 
# Tổ chức nhiều mẫu giọng nói 
mô hình/ 
├── celeb_voice_a/ 
│ ├── model.pth 
│ ├── chỉ số.faiss 
│ └── config.json 
├── celeb_voice_b/ 
│ ├── model.pth 
│ ├── chỉ số.faiss 
│ └── config.json 
└── custom_brand_voice/ 
├── model.pth 
├── chỉ mục.faiss 
└── config.json 
``` ứng dụng hỗ trợ giọng nói, RVC mang đến sự cân bằng tốt nhất về chất lượng, tốc độ và tính linh hoạt khi triển khai trong hệ sinh thái nguồn mở.**Các bước tiếp theo:** Sao chép kho lưu trữ, chạy thiết lập Docker và huấn luyện mô hình đầu tiên của bạn với 10 phút âm thanh rõ ràng. Tham gia cộng đồng RVC trên Tel```
pytho
n
# Trình tải mô hình động để triển khai nhiều người thuê 
hệ điều hành nhập khẩu 
nhập khẩu toàn cầu 

def list_available_models(models_dir="./models"): 
"""Liệt kê tất cả các mẫu giọng nói có sẵn""" 
mô hình = [] 
đối với model_dir trong glob.glob(os.path.join(models_dir, "*/")): 
tên = os.path.basename(os.path.dirname(model_dir)) 
pth_files = glob.glob(os.path.join(model_dir, "*.pth")) 
index_files = glob.glob(os.path.join(model_dir, "*.faiss")) + \ 
glob.glob(os.path.join(model_dir, "*.index")) 
nếu pth_files và index_files: 
models.append({ 
"tên": tên, 
"pth": pth_files[0], 
"chỉ mục": index_files[0] 
}) 
trả lại mô hình 
```## Nguồn & Đọc thêm- [Kho lưu trữ RVC GitHub](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI) 
- [Tài liệu chính thức của RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/en/README.en.md) 
- [Tìm hiểu kiến trúc RVC](https://gudgud96.github.io/2024/09/26/annotated-rvc/) 
- [Hướng dẫn thiết lập RVC Docker](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/Dockerfile) 
- [Tham khảo API RVC (api_240604.py)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/api_240604.py) 
- [Kho lưu trữ GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS) 
- [Giấy ContentVec](https://arxiv.org/abs/2204.09224) 
- [RMVPE Pitch Extraction Pa```
pytho
n
# giám sát.py — Số liệu tương thích với Prometheus 
từ bộ đếm nhập prometheus_client, biểu đồ, start_http_server 
thời gian nhập khẩu 

chuyển đổi_count = Bộ đếm('rvc_conversions_total', 'Tổng số chuyển đổi') 
chuyển đổi_duration = Biểu đồ('rvc_conversion_seconds', 'Độ trễ chuyển đổi') 
error_count = Bộ đếm('rvc_errors_total', 'Tổng số lỗi', ['error_type']) 

def được giám sát_convert(audio_path, model_name): 
bắt đầu = thời gian.time() 
thử: 
kết quả = performance_conversion(audio_path, model_name) 
chuyển đổi_count.inc() 
kết quả trả về 
ngoại trừ Ngoại lệ là e: 
error_count.labels(error_type=type(e).__name__).inc() 
nâng cao 
cuối cùng: 
chuyển đổi_duration.observe(time.time() - bắt đầu) 

# Điểm cuối chỉ số bắt đầu 
bắt đầu_http_server(9090) 
```SoVI
T
S
](https://github.com/RVC-Boss/GPT-SoVITS) 
- [Coqui TTS](https://github.com/coqui-ai/TTS) 
- [Demucs](https://github.com/facebookresearch/demucs) 
- [DDSP-SVC](https://github.com/yxlllc/DDSP-SVC) 
- [So-VITS-SVC](https://github.com/svc-develop-team/so-vits-svc) 
- [Faiss](https://github.com/facebookresearch/faiss) 
- [ContentVec](https://github.com/auspicious3000/contentvec) 
``` bash 
# Xuất mô hình đã đào tạo sang ONNX để suy luận bất khả tri về CPU/GPU 
công cụ python/export_onnx.py \ 
--checkpoint_path ./logs/my_voice_v2/G_12000.pth \ 
--output_path ./models/my_voice_v2/model.onnx \ 
--sample_rate 40000 

💬 Bình luận & Thảo luận