diff --git a/AutoCoverTool/readme.txt b/AutoCoverTool/readme.txt index 6ce7935..53db6fb 100644 --- a/AutoCoverTool/readme.txt +++ b/AutoCoverTool/readme.txt @@ -1,224 +1,149 @@ 自动翻唱工具 +简介: 输入原唱音频,自动进行人声伴奏分离,将人声进行音色转换,然后和伴奏合并,输出翻唱后的音频 +目前有两种方案: +1. 变调(线上方案): + 优点: 效果好,高质量率达到100% + 缺点: 很容易被变换会原唱的音色 +2. so-vits-svc方案 + 优点: 将原唱可以合成成任意特定人的音色,不容易被变换回原唱的音色 + 缺点: 针对于分离出的人声来做时效果较差,主要体现在多人和声部分、混响较大部分、乐器部分 + +变调方案(线上): + 1. 环境部署 + 从sg-prod-ipaint-gpu-1机器上将 /opt/soft/bin/tone_shift_exe、/opt/soft/bin/simple_mixer 拷贝到要部署的机器 + 安装python环境: + 环境安装: + conda create -n auto_song_cover python=3.9 + # 安装demucs环境[进入到ref.music_remover 执行pip install -r requirements.txt] + pip install librosa + pip install scikit-maad + pip install praat-parselmouth + pip install matplotlib + pip install torchvision + pip install madmom + pip install torchstat + 环境设置: + export PATH=$PATH:/data/gpu_env_common/env/bin/ffmpeg/bin + export PYTHONPATH=$PWD:$PWD/ref/music_remover/demucs + export LD_LIBRARY_PATH=/data/gpu_env_common/env/anaconda3/envs/so_vits_svc/lib:$LD_LIBRARY_PATH + + 2. 快速使用 + 本方案的操作是从曲库的数据库获取到任务信息,然后进行消音、变调、合并处理后,再交付任务到数据库(详细逻辑见代码) + /data/gpu_env_common/env/anaconda3/envs/auto_song_cover/bin/python online/tone_shift_one.py + +合成方案: + 1. 环境部署 + 在变调方案的基础上: + # 安装so_vits_svc环境[进入到ref.so_vits_svc 执行pip install -r requirements.txt] + export PYTHONPATH=$PWD:$PWD/ref/music_remover/demucs:$PWD/ref/so_vits_svc:$PWD/ref/split_dirty_frame + + 2. 快速使用(单独处理一个) + /data/gpu_env_common/env/anaconda3/envs/auto_song_cover/bin/python online/inference_one.py + + 其训练方案详情见script/train.sh + + 3. 注意: 预训练模型地址: + https://av-audit-sync-sg-1256122840.cos.ap-singapore.myqcloud.com/hub/models/so_vits_svc/G_0.pth + https://av-audit-sync-sg-1256122840.cos.ap-singapore.myqcloud.com/hub/models/so_vits_svc/D_0.pth + + +----------------------------------------------------------------------------------------------------------------------- +历史介绍: +自动翻唱工具 1. 训练音色 2. 给定音频,将音频按照特定音色进行转换 ----data // 所有数据的位置 ----ref // 依赖的代码的位置 ----music_remover // 消音工具 ----so-vits-svc // 训练音色和变声的工具 ----script // 脚本位置 3. data结构介绍: ---train_users // 训练时使用的数据集 ---zjl // 每个音色 ---src // 源数据(文件夹) ---vocals // 消音之后的数据(文件夹) ---speaker0 // 切片之后的数据(文件夹) ---slice_resample // 重采样规整之后的数据(文件夹) ---speaker0 // 重采样规整之后的数据(文件夹) ---filelists // 训练时需要使用的文件夹 ---train.txt ---val.txt ---test.txt ---config // 配置文件 ---config.json // 配置文件 ---inf_users // 推理时要用的数据 ---song1 // 每个测试时输入的歌曲 ---src // 源数据(文件) ---vocals // 分离出的人声文件 ---acc // 分离出的伴奏文件 ---song2 ... ---out_data // 推理出的数据 ---song1 // 每个歌曲 ---song1_zjl_vocals // 歌曲和音色组成的结果人声 ---song2 .... ---final_data // 最终结果 ---song1 // 每个歌曲 ---song1_zjl_mix // 歌曲和音色组成的结果人声混音之后的结果 ---------------------------------------------------------------------->>>> 快速使用之训练: 将数据放到data/train_users/xxx/src目录下,以ogg作为结尾 然后执行script/train.sh xxx 即可,输出的模型在data/train_users/xxx/logs/32k目录下 ---------------------------------------------------------------------->>>> 训练过程: 环境变量: export LD_LIBRARY_PATH=/data/gpu_env_common/env/anaconda3/envs/so_vits_svc/lib:$LD_LIBRARY_PATH export PATH=$PATH:/data/gpu_env_common/env/bin/ffmpeg/bin export PYTHONPATH=$PWD:$PWD/ref/music_remover/demucs # 训练过程 1. 收集数据放到data/train_users/zjl/src 2. 提取人声 & 分片 & 取音量响度大的Top80 /data/gpu_env_common/env/anaconda3/envs/demucs/bin/python script/get_vocals_for_train.py zjl 3. 重采样 /data/gpu_env_common/env/anaconda3/envs/so_vits_svc/bin/python ref/so-vits-svc/resample.py --in_dir=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl --out_dir2=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl/slice_resample 4. 生成配置文件 /data/gpu_env_common/env/anaconda3/envs/so_vits_svc/bin/python ref/so-vits-svc/preprocess_flist_config.py --source_dir=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl/slice_resample --train_list=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl/filelists/train.txt --val_list=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl/filelists/val.txt --test_list=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl/filelists/test.txt --config_path=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl/config/config.json 5. 预处理提取特征 /data/gpu_env_common/env/anaconda3/envs/so_vits_svc/bin/python ref/so-vits-svc/preprocess_hubert_f0.py --in_dir=/data/rsync/jianli.yang/AutoCoverTool/data/train_users/zjl/slice_resample 6. 拷贝数据到logs文件夹 mkdir -p data/train_users/zjl/logs/32k cp -r data/models/G_0.pth data/train_users/zjl/logs/32k cp -r data/models/D_0.pth data/train_users/zjl/logs/32k 7. 训练 /data/gpu_env_common/env/anaconda3/envs/so_vits_svc/bin/python ref/so-vits-svc/train.py -c data/train_users/zjl/config/config.json -m 32k -l data/train_users/zjl/logs # 推理过程 1. 将输出放入data/inf_users/pfdyt/src.mp3 2. 提取人声、伴奏 /data/gpu_env_common/env/anaconda3/envs/demucs/bin/python script/get_vocals_for_inference.py data/inf_users/test_2/src.mp3 data/inf_users/test_2 3. 推理 /data/gpu_env_common/env/anaconda3/envs/so_vits_svc/bin/python ref/so-vits-svc/inference_main.py data/train_users/zjl/logs/32k/G_2000.pth data/train_users/zjl/config/config.json data/inf_users/pfdyt/vocal_32.wav data/out_data/pfdyt/pfdyt_zjl.wav 4. 获取占比信息,剔除占比过高的音频 /data/gpu_env_common/env/anaconda3/envs/th1_9_3_9/bin/python script/process_one.py 5. 对符合要求的音频进行降噪和拉伸 /opt/soft/bin/denoise_exe in_wav out_wav /opt/soft/bin/draw_volume in_wav ref_wav out_wav 6. 手动制作, 使用 accentize/Chameleon 插件,复制原始wav的混响,以及调整响度大小 7. 用手动制作好的数据进行再次替换 /data/gpu_env_common/env/anaconda3/envs/th1_9_3_9/bin/python script/process_one.py 8. 将替换好的成品和伴奏混合,得到结果 /opt/soft/bin/simple_mixer in_wav acc_path mix_path - 4. 将干声重采样 ffmpeg -i data/out_data/pfdyt/pfdyt_zjl.wav -ar 44100 -ac 2 data/out_data/pfdyt/pfdyt_zjl_44_2.wav 5. 合成 /data/rsync/jianli.yang/AutoCoverTool/data/bin/mixer data/models/impluse_im_plus_wet2.wav data/out_data/pfdyt/pfdyt_zjl_44_2.wav data/inf_users/pfdyt/acc.wav data/final_data/pfdyt_zjl_44_2_mix.wav -/data/rsync/jianli.yang/AutoCoverTool/data/bin/mixer data/models/impluse_im_plus_wet2.wav data/out_data/pfdyt/pfdyt_zjl_44_2.wav data/inf_users/pfdyt/acc.wav data/final_data/pfdyt_zjl_44_2_mix.wav - - -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/0.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/1.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/2.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/3.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/4.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/5.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/6.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step1/7.zip - -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step2/0.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step2/1.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step3/2.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step4/3.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step5/4.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step6/5.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step7/6.zip -https://av-audit-sync-bj-1256122840.cos.ap-beijing.myqcloud.com/tmp/fanchang/step8/7.zip - - -// 从编辑库获取原唱数据: -select task_url,starmaker_songid from starmaker_musicbook.silence where starmaker_songid in - -611752105026189342 -611752105030433779 -611752105029689090 -611752105021285282 -611752105030419624 -611752105030419633 -611752105030104548 -611752105029990849 -611752105029993297 -611752105030047424 -611752105030419688 -611752105023434557 -611752105024429936 -611752105027557408 -611752105024250202 -611752105027302268 -611752105026707760 -611752105022345104 -611752105024678976 -611752105024679221 -611752105020378620 -611752105022667231 -611752105023811083 -611752105023623965 -611752105022745595 -611752105020290695 -611752105028683824 -611752105020411654 -611752105020286501 -611752105020387015 -611752105020382559 -611752105030077711 -611752105019423720 -611752105020256284 -611752105020357112 -611752105024628047 -611752105020282612 -611752105020351134 -611752105020336950 -611752105022736204 -611752105020290639 -611752105021442406 -611752105020286443 -611752105024953316 -611752105020282613 -611752105024714646 -611752105022647082 -611752105027188746 -611752105022770952 -611752105020417488 -611752105025104181 -611752105022735101 -611752105023532439 -611752105022842477 -611752105028650636 -611752105022842004 -611752105029954168 -611752105020417688 -611752105020336946 -611752105020394297 -611752105026946178 -611752105020343687 -611752105024676794 -611752105020390950 -611752105020286433 -611752105026771723 -611752105022446809 -611752105020350988 -611752105025510149 -611752105020394121 -611752105021442417 -611752105020256227 -611752105025231610 -611752105021453011 -611752105020325137 -611752105027047993 -611752105021330812 -611752105021375100 -611752105021273980 -611752105021453011 -611752105020325137 -611752105027047993 -611752105021330812 -611752105021273980 -611752105024786030 -611752105027189453 -611752105020548211 -611752105020286446 -611752105020376320 -611752105020563523 -611752105027588072 -611752105022389596 -611752105020315368 -611752105020343699 -611752105029954089 -611752105026523547 -611752105029955214 -611752105020315328 -611752105020350990 -611752105021332759