# video-subtitle-extractor **Repository Path**: bobhsk/video-subtitle-extractor ## Basic Information - **Project Name**: video-subtitle-extractor - **Description**: srt字幕处理,能用好用 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-09-05 - **Last Updated**: 2024-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 简体中文 | [English](README_en.md) ## 项目简介 ![License](https://img.shields.io/badge/License-Apache%202-red.svg) ![python version](https://img.shields.io/badge/Python-3.8+-blue.svg) ![support os](https://img.shields.io/badge/OS-Windows/macOS/Linux-green.svg) Video-subtitle-extractor (vse) 是一款将视频中的硬字幕提取为外挂字幕文件(srt格式)的软件。 主要实现了以下功能: - 提取视频中的关键帧 - 检测视频帧中文本的所在位置 - 识别视频帧中文本的内容 - 过滤非字幕区域的文本,去除水印(台标)文本 - 去除重复字幕行,生成srt字幕文件 - 支持视频字幕**批量提取**(打开文件的时候选择多个视频) - 多语言:支持**中文/英文**、**日语**、**韩语**、**阿拉伯语**、**繁体中文**、**法语**、**德语**、**俄语**、**西班牙语**、**葡萄牙语**、**意大利语**字幕的提取 - 多模式: - **快速** - 快速提取字幕但可能丢字幕(推荐) - **精准** - 不丢字幕但速度较慢 **使用说明**: - 有使用问题请加群讨论,QQ群:210150985 - 视频以及程序路径请**不要带中文和空格**,否则可能出现未知错误!!! > 如:以下存放视频和代码的路径都不行 > > D:\下载\vse\运行程序.exe(路径含中文) > > E:\study\kaoyan\sanshang youya.mp4 (路径含空格) - 直接下载压缩包解压运行,如果不能运行再按照下面的教程,尝试源码安装conda环境运行 **下载地址**: - Windows 单文件版本: vse.exe 提取码:**17uj** > (双击直接运行,每次打开时会有一点慢,**推荐小白使用**) - Windows GPU版本: vse_windows_GPU.7z 提取码:**r911** - Windows CPU版本: vse_windows_CPU.zip 提取码:**1vi6** - MacOS CPU版本: vse_macOS_CPU.dmg 提取码:**7gbo** > PS: 若无法下载,请前往 Release 下载 ## 项目特色 - 采用本地进行OCR识别,无需设置调用任何API,不需要接入百度、阿里等在线OCR服务即可本地完成文本识别 - 支持GPU加速,GPU加速后可以获得更高的准确率与更快的提取速度 - (CLI版本) 无需用户手动设置字幕区域,项目通过文本检测模型自动检测字幕区域 - (GUI版本) 图形化界面 demo 点击【打开】后选择视频文件,调整字幕区域,点击【运行】 > **有任何改进意见请在ISSUES中提出** ## 演示 - GUI版:

demo.gif

