欢迎光临散文网 会员登陆 & 注册

MakeDiffSinger学习记录

2023-08-18 01:16 作者:日出日落大太阳都无所  | 我要投稿

2023.8.17学习记录仅供参考

自动标注部分https://www.bilibili.com/read/cv25820501?spm_id_from=333.9

https://github.com/openvpi/MakeDiffSinger

MakeDiffSinger在colab的CUP模式



#拷贝OPENVPI官方数据

%cd /content

!git clone https://github.com/openvpi/MakeDiffSinger.git

# 安装aria2

!apt -y install -qq aria2

下载语音模型重命名mfa.zip放在content/MakeDiffSinger

!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/datasets/fox7005/tool/resolve/main/mfa-opencpop-extension.zip -d /content/MakeDiffSinger -o mfa.zip

#@title 安装 conda的colab版本condacolab执行后会自动重启

!pip install -q condacolab

import condacolab

condacolab.install()

#检查是否安装成功condacolab上一步自动重启后执行

import condacolab

condacolab.check()

#在conda中建立虚拟环境名mfa,python版本3.8

!conda create -n mfa python=3.8 --yes

#激活虚拟环境mfa和本地版区别去掉conda,不去掉不知道怎么解决shell

#!空格activate mfa

! activate mfa        

#安装mfa2.0.6强制对齐据说这个版本对中文支持最好

!conda install -c conda-forge montreal-forced-aligner==2.0.6 --yes


#在mfa安装依赖环境

%cd /content/MakeDiffSinger/acoustic_forced_alignment

!pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

!pip install ipykernel

#@title 检查音频长度是否正确(如果是整首歌请跳过)

!python validate_lengths.py --dir /content/raw

#如果上一篇标注lab和拼音文件还在 /content/raw(替换自己的文件路径)

#@title 检查标记片段是否正确(如果是整首歌请跳过)

!python validate_labels.py --dir /content/raw --dictionary dictionaries/opencpop-extension.txt

#@title 重新格式化录音到新建rawmfa文件夹

%cd /content

!mkdir -p rawmfa

%cd /content/MakeDiffSinger/acoustic_forced_alignment

!python reformat_wavs.py --src /content/raw --dst /content/rawmfa

#新建textgrids文件夹

%cd /content

!mkdir -p textgrids


#@title 使用 MFA 处理语料库

!mfa align /content/rawmfa /content/MakeDiffSinger/acoustic_forced_alignment/dictionaries/opencpop-extension.txt /content/MakeDiffSinger/mfa.zip /content/textgrids --beam 100 --clean --overwrite


#加查是否已经生成所有文件,如果是中途掉或者中途添加文件也可以用它测试是否都生成

%cd /content/MakeDiffSinger/acoustic_forced_alignment

!python check_tg.py --wavs /content/rawmfa --tg /content/textgrids

#@title 改进和完成的 TextGrids导入textgrids2文件夹

!mkdir -p /content/textgrids2

!python enhance_tg.py --wavs /content/rawmfa --dictionary /content/MakeDiffSinger/acoustic_forced_alignment/dictionaries/opencpop-extension.txt --src /content/textgrids --dst /content/textgrids2

#如果希望效果更好可以通过Vlabler(https://github.com/sdercolin/vlabeler) 在mfa的基础上精修你的TextGrids对齐文件

#@title 创建最终的数据集diffsingerdatsaet修改成歌手名

#--dataset这是参数别动

!mkdir -p /content/diffsingerdatsaet

!python build_dataset.py --wavs /content/rawmfa --tg /content/textgrids2 --dataset /content/diffsingerdatsaet


#备份最后的数据集到网盘根目录

#请确保已经加载网盘

%cd /content

!zip -r diffsingerdatsaet.zip /content/diffsingerdatsaet

!cp /content/diffsingerdatsaet.zip /content/drive/MyDrive/

根据官方字典修改config_acoustic.yaml就可预处理

文件在configs/templates中,修改后推荐放到数据集文件夹方便以后使用

diffsingerdatsaet.zip解压到DiffSinger/data/目录下

如果是gpu模式可继续使用,免费的时间有限所以推荐单独保存此副本cpu模式使用以后制作其他数据集

#@title 自动音高训练集制作创建虚拟环境makediffsinger

!conda create -n makediffsinger python=3.8 --yes

#激活虚拟环境

! activate makediffsinger

#虚拟环境MakeDiffSinger安装依赖

%cd /content/MakeDiffSinger/variance-temp-solution

!pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

#转换transcriptions.txt为transcriptions.csv如果已经有csv跳过继续下一步

!python convert_txt.py 你的文件路径/transcriptions.txt

#二分式词典(汉语普通话、日语等)

!python add_ph_num.py /content/diffsingerdatsaet/transcriptions.csv --dictionary /content/MakeDiffSinger/acoustic_forced_alignment/dictionaries/opencpop-extension.txt


#单音节音素系统(粤语、韩语等)vowels.txt consonants.txt需要自己制作没有跳过


!python add_ph_num.py /content/datsaetge/transcriptions.csv --vowels  /content/diffsingerdatsaet/vowels.txt --consonants  /content/diffsingerdatsaet/consonants.txt


#推断音高值

!python estimate_midi.py /content/diffsingerdatsaet/transcriptions.csv /content/diffsingerdatsaet/wavs

#优化 MIDI 序列 没需要跳过

!python convert_ds.py csv2ds /content/diffsingerdatsaet/transcriptions.csv /content/diffsingerdatsaet/wavs

#这里会在音频文件夹内生成同名DS文件,之前说的如果你数据集里是一个单文件一整首歌的声成的ds文件就可以直接用作推理,这只是个想法,测试可以使用,也就是在标注的时候4分钟的音频是无法识别汉字,但你只需要去网上找到歌词汉VTuberTalktools/hanzi_to_pinyin.py转成标注lab,或者自己改成拼音标注,然后运行到这里就可以了得到歌词、持续时间、音高的ds文件,mfa和其他处理都支持4分钟的长音频,根据官方说的不能完全识别么好,也推荐了工具修改SlurCutter,https://github.com/openvpi/dataset-tools/releases这工具集合标注lab,也可以整首歌词汉字用这个转lab标注,MinLabel在SlurCutter工具包文件夹内

#将.ds文件重新组合为transcriptions.csv如果没修改跳过,

!python convert_ds.py ds2csv /content/diffsingerdatsaet/wavs /content/datsaetge/transcriptions.csv


这里就完成了音高模型数据集前期准备,之前备份了只需要备份transcriptions.csv

config.variance.yaml修改后预处理

这里是DiffSinger2.0.0仅供参考


根据官方openvpi维护版教程使用

https://github.com/openvpi/DiffSinger

文本教程地址

https://openvpi-docs.feishu.cn/wiki/KmBFwoYDEixrS4kHcTAcajPinPe

MakeDiffSinger学习记录的评论 (共 条)

分享到微博请遵守国家法律