翻译由 GPT-4 提供。
本项目是一个轻量级、快速且内存高效的 API,运行 v1/v2 RVC 模型。它适用于生产环境,并与现有代码库兼容。 它使得将 RVC 作为管道或工作流中的一个阶段进行集成变得简单。使用 pip 进行安装非常快捷,应与 Linux/Windows/Mac 以及最新的 python 版本兼容。
如果使用 Python 3.11 及以上版本,请首先安装 fairseq 分支,因为 fairseq 尚未兼容 3.11 版本。
pip install https://github.com/One-sixth/fairseq/archive/main.zip
使用下面的命令安装本仓库,所有依赖项将自动安装。
pip uninstall inferrvc
pip install https://github.com/CircuitCM/RVC-inference/raw/main/dist/inferrvc-1.0-py3-none-any.whl --no-cache-dir
默认情况下,pypi 会安装 PyTorch 的 CPU 版本。如果要在 Nvidia 或 AMD 的 GPU 上安装,请访问 https://pytorch.org/get-started/locally/,然后在安装此库之前使用 pip 安装 torch
和 torchaudio
的 GPU 版本。
此库应该支持 Python 3.8 至 3.12 版本,但只测试了 3.11 版本。如果安装或兼容性有任何问题,请开设一个 issue,我将推出修复版本。 欢迎提交带有修复和改进的 PR(Pull Request)。
首先设置可选的环境变量:
import os
os.environ['RVC_MODELDIR']='path/to/rvc_model_dir' # 存储 model.pth 文件的位置。
os.environ['RVC_INDEXDIR']='path/to/rvc_index_dir' # 存储 model.index 文件的位置。
# 音频输出频率,默认为 44100。
os.environ['RVC_OUTPUTFREQ']='44100'
# 如果希望输出的音频张量完全加载后再进行阻塞,可以忽略此设置。但如果你想在更大的 torch 管道中运行,设置为 False 可略微提高性能。
os.environ['RVC_RETURNBLOCKING']='True'
环境变量说明:
RVC_OUTPUTFREQ
和RVC_RETURNBLOCKING
会为RVC
类设置默认值,但可以在每个实例中用self.outputfreq
和self.returnblocking
进行覆盖。- 将
RVC_OUTPUTFREQ
设置为None
将禁用标准重采样,并返回模型的原生采样率。 - 如果你没有设置
RVC_INDEXDIR
,RVC
类将回退到RVC_MODELDIR
,最后是模型目录的绝对路径os.path.dirname(model_path)
。 - 如果你没有设置
RVC_MODELDIR
,那么参数model
必须是一个绝对路径。
加载模型:
from inferrvc import RVC
whis,obama=RVC('Whis.pth',index='added_IVF1972_Flat_nprobe_1_Whis_v2'),RVC(model='obama')
print(whis.name)
print('路径',whis.model_path,whis.index_path)
print(obama.name)
print('路径',obama.model_path,obama.index_path)
模型:Whis,索引:added_IVF1972_Flat_nprobe_1_Whis_v2
路径 Z:\Models\RVC\Models\Whis.pth Z:\Models\RVC\Indexes\added_IVF1972_Flat_nprobe_1_Whis_v2.index
模型:obama,索引:obama
路径 Z:\Models\RVC\Models\obama.pth Z:\Models\RVC\Indexes\obama.index
执行推理:
from inferrvc import load_torchaudio
aud,sr = load_torchaudio('path/to/audio.wav')
paudio1=whis(aud,f0_up_key=6,output_device='cpu',output_volume=RVC.MATCH_ORIGINAL,index_rate=.75)
paudio2=obama(aud,5,output_device='cpu',output_volume=RVC.MATCH_ORIGINAL,index_rate=.9)
import soundfile as sf
sf.write('path/to/audio_whis.wav',paudio1,44100)
sf.write('path/to/audio_obama.wav',paudio2,44100)
- 移除了大部分与推理无关的代码。现在依赖项更少。
- 创建
了一个简化的推理类和流程。
- 性能和内存效率改进。
- 通用模型现在由
huggingface_hub
管理,并通过HF_HOME
环境变量进行缓存。 - 灵活引用 RVC 模型目录和文件。
- 默认禁用了巴特沃斯滤波器,因为通常没有区别,可能会略微降低质量。可以通过设置
inferrvc.pipeline.enable_butterfilter=True
来启用。
- 测试不同的 Python 版本。
- 测试不同的操作系统和音高估计器。(其他估计器应该已被移植,但只测试了 RMVPE,它是最佳的)
- 将剩余操作移到单一主设备(例如 GPU),以减少延迟和因内存传输导致的减速。
- 用 torch 的等价物
torch.where
和torch.masked_select
替换剩余的 numpy 代码。 - 使用 pytorch 为 GPU 设备重新实现索引掩码。
- 用 torch 的等价物
- 如果可能,利用 torch 2.0 的 .compile() 加速 v1/v2 模型。