happyme531/Bert-VITS2-RKNN2
By happyme531 · ↓ 0 · ♥ 3 · Updated 2024-09-02
What's in this repo
This page lists the files in happyme531/Bert-VITS2-RKNN2, including lx_dec.onnx, lx_dp.onnx, lx_emb.onnx and more.
- 6 ONNX models (.onnx files)
- 53 files, including 22 .json, 7 .md, 6 .onnx, 5 .txt, 3 .py, 3 .rknn
- Last updated 2024-09-02
ONNX files
| File | Size | Download |
|---|---|---|
| onnx/lx/lx_dec.onnx | — | Download |
| onnx/lx/lx_dp.onnx | — | Download |
| onnx/lx/lx_emb.onnx | — | Download |
| onnx/lx/lx_enc_p.onnx | — | Download |
| onnx/lx/lx_flow.onnx | — | Download |
| onnx/lx/lx_sdp.onnx | — | Download |
How to use
These ONNX files can be loaded with ONNX Runtime. To inspect a model graph, upload the file to the Netron viewer. Download links point to the original files on Hugging Face.
README
Bert-VITS2-RKNN2
RKNN2部署Bert-VITS2文字转语音模型!
- 推理速度:生成512000个样本大概用时2.6秒,速度大概3倍
- 内存占用:约2.3GB
使用方法
-
克隆项目到本地
-
安装依赖
# 懒得写requirements.txt了,看rknn_run.py里有什么依赖拿pip安装一下
- 更改你想要生成音频的文字
打开
rknn_run.py,拉到最下方修改text变量
# text = "不必说碧绿的菜畦,光滑的石井栏,高大的皂荚树,紫红的桑葚;也不必说鸣蝉在树叶里长吟,肥胖的黄蜂伏在菜花上,轻捷的叫天子(云雀)忽然从草间直窜向云霄里去了。单是周围的短短的泥墙根一带,就有无限趣味。油蛉在这里低唱, 蟋蟀们在这里弹琴。翻开断砖来,有时会遇见蜈蚣;还有斑蝥,倘若用手指按住它的脊梁,便会“啪”的一声,从后窍喷出一阵烟雾。何首乌藤和木莲藤缠络着,木莲有莲房一般的果实,何首乌有臃肿的根。有人说,何首乌根是有像人形的,吃了便可以成仙,我于是常常拔它起来,牵连不断地拔起来,也曾因此弄坏了泥墙,却从来没有见过有一块根像人样。如果不怕刺,还可以摘到覆盆子,像小珊瑚珠攒成的小球,又酸又甜,色味都比桑葚要好得远。"
text = "我个人认为,这个意大利面就应该拌42号混凝土,因为这个螺丝钉的长度,它很容易会直接影响到挖掘机的扭矩你知道吧。你往里砸的时候,一瞬间它就会产生大量的高能蛋白,俗称ufo,会严重影响经济的发展,甚至对整个太平洋以及充电器都会造成一定的核污染。你知道啊?再者说,根据这个勾股定理,你可以很容易地推断出人工饲养的东条英机,它是可以捕获野生的三角函数的。所以说这个秦始皇的切面是否具有放射性啊,特朗普的N次方是否含有沉淀物,都不影响这个沃尔玛跟维尔康在南极会合。"
- 运行
python rknn_run.py
- 音频会生成为
output.wav
模型转换
- 转换bert模型:
- pytorch转onnx: 执行
optimum-cli export onnx --task feature-extraction --model bert/chinese-roberta-wwm-ext-large/ --output bert/chinese-roberta-wwm-ext-large/model.onnx - onnx转rknn: 参考
bert/chinese-roberta-wwm-ext-large/export_rknn.py - 注意模型的
seq_len是否与rknn_run.py中分词器的max_length一致inputs = tokenizer(text, return_tensors="np",padding="max_length",truncation=True,max_length=256)
- pytorch转onnx: 执行
- 转换vits模型:
- pytorch转onnx: 参考原项目的
export_onnx.py - onnx转rknn: 参考
onnx/lx/rknn_convert.py - 注意
input_len是否与rknn_run.py中flow_dec_input_len的长度一致 - flow和dec两个模型的执行时间长, 其它模型非常快, 不需要转换
- flow模型转换后比原onnx模型还慢, 并且貌似模型文件还会明显变大, 不建议转换
- pytorch转onnx: 参考原项目的
存在的问题
- 只支持中文
- flow模型没办法有效的使用NPU加速
- 由于NPU只能处理固定长度的输入, 所以需要分割文本, 但是现在貌似还不太清楚怎么做, 有时一句话还没读完就被截断
- 没有实现情感控制等功能
- 其实没必要为了分词器安装一个完整的huggingface Transformers库, 并且还要顺便装一个完全没用的pytorch, 占用2GB空间
参考
Model info
onnx
text-to-speech
zh
license:agpl-3.0
region:us
↓ 0
♥ 3
Created: 2024-09-02
Updated: 2024-09-02
View on Hugging FaceFiles (53)
.gitattributes
README.md
bert/bert-base-japanese-v3/.gitattributes
bert/bert-base-japanese-v3/README.md
bert/bert-base-japanese-v3/config.json
bert/bert-base-japanese-v3/tokenizer_config.json
bert/bert-base-japanese-v3/vocab.txt
bert/bert-large-japanese-v2/.gitattributes
bert/bert-large-japanese-v2/README.md
bert/bert-large-japanese-v2/config.json
bert/bert-large-japanese-v2/tokenizer_config.json
bert/bert-large-japanese-v2/vocab.txt
bert/bert_models.json
bert/chinese-roberta-wwm-ext-large/.gitattributes
bert/chinese-roberta-wwm-ext-large/README.md
bert/chinese-roberta-wwm-ext-large/added_tokens.json
bert/chinese-roberta-wwm-ext-large/config.json
bert/chinese-roberta-wwm-ext-large/export_rknn.py
bert/chinese-roberta-wwm-ext-large/generation_config.json
bert/chinese-roberta-wwm-ext-large/model.rknn
bert/chinese-roberta-wwm-ext-large/special_tokens_map.json
bert/chinese-roberta-wwm-ext-large/tokenizer.json
bert/chinese-roberta-wwm-ext-large/tokenizer_config.json
bert/chinese-roberta-wwm-ext-large/vocab.txt
bert/deberta-v2-large-japanese-char-wwm/.gitattributes
bert/deberta-v2-large-japanese-char-wwm/README.md
bert/deberta-v2-large-japanese-char-wwm/config.json
bert/deberta-v2-large-japanese-char-wwm/special_tokens_map.json
bert/deberta-v2-large-japanese-char-wwm/tokenizer_config.json
bert/deberta-v2-large-japanese-char-wwm/vocab.txt
bert/deberta-v2-large-japanese/.gitattributes
bert/deberta-v2-large-japanese/README.md
bert/deberta-v2-large-japanese/config.json
bert/deberta-v2-large-japanese/special_tokens_map.json
bert/deberta-v2-large-japanese/tokenizer.json
bert/deberta-v2-large-japanese/tokenizer_config.json
bert/deberta-v3-large/.gitattributes
bert/deberta-v3-large/README.md
bert/deberta-v3-large/config.json
bert/deberta-v3-large/generator_config.json
bert/deberta-v3-large/tokenizer_config.json
onnx/lx.json
onnx/lx/lx_dec.onnx
ONNX
onnx/lx/lx_dec.rknn
onnx/lx/lx_dp.onnx
ONNX
onnx/lx/lx_emb.onnx
ONNX
onnx/lx/lx_enc_p.onnx
ONNX
onnx/lx/lx_flow.onnx
ONNX
onnx/lx/lx_flow.rknn
onnx/lx/lx_sdp.onnx
ONNX
onnx/lx/rknn_convert.py
opencpop-strict.txt
rknn_run.py