- 点击查看视频教程 👇 [![GPU版本安装教程](https://s1.ax1x.com/2022/04/15/L3KzLR.png)](https://www.bilibili.com/video/bv11L4y1Y7Tj "GUP版本安装教程") ## 在线运行 - 使用**Google Colab Notebook**(免费GPU): Open In Colab > PS: Google Colab只能运行CLI版本 ## 源码使用说明 #### 1. 下载安装Miniconda - Windows: Miniconda3-py38_4.11.0-Windows-x86_64.exe - MacOS:Miniconda3-py38_4.11.0-MacOSX-x86_64.pkg - Linux: Miniconda3-py38_4.11.0-Linux-x86_64.sh #### 2. 创建并激活虚机环境 (1)切换到源码所在目录: ```shell cd <源码所在目录> ``` > 例如:如果你的源代码放在D盘的tools文件下,并且源代码的文件夹名为video-subtitle-extractor,就输入 ```cd D:/tools/video-subtitle-extractor-main``` (2)创建激活conda环境 ```shell conda create -n videoEnv python=3.8 ``` ```shell conda activate videoEnv ``` #### 3. 安装依赖文件 请确保你已经安装 python 3.8+,使用conda创建项目虚拟环境并激活环境 (建议创建虚拟环境运行,以免后续出现问题) - CPU用户 (Mac用户) : - 安装依赖: ```shell pip install -r requirements.txt ``` - GPU用户(有N卡): **要达到高精度的识别率请使用GPU版** - 安装CUDA和cuDNN
Linux用户
(1) 下载CUDA 11.7
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
(2) 安装CUDA 11.7
sudo sh cuda_11.7.0_515.43.04_linux.run

1. 输入accept

2. 选中CUDA Toolkit 11.7(如果你没有安装nvidia驱动则选中Driver,如果你已经安装了nvidia驱动请不要选中driver),之后选中install,回车

3. 添加环境变量

在 ~/.bashrc 加入以下内容

# CUDA
    export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

使其生效

source ~/.bashrc
(3) 下载cuDNN 8.4.1

国内:cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz 提取码:57mg

国外:cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz

(4) 安装cuDNN 8.4.1
 tar -xf cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz
     mv cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive cuda
     sudo cp ./cuda/include/* /usr/local/cuda-11.7/include/
     sudo cp ./cuda/lib/* /usr/local/cuda-11.7/lib64/
     sudo chmod a+r /usr/local/cuda-11.7/lib64/*
     sudo chmod a+r /usr/local/cuda-11.7/include/*
Windows用户
(1) 下载CUDA 11.7
cuda_11.7.0_516.01_windows.exe
(2) 安装CUDA 11.7
(3) 下载cuDNN 8.2.4

cudnn-windows-x64-v8.2.4.15.zip

(4) 安装cuDNN 8.2.4

将cuDNN解压后的cuda文件夹中的bin, include, lib目录下的文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\对应目录下

- 安装paddlepaddle: - windows: ```shell python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html ``` - Linux: ```shell python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html ``` > 如果安装cuda 10.2,请对应安装7.6.5的cuDNN,并使用对应cuda版本的paddlepaddle,**请不要使用cuDNN v8.x 和 cuda 10.2的组合** > 如果安装cuda 11.2,请对应安装8.1.1的cuDNN,并使用对应cuda版本的paddlepaddle,**30系列以上的显卡驱动可能不支持 cuda 11.2及以下版本的安装** - 安装其他依赖: ```shell pip install -r requirements_gpu.txt ``` #### 4. 运行程序 - 运行图形化界面版本(GUI) ```shell python gui.py ``` - 运行命令行版本(CLI) ```shell python ./backend/main.py ``` ## 常见问题与解决方案 #### 1. 运行不正常/没有结果/cuda及cudnn问题 解决方案:根据自己的显卡型号、显卡驱动版本,安装对应的cuda与cudnn #### 2. CondaHTTPError 将项目中的.condarc放在用户目录下(C:\Users\\<你的用户名>),如果用户目录已经存在该文件则覆盖 解决方案:https://zhuanlan.zhihu.com/p/260034241 #### 3. Windows下出现geos_c.dll错误 ```text _lgeos = CDLL(os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll')) File "C:\Users\Flavi\anaconda3\envs\subEnv\lib\ctypes\__init__.py", line 364, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 126] 找不到指定的模块。 ``` 解决方案: 1) 卸载Shapely ```shell pip uninstall Shapely -y ``` 2) 使用conda重新安装Shapely ```shell conda install Shapely ``` #### 4. Nuitka打包代码闪退 使用Nuitka版本```0.6.19```,将conda虚拟环境Lib文件夹下site-packages的所有文件复制到dependencies文件夹中,把paddle库dataset下image.py的有关subprocess代码全部注释了,使用以下打包命令: ```shell python -m nuitka --standalone --mingw64 --include-data-dir=D:\vse\backend=backend --include-data-dir=D:\vse\dependencies=dependencies --nofollow-imports --windows-icon-from-ico=D:\vse\design\vse.ico --plugin-enable=tk-inter,multiprocessing --output-dir=out .\gui.py ``` 编译成单个文件(pip安装zstandard可以减小体积) ```shell python -m nuitka --standalone --windows-disable-console --mingw64 --lto no --include-data-dir=D:\vse\backend=backend --include-data-dir=D:\vse\dependencies=dependencies --nofollow-imports --windows-icon-from-ico=D:\vse\design\vse.ico --plugin-enable=tk-inter,multiprocessing --output-dir=out --onefile .\gui.py ``` ## 社区支持 #### Jetbrains 全家桶支持 本项目开发所使用的IDE由Jetbrains支持。
JetBrains Logo (Main) logo.