python语音特征提取之使用ffmpeg与spleeter实现视频人声过滤 |
您所在的位置:网站首页 › 过滤人声的手机软件 › python语音特征提取之使用ffmpeg与spleeter实现视频人声过滤 |
安装过程中所涉及到的库有两种安装方式:通过pip或者conda安装。本次测试通过pip安装,使用镜像为清华源和豆瓣源。 安装moviepymoviepy包是一个用来处理视频的库。这个库是Python视频编辑库,可裁剪、拼接、标题插入、视频合成、视频处理和自定义效果。 1.使用pip install moviepy安装,报错 2.使用豆瓣镜像下载 pip install moviepy -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com 安装ffmpeg1.去官网下载ffmpeg(windows版本),并解压(解压到压缩文件名的文件夹) 2.在windows上配置系统环境变量Path 3.pip install ffmpeg-python 安装spleeter库1.直接安装: pip install --user spleeter2.豆瓣镜像: pip install --user spleeter -i https://pypi.doubanio.com/simple3.不再手动训练,直接使用官方预测模型。目前spleeter提供三种音轨分离方式,其中: Vocals (singing voice) / accompaniment separation (2 stems) —两个音轨:背景和人声Vocals /drums / bass / other separation (4 stems) —四个音轨Vocals / drums / bass /piano / other separation (5 stems)—五个音轨可以自由选择。本次选择2stems模型进行背景与人声分离,手动下载安装过程如下: github下载2stems.tar.gz https://github.com/deezer/spleeter/releases 解压到C:\Users$用户名$\pretrained_models\下 分离视频与音频1.moviepy库代码及分离音频后输出结果 from moviepy.editor import * video = VideoFileClip('E:/movies/1.mp4') audio = video.audio audio.write_audiofile('E:/movies/1_s.mp3') print('输出结束')2.不安装moviepy视频编辑库可以直接使用ffmpeg-python库,代码实现略复杂。在Windows环境下,如果安装好了ffmpeg也可以直接使用命令行直接提取视频流中的aac音频信息。 ffmpeg -i E:/movies/1.mp4 -vn -y -acodec copy E:/movies/1s.aac3.有时在视频编辑场景中需要将视频流提取出来进行编辑,比如给视频重新配音等,这时就需要单独提取视频流了,用ffmpeg的命令提取出视频文件的H264视频流如下: ffmpeg -i E:/movies/1.mp4 -an -vcodec copy E:/movies/out.h264 分离人声与背景声如果是pip安装好的spleeter,可以直接在base环境中输入上面的命令,如果是conda,需要先进入spleeter-cpu环境,在此环境下输入命令。 1.使用spleeter分离音频中的人声与背景声 Python -m spleeter separate -i E:/movies/1s.mp3 -p spleeter:2stems -o E:/movies/output2.报错:tensorflow DDL失败,找不到指定模块 3.查看python版本,当前python版本为3.7,不支持高版本的tensorflow conda info4.卸载原本tensorflow pip uninstall tensorflow pip uninstall spleeter5.重新安装旧版本1.15的tensorflow(python3.7无法安装tensorflow1.5,故选择1.15),和1.5的spleeter,使用豆瓣源 pip install --user --index-url https://pypi.douban.com/simple tensorflow==1.15 pip install --user spleeter==1.5 -i https://pypi.doubanio.com/simple 再次分离1.执行命令 Python -m spleeter separate -i E:/movies/1s.mp3 -p spleeter:2stems -o E:/movies/output -m: python的写法,表示指定模块,在此处表示使用spleeter模块-p: 指定预测模型-i: 要进行分离的音频数据(建议使用绝对地址,否则可能出现WinErr2)-o: 分离出的音轨数据wav文件所在文件夹上述命令是将1s.mp3分离为伴奏和人声,并存放到E:/movies/output文件夹中,2stems的输出为: E:/movies/output/1s/accompaniment.wavE:/movies/output/1s/vocals.wav 其伴奏为accompaniment.wav人声文件为vocals.wav在使用的时候,第一次会在项目目录C:\Users$用户名$\pretrained_models\下载需要的预测模型。可能比较大,可以耐心等待或受到下载。见安装spleeter库-3.安装预测模型 2.查看分离结果 伴奏文件:accompaniment.wav人声文件:vocals.wav 合成视频流与伴奏文件1.执行合成命令 ffmpeg -i E:/movies/out.h264 -i E:/movies/output/1s/accompaniment.wav E:/movies/out.mp4上述命令会把视频文件原声音或者是音轨取消,无论是否有声音都需要做这个步骤。若音频比视频长,画面停留在最后一帧,继续播放声音。 2.查看输出结果 其他可能出现的报错1.FileNotFoundError: [WinError 2] 系统找不到指定的文件 根据错误提示:找到lib中的subprocess.py文件 将subprocess.py 中第684行的 shell 值改为 True 2.UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb2 in position 10: invalid start byte 根据错误提示:找到ffmpeg.py 文件将第76行的.format(e.stderr.decode())) 改为 .format(e.stderr.decode(“utf8”, “ignore”))) C:\Users\EDZ\AppData\Roaming\Python\Python37\site-packages\spleeter\audio\ffmpeg.py 3.spleeter:ffprobe error (see stderr output for detail) ffmpeg没安装好 重新安装ffmpeg 4.AttributeError: module ‘ffmpeg’ has no attribute ‘probe’ 安装ffmpeg时最后执行的命令为pip install ffmpeg-python,而非ffmpeg或python-ffmpeg。如果出错需要重新下载安装:pip uninstall 文件名。 参考文章 ffmpeg音视频文件音视频流抽取,初步尝试人声分离 【Spleeter】实验记录——音轨分离软件spleeter的安装 Spleeter工具简单分析 安装 使用spleeter出现的问题 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |