FunClip是一款完全开源、本地部署的自动化视频剪辑工具,通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别,随后用户可以自由选择识别结果中的文本片段或说话人,点击裁剪按钮即可获取对应片段的视频。
下面开始部署:
拉取项目时间:2024-12-19
电脑系统:Windows11
一、本次项目使用的基础依赖环境,根据自己电脑配置选择版本(或者根据项目要求配置环境),如已安装配置可跳过:
1、安装CUDA,官方下载地址:https://developer.nvidia.com/cuda-toolkit-archive
# 可先检查显卡支持的最大CUDA版本,命令行指令
nvidia-smi
2、安装配置CUDNN,官方下载地址:https://developer.nvidia.com/rdp/cudnn-archive
# 需下载CUDA支持的版本,输入以下CMD指令,能返回版本号
nvcc -V
3、 安装Git,官方下载地址:https://git-scm.com/downloads
# 输入以下CMD指令,能返回版本号
git --version
4、安装Python,官方下载地址:https://www.python.org/downloads
# 输入以下CMD指令,能返回版本号(我当前项目用的是Python3.10.11)
python --version
5、安装FFmpeg,官方下载地址:https://www.ffmpeg.org/download.html
选择 Windows builds by BtbN 下载,在选择对应的版本,我这里下载的是:ffmpeg-master-latest-win64-gpl.zip,下载放到需要用到的项目相关目录,待用
PS:输入CMD命令,如提示错误可能是环境变量没配置,自行按需配置
二、拉取FunClip项目
# 进入到需要安装的本地目录
cd E:\Program\Python
# 克隆funclip仓库
git clone https://github.com/alibaba-damo-academy/FunClip.git
FunClip项目下面有一个相关依赖的requirements.txt,它这里现阶段(2024-12-19)有个小的错误
项目拉取后我们先解决这个错误,把requirements里边的文本替换为下边内容
# 带井号注释的行需要删掉
librosa
soundfile
scikit-learn>=1.3.2
funasr>=1.1.2
# Moviepy这个依赖它没有指定版本,如果用最新的会导致部分环境下可能无法正常使用
moviepy==1.0.3
numpy==1.26.4
gradio
modelscope
torch>=1.13
torchaudio
openai
g4f
dashscope
curl_cffi
# 以下两个是额外需要加上去的,似乎是FunClip缺失的依赖,至少我本地电脑运行的时候提示缺失错误
onnx
onnxconverter_common
三、开始部署
# 首先重新打开CMD进入项目目录
CD E:\Program\Python\FunClip
# 在当前目录下创建一个虚拟环境,Python环境的版本可以按需指定
python -m venv env
虚拟环境部署好后,通过虚拟环境安装项目所需的相关依赖
# 注意:以下三部分命令指需要执行其中一部分即可
#在项目目录下CMD执行下边命令
.\env\Scripts\python.exe -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://download.pytorch.org/whl/cu124
# 或者把pytorch全部安装
.\env\Scripts\python.exe -m pip install -r./requirements.txt torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# 或者单独安装
.\env\Scripts\python.exe -m pip install -r ./requirements.txt
.\env\Scripts\python.exe -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# 以上命令表示通过虚拟环境的.\env\Scripts\python.exe安装清华源的requirements配置的相关依赖,并且安装pytorch
由于这个项目可能需要用到GPU,所以要安装pytorch依赖(官网:https://pytorch.org)
FunClip官方似乎没有要求这个,不安装的时候其实也可以使用这个项目,但是识别结果很慢,有性能好的N卡的话,建议打上pytorch依赖包(非N卡可以略过)
四、修复FunClip在当前环境下的错误,非Windows可能没有这些错误,没测试具体情况不知道,当前修复仅对本次部署的相关环境生效
1、我这里需要用到字幕裁剪功能ImageMagick,所以先去下载ImageMagick并安装,官网下载地址:https://imagemagick.org/script/download.php#windows
安装后复制一份ImageMagick到项目根目录
2、将ffmpeg-master-latest-win64-gpl.zip解压后,命名ffmpeg也放到根目录

3、编辑FunClip\funclip\videoclipper.py文件,替换相关的导入模块即可
import re
import os
import sys
# 将路径替换为你电脑上ImageMagick中magick.exe的真实路径(如果不用字幕裁剪功能,可以忽略不管)
os.environ['IMAGEMAGICK_BINARY'] = r'.\ImageMagick\magick.exe'
import copy
import librosa
import logging
import argparse
import numpy as np
import soundfile as sf
from moviepy.editor import *
import moviepy.editor as mpy
from moviepy.video.tools.subtitles import SubtitlesClip, TextClip
from moviepy.editor import VideoFileClip, concatenate_videoclips
# from moviepy.video.compositing import CompositeVideoClip 修改如下
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
from utils.subtitle_utils import generate_srt, generate_srt_clip
from utils.argparse_tools import ArgumentParser, get_commandline_args
from utils.trans_utils import pre_proc, proc, write_state, load_state, proc_spk, convert_pcm_to_float
4、编辑FunClip\funclip\launch.py文件,替换相关的导入模块即可
from http import server
import os
# 配置ffmpeg临时环境变量
ffmpeg_path = r'.\ffmpeg\bin'
os.environ['PATH'] = os.environ.get('PATH', '') + ';' + ffmpeg_path
import logging
import argparse
# 配置GRADIO临时路径
os.environ['GRADIO_TEMP_DIR'] = r'.\TEMP\gradio'
import gradio as gr
# 配置模型下载默认路径
os.environ['MODELSCOPE_CACHE'] = r'.\modelscope'
from funasr import AutoModel
from videoclipper import VideoClipper
from llm.openai_api import openai_call
from llm.qwen_api import call_qwen_model
from llm.g4f_openai_api import g4f_openai_call
from utils.trans_utils import extract_timestamps
from introduction import top_md_1, top_md_3, top_md_4
接下来运行命令启动项目即可
.\env\Scripts\python.exe funclip/launch.py
然后就是把启动打包成bat,就可以一键启动项目,并也可以正常使用
以上部署方案可能会因为项目源的更新导致失效,如官方有更新,导致部署错误,欢迎联系指出修正
关于怎么把项目打包成整合包发给别人,可以看另外一篇文字《Python项目整合包通用打包常用命令和方法》