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空间
参考
Inference Providers
NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API:
The model has no library tag.