python视频人声消除

事前准备

需安装python,ffmpeg,spleeter,笔者使用的操作系统是window10

python安装

可参考这可能是全网最详细的python安装教程(windows)_朝阳区靓仔_James的博客-CSDN博客_windows安装pythonpython安装是学习pyhon第一步,很多刚入门小白不清楚如何安装python,今天我来带大家完成python安装与配置,跟着我一步步来,很简单,你肯定能完成。第一部分:python安装(一)准备工作1、下载和安装python(认准官方网站)(二)开始安装对于Windows操作系统,可以下载“executable installer”。需要注意的是,如果在Windows 7环境下安装Python 3,需要先安装ServicePack 1补丁包,大家可以在Windows的“运行”中输入winvhttps://blog.csdn.net/weixin_58753619/article/details/123014634

ffmpeg安装

可参考Windows安装ffmpeg_隐形的角落的博客-CSDN博客_ffmpeg windows安装windows下安装ffmpeg的流程,可以直接调用ffmpeg程序执行推流,转码等操作https://blog.csdn.net/qq_21996127/article/details/125477873

spleeter安装

可以在colab上试用spleeter的功能https://colab.research.google.com/github/deezer/spleeter/blob/master/spleeter.ipynbhttps://colab.research.google.com/github/deezer/spleeter/blob/master/spleeter.ipynb

可参考GitHub - deezer/spleeter: Deezer source separation library including pretrained models.Deezer source separation library including pretrained models. - GitHub - deezer/spleeter: Deezer source separation library including pretrained models.https://github.com/deezer/spleeter

README.md文件写的有详细的安装教程,但是笔者按照pip install spleeter时卡住没有反应,大家遇到这种情况,可以尝试

conda install -c "conda-forge/label/cf202003" spleeter

或者

conda install -c conda-forge spleeter

这两条指令在anaconda官网上搜索spleeter会显示(地址:Search :: Anaconda.org),但是需要大家先安装anaconda才能使用conda指令。

实现思路

首先使用ffmpeg提取视频声音,然后使用spleeter分离音频中的背景音和人声,最后将背景声与原视频合并,最终获得消除人声的视频。

具体实现

 首先说明,接下来的指令均执行在cmd中

提取视频声音

ffmpeg -i audio.mp4 -vn -codec copy sound.m4a

"audio.mp4"是要提取声音的视频,不仅可以是mp4格式的文件,还可以是flv等格式的视频,“sound.m4a”是要提取的音频保存的文件名。接下来将m4a的音频转为mp3格式。

ffmpeg -i "sound.m4a" -y -acodec libmp3lame -aq 0 "sound.mp3"

为什么要转换为mp3格式的呢,因为colab试用的时候看人家的例子是mp3文件 O(∩_∩)O。大家可以将m4a格式转为别的格式进行接下来的操作试试。

人声分离

spleeter separate -p spleeter:2stems -o output sound.mp3

这里的sound.mp3即为要消除人声的音频。该指令第一次执行时会在cmd当前打开路径下创建pretrained_models\2stems文件夹保存下载的模型文件,所以建议运行该指令时在同一个文件夹下,避免多次下载模型文件。

输入指令回车后稍等一段时间,会在cmd当前打开路径下出现output\sound文件夹,若文件名是xyz.mp3,则会出现output\xyz文件夹,文件夹里有两个文件,accompaniment.wav即为背景音,vocals.wav即为人声。

合并背景音和视频

首先需要将原视频的声音删除。这里的文件名需要加上英文引号,如果不加的话,会提示No such file or directory。

ffmpeg -i "audio.mp4" -y -f mp4 -an -codec copy -q:v 1 "audio-无声.mp4"

然后将无声视频和音频融合

ffmpeg -i audio-无声.mp4 -i accompaniment.wav -c:v copy -c:a aac -strict experimental audio-消音.mp4

即可获得消去人声的视频。但笔者口语不好,觉得原视频的语速有些快了,故又调整了视频倍速为0.8倍速。

ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=10/8*PTS[v];[0:a]atempo=0.8[a]" -map "[v]" -map "[a]" test-2.mp4

这条指令同时调整视频倍速和音频倍速,setpts=(倍速的倒数)*PTS[v],atempo=(倍速)[a]

猜你喜欢

转载自blog.csdn.net/qq_43536827/article/details/127483076
今日推荐