vc-lm-any2one的音色转换器
前言
本文简单记录介绍一下vc-lm。
vc-lm是一个音色转换器,可以将任何人的声音转换成成千上万种不同的声音。
正文
一、什么是vc-lm
该项目是一个音色转换器,可以将任何人的声音转换成成千上万种不同的声音。它使用encodec将音频离散化成tokens,并在tokens上构建transformer语言模型。该项目包含两个阶段的模型:AR模型和NAR模型。可以使用自监督的方式进行训练,生成大量one-to-any的平行数据,这些平行数据可以被用来训练Any-to-One的变声模型。训练目标人数据仅需10分钟即可达到很好的效果。
二、vc-lm算法架构
参考论文Vall-E,使用encodec算法,将音频离散化成tokens,在tokens上构建transformer语言模型。该项目包含两阶段模型AR模型和NAR模型。
三、vc-lm使用与训练
vc-lm的训练分为两步,先训练one2any的生成数据,再利用这些数据训练的模型训练any2one的转换模型。
预训练:
参考tools/construct_wavs_file.py
将wav源文件处理成长度10~24s的文件;
参考tools/construct_dataset.py
构造数据集;
将whisper中的encoder模块提取出来使用python tools/extract_whisper_encoder_model.py --input_model=../whisper/medium.pt --output_model=../whisper-encoder/medium-encoder.pt
;
在配置文件里需要调整好相关存储路径,再分别训练AR、NAR模型:
1 | python run.py fit --config configs/ar_model.yaml |
训练好后推理测试:
1 | from vc_lm.vc_engine import VCEngine |
any2one训练:
构造目标数据集,与上面的方式一样;
构造Any-to-one平行数据:python tools.construct_parallel_dataset.py
;
加载预训练模型,在目标数据集上训练:
1 | python run.py fit --config configs/finetune_ar_model.yaml |
推理测试:
1 | from vc_lm.vc_engine import VCEngine |
四、总结
官方项目上有预训练好的模型可以下载下来直接试试。
需要注意的是这项目跟TTS是有区别的,vc-lm是音频的音色转换,可以使用少量目标数据微调得到较好的转换效果。
最后
参考文章:
声明
本文仅作为个人学习记录。
本文永久记录于区块链博客xlog。