diff --git a/AutoCoverTool/readme.txt b/AutoCoverTool/readme.txt index 53db6fb..0c48761 100644 --- a/AutoCoverTool/readme.txt +++ b/AutoCoverTool/readme.txt @@ -1,149 +1,161 @@ 自动翻唱工具 简介: 输入原唱音频,自动进行人声伴奏分离,将人声进行音色转换,然后和伴奏合并,输出翻唱后的音频 目前有两种方案: 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 +# 音视频部署方案: + 目前已经将模型和环境全部放到共享盘上: + 挂载: sudo mount -t nfs -o vers=4 172.17.1.64:/ /data + 模型以及二进制文件地址: /data/gpu_env_common/res/av_svc + + 在当前目录下,执行操作: + conda activate music_remover_env + export PYTHONPATH=$PWD:$PWD/ref/music_remover/demucs + python3 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