python语音特征提取之使用ffmpeg与spleeter实现视频人声过滤

您所在的位置:网站首页 过滤人声的手机软件 python语音特征提取之使用ffmpeg与spleeter实现视频人声过滤

python语音特征提取之使用ffmpeg与spleeter实现视频人声过滤

2023-09-06 03:00| 来源: 网络整理| 查看: 265

安装过程中所涉及到的库有两种安装方式:通过pip或者conda安装。本次测试通过pip安装,使用镜像为清华源和豆瓣源。

安装moviepy

moviepy包是一个用来处理视频的库。这个库是Python视频编辑库,可裁剪、拼接、标题插入、视频合成、视频处理和自定义效果。 1.使用pip install moviepy安装,报错 在这里插入图片描述 2.使用豆瓣镜像下载

pip install moviepy -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com

在这里插入图片描述

安装ffmpeg

1.去官网下载ffmpeg(windows版本),并解压(解压到压缩文件名的文件夹) 2.在windows上配置系统环境变量Path 3.pip install ffmpeg-python

安装spleeter库

1.直接安装:

pip install --user spleeter

2.豆瓣镜像:

pip install --user spleeter -i https://pypi.doubanio.com/simple

3.不再手动训练,直接使用官方预测模型。目前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.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

在这里插入图片描述 4.卸载原本tensorflow

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 -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