安装过程中所涉及到的库有两种安装方式:通过pip或者conda安装。本次测试通过pip安装,使用镜像为清华源和豆瓣源。
moviepy包是一个用来处理视频的库。这个库是Python视频编辑库,可裁剪、拼接、标题插入、视频合成、视频处理和自定义效果。
1.使用pip install moviepy安装,报错
2.使用豆瓣镜像下载
pip install moviepy -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com
1.去官网下载ffmpeg(windows版本),并解压(解压到压缩文件名的文件夹)
2.在windows上配置系统环境变量Path
3.pip install ffmpeg-python
1.直接安装:
pip install --user spleeter
2.豆瓣镜像:
pip install --user spleeter -i https://pypi.doubanio.com/simple
3.不再手动训练,直接使用官方预测模型。目前spleeter提供三种音轨分离方式,其中:
可以自由选择。本次选择2stems模型进行背景与人声分离,手动下载安装过程如下:
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.aac
3.有时在视频编辑场景中需要将视频流提取出来进行编辑,比如给视频重新配音等,这时就需要单独提取视频流了,用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/output
2.报错:tensorflow DDL失败,找不到指定模块
3.查看python版本,当前python版本为3.7,不支持高版本的tensorflow
conda info
pip uninstall tensorflow
pip uninstall spleeter
5.重新安装旧版本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
上述命令是将1s.mp3分离为伴奏和人声,并存放到E:/movies/output文件夹中,2stems的输出为:
在使用的时候,第一次会在项目目录C:\Users$用户名$\pretrained_models\下载需要的预测模型。可能比较大,可以耐心等待或受到下载。见安装spleeter库-3.安装预测模型
2.查看分离结果
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出现的问题