diff --git a/add_music_track/SKILL.md b/add_music_track/SKILL.md new file mode 100644 index 0000000..857598d --- /dev/null +++ b/add_music_track/SKILL.md @@ -0,0 +1,38 @@ +--- +name: add_novocal_track +description: this skill sperates music video to pure video and pure audio files and use demucs sperates audio to get novocal audio file and compose pure video, pure audio and novocal audio into a singe KTV video file +--- +# add_novocal_track +为歌曲视频增加伴奏音轨,输出符合KTV音乐标准的视频文件 + +## 初始化 + +* 需要在GPU主机上执行 +* 需要安装ffmpeg +* 需要安装demucs +* assets目录下的955717e8-8726e21a.th文件需要复制到~/.cache/torch/hub/checkpoints目录下 +在此skill目录下执行 +``` +sudo apt install ffmpeg +python3 -m venv py3 +py3/bin/pip install demucs +mkdir -p ~/.cache/torch/hub/checkpoints +cp assets/955717e8-8726e21a.th ~/.cache/torch/hub/checkpoints +``` + +## 添加伴奏音轨 +### 输入参数 +``` +{ + "video_file": # 输入音乐视频文件 +} +``` +### 输出参数 +{ + "ktv_file": # 输出ktv视频文件 +} +### 执行命令 +``` +bash scripts/add_novocal_track.sh +``` + diff --git a/add_music_track/assets/955717e8-8726e21a.th b/add_music_track/assets/955717e8-8726e21a.th new file mode 100644 index 0000000..f8f197d Binary files /dev/null and b/add_music_track/assets/955717e8-8726e21a.th differ diff --git a/add_music_track/scripts/add_novocal_track.sh b/add_music_track/scripts/add_novocal_track.sh new file mode 100755 index 0000000..7e0a06b --- /dev/null +++ b/add_music_track/scripts/add_novocal_track.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +cd tmp +cdir=$(pwd) +id=tmp$$ +adir=${cdir}/${id}/separated/htdemucs/output_audio${id} +echo $id +ffmpeg -i $1 -c:v copy -an output_video${id}.mp4 -c:a pcm_s16le -f wav output_audio${id}.wav +echo ls -l output_video* +ls -l output_video* +mkdir ${id} +cd ${id} +demucs --two-stems=vocals ${cdir}/output_audio${id}.wav +echo ls -l ${adir} +ls -l ${adir} +cd ${cdir} +ffmpeg -i output_video${id}.mp4 -i ${adir}/no_vocals.wav -i ${adir}/vocals.wav \ + -map 0:v:0 \ + -map 1:a:0 \ + -map 2:a:0 \ + -c:v copy \ + -c:a aac -b:a 192k \ + -metadata:s:a:0 title="伴奏" \ + -metadata:s:a:1 title="原唱" \ + output_ktv.mkv -y +# rm -rf ${id} output_video${id}.mp4 output_audio${id}.wav +echo ls ${cdir}/output_ktv.mkv +ls ${cdir}/output_ktv.mkv +echo ${cdir}/output_ktv.mkv