From 0de65053247fb616fa696e4c40d32411174b6310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Fri, 29 Dec 2023 00:29:57 +0800 Subject: [PATCH 1/3] sync (#1663) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 优化README头图显示格式 * 大幅优化README * Update README.md * Update README.md * 删除过时文档 --- README.md | 164 +++++++++++++++++++++++------------------- docs/小白简易教程.doc | Bin 602624 -> 0 bytes 2 files changed, 91 insertions(+), 73 deletions(-) delete mode 100644 docs/小白简易教程.doc diff --git a/README.md b/README.md index b7f3e97..b382b69 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,13 @@ [**更新日志**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/Changelog_CN.md) | [**常见问题解答**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94) | [**AutoDL·5毛钱训练AI歌手**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**对照实验记录**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95)) | [**在线演示**](https://modelscope.cn/studios/FlowerCry/RVCv2demo) - - ------- - [**English**](./docs/en/README.en.md) | [**中文简体**](./README.md) | [**日本語**](./docs/jp/README.ja.md) | [**한국어**](./docs/kr/README.ko.md) ([**韓國語**](./docs/kr/README.ko.han.md)) | [**Français**](./docs/fr/README.fr.md)| [**Türkçe**](./docs/tr/README.tr.md) -点此查看我们的[演示视频](https://www.bilibili.com/video/BV1pm4y1z7Gm/) ! + + +> 底模使用接近50小时的开源高质量VCTK训练集训练,无版权方面的顾虑,请大家放心使用 + +> 请期待RVCv3的底模,参数更大,数据更大,效果更好,基本持平的推理速度,需要训练数据量更少。 @@ -43,10 +43,6 @@
-> 底模使用接近50小时的开源高质量VCTK训练集训练,无版权方面的顾虑,请大家放心使用 - -> 请期待RVCv3的底模,参数更大,数据更大,效果更好,基本持平的推理速度,需要训练数据量更少。 - ## 简介 本仓库具有以下特点 + 使用top1检索替换输入源特征为训练集特征来杜绝音色泄漏 @@ -58,47 +54,52 @@ + 使用最先进的[人声音高提取算法InterSpeech2023-RMVPE](#参考项目)根绝哑音问题。效果最好(显著地)但比crepe_full更快、资源占用更小 + A卡I卡加速支持 +点此查看我们的[演示视频](https://www.bilibili.com/video/BV1pm4y1z7Gm/) ! + ## 环境配置 以下指令需在 Python 版本大于3.8的环境中执行。 -(Windows/Linux) -首先通过 pip 安装主要依赖: +### Windows/Linux/MacOS等平台通用方法 +下列方法任选其一。 +#### 1. 通过 pip 安装依赖 +1. 安装Pytorch及其核心依赖,若已安装则跳过。参考自: https://pytorch.org/get-started/locally/ ```bash -# 安装Pytorch及其核心依赖,若已安装则跳过 -# 参考自: https://pytorch.org/get-started/locally/ pip install torch torchvision torchaudio - -#如果是win系统+Nvidia Ampere架构(RTX30xx),根据 #21 的经验,需要指定pytorch对应的cuda版本 -#pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 +``` +2. 如果是 win 系统 + Nvidia Ampere 架构(RTX30xx),根据 #21 的经验,需要指定 pytorch 对应的 cuda 版本 +```bash +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 +``` +3. 根据自己的显卡安装对应依赖 +- N卡 +```bash +pip install -r requirements.txt +``` +- A卡/I卡 +```bash +pip install -r requirements-dml.txt +``` +- A卡ROCM(Linux) +```bash +pip install -r requirements-amd.txt +``` +- I卡IPEX(Linux) +```bash +pip install -r requirements-ipex.txt ``` -可以使用 poetry 来安装依赖: +#### 2. 通过 poetry 来安装依赖 +安装 Poetry 依赖管理工具,若已安装则跳过。参考自: https://python-poetry.org/docs/#installation ```bash -# 安装 Poetry 依赖管理工具, 若已安装则跳过 -# 参考自: https://python-poetry.org/docs/#installation curl -sSL https://install.python-poetry.org | python3 - - -# 通过poetry安装依赖 +``` +通过poetry安装依赖 +```bash poetry install ``` -你也可以通过 pip 来安装依赖: -```bash -N卡: - pip install -r requirements.txt - -A卡/I卡: - pip install -r requirements-dml.txt - -A卡Rocm(Linux): - pip install -r requirements-amd.txt - -I卡IPEX(Linux): - pip install -r requirements-ipex.txt -``` - ------- -Mac 用户可以通过 `run.sh` 来安装依赖: +### MacOS +可以通过 `run.sh` 来安装依赖 ```bash sh ./run.sh ``` @@ -108,46 +109,48 @@ RVC需要其他一些预模型来推理和训练。 你可以从我们的[Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)下载到这些模型。 -以下是一份清单,包括了所有RVC所需的预模型和其他文件的名称: +### 1. 下载 assets +以下是一份清单,包括了所有RVC所需的预模型和其他文件的名称。你可以在`tools`文件夹找到下载它们的脚本。 + +- ./assets/hubert/hubert_base.pt + +- ./assets/pretrained + +- ./assets/uvr5_weights + +想使用v2版本模型的话,需要额外下载 + +- ./assets/pretrained_v2 + +### 2. 安装 ffmpeg +若ffmpeg和ffprobe已安装则跳过。 + +#### Ubuntu/Debian 用户 ```bash -./assets/hubert/hubert_base.pt - -./assets/pretrained - -./assets/uvr5_weights - -想测试v2版本模型的话,需要额外下载 - -./assets/pretrained_v2 - -如果你正在使用Windows,则你可能需要这个文件,若ffmpeg和ffprobe已安装则跳过; ubuntu/debian 用户可以通过apt install ffmpeg来安装这2个库, Mac 用户则可以通过brew install ffmpeg来安装 (需要预先安装brew) - -./ffmpeg - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe - -./ffprobe - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe - -如果你想使用最新的RMVPE人声音高提取算法,则你需要下载音高提取模型参数并放置于RVC根目录 - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt - - A卡I卡用户需要的dml环境要请下载 - - https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx - +sudo apt install ffmpeg ``` -之后使用以下指令来启动WebUI: +#### MacOS 用户 ```bash -python infer-web.py +brew install ffmpeg ``` -如果你正在使用Windows 或 macOS,你可以直接下载并解压`RVC-beta.7z`,前者可以运行`go-web.bat`以启动WebUI,后者则运行命令`sh ./run.sh`以启动WebUI。 +#### Windwos 用户 +下载后放置在根目录。 +- 下载[ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) -对于需要使用IPEX技术的I卡用户,请先在终端执行`source /opt/intel/oneapi/setvars.sh`(仅Linux)。 +- 下载[ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) + +### 3. 下载 rmvpe 人声音高提取算法所需文件 + +如果你想使用最新的RMVPE人声音高提取算法,则你需要下载音高提取模型参数并放置于RVC根目录。 + +- 下载[rmvpe.pt](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt) + +#### 下载 rmvpe 的 dml 环境(可选, A卡/I卡用户) + +- 下载[rmvpe.onnx](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx) + +### 4. AMD显卡Rocm(可选, 仅Linux) -## AMD显卡Rocm相关(仅Linux) 如果你想基于AMD的Rocm技术在Linux系统上运行RVC,请先在[这里](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)安装所需的驱动。 若你使用的是Arch Linux,可以使用pacman来安装所需驱动: @@ -164,10 +167,25 @@ export HSA_OVERRIDE_GFX_VERSION=10.3.0 sudo usermod -aG render $USERNAME sudo usermod -aG video $USERNAME ```` -之后运行WebUI: + +## 开始使用 +### 直接启动 +使用以下指令来启动 WebUI ```bash python infer-web.py ``` +### 使用整合包 +下载并解压`RVC-beta.7z` +#### Windows 用户 +双击`go-web.bat` +#### MacOS 用户 +```bash +sh ./run.sh +``` +### 对于需要使用IPEX技术的I卡用户(仅Linux) +```bash +source /opt/intel/oneapi/setvars.sh +``` ## 参考项目 + [ContentVec](https://github.com/auspicious3000/contentvec/) diff --git a/docs/小白简易教程.doc b/docs/小白简易教程.doc deleted file mode 100644 index 2e291891303f0f805c36a463a3fecbde8d82c4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 602624 zcmeF(bzBx*zc6~dZB!5eK@d>7k(O4vk#0~@T3TAALAqN>0Rcfem2RXPq`Rf-{f+l? z@BN(T*?Ygw`#JlMv(Gt;&-a?SCa#%Tvu4ejwbt;X3*+a|`2QdN9})wnupgJ< zJR#@s5)A#}0~x;xBK9Dr@1t95Y6(DKp03hkFomy|1tdD57;;|{}OD32!_Z# z2u1qBqa6P_*K6l<(il43^24srWjySxoyp8RtgmSya~dNbqg;_o3g?vem%0A?Izra{ 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