Rvc 的 ONNX 模型导出格式推理实现
Project description
RvcPyInfer
RVC 的 ONNX 模型导出格式推理实现。
- 支持原 RVC 项目的 ONNX 模型推理。
- 跨平台支持多种推理引擎(CPU, CUDA, DirectML, OpenVINO)。
- 提供 Windows 下一键导出 ONNX 模型的 CLI 工具。
- 兼容原项目的
.index特征索引文件。
Python 版本需求
本项目要求 Python 版本 >= 3.13。由于项目代码中使用了 Python 3.12+ 引入的 TypeParam 等现代语法特性,因此无法向下兼容更低版本的 Python。
并且推理真的很难测试欸。
安装
本库尚未上传至 PyPI ,我们还在筹备这方面的工作。
你可以直接 clone 该仓库然后使用如下命令构建 .whl 文件。
# 克隆该仓库
git clone https://github.com/TwoCreepers/RvcPyInfer.git
# 进入该仓库目录
cd RvcPyInfer
# 使用 uv 构建
uv build
# 安装生成的 wheel 包 (以实际文件名为准)
pip install ./dist/rvcpyinfer-0.1.0-py3-none-any.whl
不出意外的话,现在你需要的轮子文件应该出现在 dist/ 下面了。
这里出现的 uv 是一个使用 Rust 编写的 Python 项目管理工具。
它可以为你剩下非常多在依赖管理方面的麻烦,就比如上面的 uv build 它会自动为你生成虚拟环境并安装好依赖。
当然了, uv 不是必须的,我们使用 hatchling 作为构建后端,你可以自己研究一下如何构建。
或者你也可以直接把当前项目作为库安装,例如:
# 假设你已经在仓库目录里了
pip install .
# 如果需要安装 CPU 引擎和特征索引支持的话是
pip install ".[cpu,index]"
关于特征模型
你可以在这里找到 MoeSS 使用的 onnx 特征模型。它们是通用的。
通常情况下最常见的 v2 版本的生成器模型使用的是 vec-768-layer-12.onnx
关于推理引擎
你可能已经看到了那个未安装任何推理引擎的警告或者错误。
请在安装命令后面添加 [xxx] 来安装可选依赖。
例如:
# 假设你已经在 dist/ 目录下构建好了 whl 文件
pip install "./dist/rvcpyinfer-0.1.0-py3-none-any[cpu]"
目前我们支持以下推理引擎:
onnxruntime[cpu]:ONNX Runtime (CPU),通用[cuda]:ONNX Runtime (CUDA),Nvidia GPU 加速[dml]:ONNX Runtime (DML),Windows DirectML 加速
openvino[openvino]:OpenVINO,Intel 硬件加速
请注意 onnxruntime 的三个可选依赖是互斥的,你只能选择其中的一个。
关于 openvino 的 IR 格式,本库会转换 IR 格式并存档在 .onnx 同目录下的同名文件中,以便在下一次加载时加速,该行为目前无法被禁用。
关于特征索引
原项目的 .index 文件可直接使用,无需转换。
但你需要使用 [index] 来安装我们需要用于读取特征索引的依赖—— faiss。
快速使用
一个简单的示例:
import RvcPyInfer
context = RvcPyInfer.RvcContext() # 创建一个上下文
task = context.build_task(
"./你的特征模型.onnx",
"./你的 Rvc 生成器模型.onnx",
48000, # 你的 Rvc 生成器模型的生成采样率
"./你要推理的源文件.wav", # 可以填多个源文件
# 后续可选参数需显式写明名称,例如:
sid=1, # 说话者 id,一般情况下就是 0
seed=4321 # 噪声种子,默认 1234
)
task.run_and_save(
"./你要保存的结果.wav" # 请注意,它不会自动创建目录
)
CLI
我们已经预制了一些 CLI 在库中了,并随库一并打包。
以下是库内置的命令:
rvc-infer:用以快速推理模型而无需编写代码rvc-model:与原项目模型相关的命令
rvc-infer
最简格式: rvc-infer --vec-model <你的特征模型路径> --gen-model <你的生成器模型路径> --gen-model-sr <你的生成器模型的输出采样率> -i <输入音频文件路径> -o <输出音频文件路径>
Tips:可出现多个 -i 和 -o,只要它们的数量一致,多个 -i 和 -o 按出现顺序一一对应。
rvc-model
该命令用于查看原项目的 .pth 模型的生成采样率,以及在 Windows 上快速导出 onnx 模型。
rvc-model show-sr
格式: rvc-model show-sr -m <你的pth模型路径>
rvc-model export
⚠️注意:你必须安装源项目的整合包或至少有一个能运行源项目的环境以便 PyTorch 导出 .onnx 模型。
它并不依赖项目内置的 tools/export_onnx.py 我们有自己的方法。
事实上原项目的 export_onnx.py 甚至没有做 v2 版本的支持
格式: rvc-model export -m <你的pth模型路径> -t <你希望输出到哪> -r <rvc 原项目的根路径> --runtime <可选的导出用的 python 解释器路径,默认使用 rvc 原项目整合包自带的解释器>
未来的计划
- Github Action 可重现性构建流水线
- 发布至 PyPI
许可证
在文件头部或文件所在目录未有额外说明的情况下,本项目代码部分使用 MIT 许可证授权与你,非代码部分使用 CC BY 4.0 授权与你。
🎉鸣谢
- 原项目组的所有成员
没有TA们的付出就没有 RVC 模型,该项目也不会出现 - 提前打好特征模型 ONNX 的 MoeSS
省去了诸多导出特征模型的麻烦 - 帮了作者很多的 GLM AI
省去了很多查资料和写 CLI 的时间
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rvcpyinfer-0.1.3.tar.gz.
File metadata
- Download URL: rvcpyinfer-0.1.3.tar.gz
- Upload date:
- Size: 50.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93cfb1165fd139c845ec6432f6f368b5356e6ef7ae775ee16ffd8ac24333751b
|
|
| MD5 |
971786b4798ef5efecb3e05c155c3b30
|
|
| BLAKE2b-256 |
59069667fe1952abb7b9303401f1118b088c0da966de0d0e8cbaf4e512e8ac40
|
Provenance
The following attestation bundles were made for rvcpyinfer-0.1.3.tar.gz:
Publisher:
release.yml on TwoCreepers/RvcPyInfer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rvcpyinfer-0.1.3.tar.gz -
Subject digest:
93cfb1165fd139c845ec6432f6f368b5356e6ef7ae775ee16ffd8ac24333751b - Sigstore transparency entry: 2161724820
- Sigstore integration time:
-
Permalink:
TwoCreepers/RvcPyInfer@6e256a690e23b5f105c840f9bdc8726f22fe0fcc -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/TwoCreepers
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6e256a690e23b5f105c840f9bdc8726f22fe0fcc -
Trigger Event:
push
-
Statement type:
File details
Details for the file rvcpyinfer-0.1.3-py3-none-any.whl.
File metadata
- Download URL: rvcpyinfer-0.1.3-py3-none-any.whl
- Upload date:
- Size: 34.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0607405555af20f280e90505fd287fafb3f2ba8de495ef638deca8a0b4b2ac68
|
|
| MD5 |
ec5e0273bbb676785411617dbd52a7c9
|
|
| BLAKE2b-256 |
eb515218a547b6fbc5c707fff8e92035199d9f2f5fe05293fa1da81b8d5ec41a
|
Provenance
The following attestation bundles were made for rvcpyinfer-0.1.3-py3-none-any.whl:
Publisher:
release.yml on TwoCreepers/RvcPyInfer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rvcpyinfer-0.1.3-py3-none-any.whl -
Subject digest:
0607405555af20f280e90505fd287fafb3f2ba8de495ef638deca8a0b4b2ac68 - Sigstore transparency entry: 2161724943
- Sigstore integration time:
-
Permalink:
TwoCreepers/RvcPyInfer@6e256a690e23b5f105c840f9bdc8726f22fe0fcc -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/TwoCreepers
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6e256a690e23b5f105c840f9bdc8726f22fe0fcc -
Trigger Event:
push
-
Statement type: