video-subtitle-remover README

The project's README from github.com/YaoFANGUK/video-subtitle-remover. As one markdown file: README.md.

简体中文 | English

VSR Logo
YaoFANGUK%2Fvideo-subtitle-remover | Trendshift YaoFANGUK%2Fvideo-subtitle-remover | Trendshift

项目简介

License python version support os Docker

Video-subtitle-remover (VSR) 是一款基于AI技术,将视频中的硬字幕去除的软件。 主要实现了以下功能:

demo.png

使用说明:

下载地址:Release

预构建包对比说明:

预构建包名 Python Paddle Torch 环境 支持的计算能力范围
vsr-windows-cpu.7z 3.12 3.0.0 2.7.0 通用 通用
vsr-windows-directml.7z 3.12 3.0.0 2.4.1 Windows 非Nvidia显卡 通用
vsr-windows-nvidia-cuda-11.8.7z 3.12 3.0.0 2.7.0 CUDA 11.8 3.5 – 8.9
vsr-windows-nvidia-cuda-12.6.7z 3.12 3.0.0 2.7.0 CUDA 12.6 5.0 – 8.9
vsr-windows-nvidia-cuda-12.8.7z 3.12 3.0.0 2.7.0 CUDA 12.8 5.0 – 9.0+

NVIDIA官方提供了各GPU型号的计算能力列表,您可以参考链接: CUDA GPUs 查看你的GPU适合哪个CUDA版本

Docker版本:

  # Nvidia 10 20 30系显卡
  docker run -it --name vsr --gpus all eritpchy/video-subtitle-remover:1.4.0-cuda11.8 python backend/main.py -i test/test.mp4 -o test/test_no_sub.mp4

  # Nvidia 40系显卡
  docker run -it --name vsr --gpus all eritpchy/video-subtitle-remover:1.4.0-cuda12.6 python backend/main.py -i test/test.mp4 -o test/test_no_sub.mp4

  # Nvidia 50系显卡
  docker run -it --name vsr --gpus all eritpchy/video-subtitle-remover:1.4.0-cuda12.8 python backend/main.py -i test/test.mp4 -o test/test_no_sub.mp4

  # AMD / Intel 独显 集显
  docker run -it --name vsr --gpus all eritpchy/video-subtitle-remover:1.4.0-directml python backend/main.py -i test/test.mp4 -o test/test_no_sub.mp4

  # CPU
  docker run -it --name vsr --gpus all eritpchy/video-subtitle-remover:1.4.0-cpu python backend/main.py -i test/test.mp4 -o test/test_no_sub.mp4

  # 导出视频
  docker cp vsr:/vsr/test/test_no_sub.mp4 ./

命令行参数:

Video Subtitle Remover Command Line Tool

options:
  -h, --help            show this help message and exit
  --input INPUT, -i INPUT
                        Input video file path
  --output OUTPUT, -o OUTPUT
                        Output video file path (optional)
  --subtitle-area-coords YMIN YMAX XMIN XMAX, -c YMIN YMAX XMIN XMAX
                        Subtitle area coordinates (ymin ymax xmin xmax). Can be specified multiple times for multiple areas.
  --inpaint-mode {sttn-auto,sttn-det,lama,propainter,opencv}
                        Inpaint mode, default is sttn-auto

演示

demo2.gif

demo.gif

源码使用说明

1. 安装 Python

请确保您已经安装了 Python 3.12+。

2. 安装依赖文件

请使用虚拟环境来管理项目依赖,避免与系统环境冲突。

(1)创建虚拟环境并激活

python -m venv videoEnv
videoEnv\\Scripts\\activate
source videoEnv/bin/activate

3. 创建并激活项目目录

切换到源码所在目录:

cd <源码所在目录>

例如:如果您的源代码放在 D 盘的 tools 文件夹下,并且源代码的文件夹名为 video-subtitle-remover,则输入:

cd D:/tools/video-subtitle-remover-main

4. 安装合适的运行环境

本项目支持 CUDA (NVIDIA显卡加速)、CPU (无 GPU)、 DirectML (AMD、Intel等GPU/APU加速) 和 macOS (Apple Silicon) 四种运行模式。

(1) CUDA(NVIDIA 显卡用户)

请确保您的 NVIDIA 显卡驱动支持所选 CUDA 版本。

(2) DirectML(AMD、Intel等GPU/APU加速卡用户)
(3) CPU 运行(无 GPU 加速)
(4) macOS 运行 (Apple Silicon)

4. 运行程序

python gui.py
python ./backend/main.py

常见问题

  1. 提取速度慢怎么办

修改backend/config.py中的参数,可以大幅度提高去除速度

MODE = InpaintMode.STTN  # 设置为STTN算法
STTN_SKIP_DETECTION = True # 跳过字幕检测,跳过后可能会导致要去除的字幕遗漏或者误伤不需要去除字幕的视频帧
  1. 视频去除效果不好怎么办

修改backend/config.py中的参数,尝试不同的去除算法,算法介绍

  • InpaintMode.STTN 算法:对于真人视频效果较好,速度快,可以跳过字幕检测
  • InpaintMode.LAMA 算法:对于图片效果最好,对动画类视频效果好,速度一般,不可以跳过字幕检测
  • InpaintMode.PROPAINTER 算法: 需要消耗大量显存,速度较慢,对运动非常剧烈的视频效果较好
MODE = InpaintMode.STTN  # 设置为STTN算法
# 相邻帧数, 调大会增加显存占用,效果变好
STTN_NEIGHBOR_STRIDE = 10
# 参考帧长度, 调大会增加显存占用,效果变好
STTN_REFERENCE_LENGTH = 10
# 设置STTN算法最大同时处理的帧数量,设置越大速度越慢,但效果越好
# 要保证STTN_MAX_LOAD_NUM大于STTN_NEIGHBOR_STRIDE和STTN_REFERENCE_LENGTH
STTN_MAX_LOAD_NUM = 30
MODE = InpaintMode.LAMA  # 设置为STTN算法
LAMA_SUPER_FAST = False  # 保证效果

如果对模型去字幕的效果不满意,可以查看design文件夹里面的训练方法,利用backend/tools/train里面的代码进行训练,然后将训练的模型替换旧模型即可

  1. 7z文件解压错误

解决方案:升级7-zip解压程序到最新版本

  1. Mac版本运行报错:Error "bad CPU type in executable"

解决方案:打开控制台输入softwareupdate --install-rosetta 安装rosetta

赞助

video-subtitle-remover (YaoFANGUK/video-subtitle-remover)

Searching Database…

这是什么?Video-subtitle-remover(VSR)是一款 AI 工具,可以去除视频和图片中硬编码的字幕以及类似文字的水印,并以原始分辨率输出结果,无需调用任何第三方 API。
这是图形界面应用还是命令行工具?两者都有:它同时提供图形界面和命令行版本,你可以任选一种方式运行。
我该如何让它运行起来?下载预编译的压缩包,解压后直接运行;如果失败,则从源代码安装,即根据你的平台和 GPU 配置好 conda 或 venv 环境。
运行前需要先安装什么?需要 Python 3.12+,并从以下四种后端配置中选择一种:用于 NVIDIA GPU 的 CUDA 11.8 加 cuDNN 8.6.0、用于 Windows 上 AMD/Intel GPU 的 DirectML、纯 CPU 模式,或原生 macOS(Apple Silicon)模式。
字幕去除效果总是很好吗?效果很大程度上取决于所选的修复算法;而在 Apple Silicon 上,默认的 OCR 字幕检测模型(PP-OCRv4-Server)准确度明显较低,因此建议在该平台上换用其他模型。
它支持哪些操作系统和 GPU?它可在 Windows、Linux 和 macOS 上运行,可通过 CUDA(NVIDIA)或 DirectML(AMD/Intel)启用 GPU 加速,也可仅用 CPU 运行;Intel 芯片的 macOS 应使用 CPU 模式,因为那里的 GPU 实际上更慢。
STTN、LAMA 和 ProPainter 去除算法有什么区别?STTN 在实拍视频上效果好且速度快,并且可以跳过字幕检测;LAMA 在图片和动画视频上效果最佳,但不能跳过检测;ProPainter 能很好地处理大幅度运动,但需要大量显存,运行也更慢。
它能提取字幕,而不只是去除吗?可以,它设计为与配套项目 video-subtitle-extractor(VSE)配合使用,从原始视频中提取字幕文字。
我可以批量去除多张图片的水印,而不只是视频吗?可以,它支持一次选择多张图片,批量去除其中的水印文字。
我可以把去除范围限定在屏幕的特定区域吗?可以,你可以指定自定义字幕区域,只擦除该区域内的文字;也可以不设置,让它自动检测并去除画面中的所有文字。
Creator
YaoFANGUK
Size
1.4 GB
Stars
13.3K
Age
2y
Commits · 90 Days