VoxSub 是一个轻量的 Whisper 字幕工具,用于从媒体文件生成 .srt 字幕,也可以把字幕封装进 .mkv 文件。同时提供命令行与基于 Avalonia 的桌面界面,适合日常视频字幕制作、已有字幕封装,以及需要批处理脚本接入的本地工作流。
- Whisper 转写:支持
tiny、base、small、medium、large、turbo等 Whisper 模型 - 多语言识别:支持 Whisper 语言代码,例如
zh、en、ja、ko、fr、de、es - 简体中文输出:使用
zh-Hans时会以zh交给 Whisper,并通过 OpenCC 转为简体中文 - SRT 生成:基于 Whisper segments 生成标准
.srt,默认输出到媒体同名文件 - 详细日志:可通过
--verbose显示 Whisper 识别进度 - MKV 封装:调用 FFmpeg 将
.srt字幕写入.mkv - 无重编码:视频和音频使用 copy 模式,避免不必要的画质损失和耗时
- 字幕语言元数据:支持写入
zh、en、ja等语言标记 - 支持多种设备:
--device auto会优先选择当前机器可用的加速后端,支持包括 NVIDIA CUDA、Apple Silicon MPS、CPU
--fp16 auto` 仅在 CUDA 上启用 fp16,在 MPS/CPU 上关闭以提高稳定性
- Python 3.11+
- FFmpeg,并确保
ffmpeg位于系统 PATH - PyTorch
- openai-whisper
- OpenCC
- pysrt
- .NET 10 SDK 或 Runtime
如果还没有安装 pipx:
# Windows
py -m pip install --user pipx
# macOS
brew install pipx
# Ubuntu / Debian
python3 -m pip install --user pipx推荐使用 pipx 将 VoxSub 安装成全局命令:
git clone https://github.com/SIXiaolong1117/VoxSub.git
cd VoxSub
pipx install --python python3.12 .这里的 python3.12 可以替换为本机可用的 Python 3.11+ 解释器。
安装后检查:
voxsub --help如果当前终端找不到 pipx 或 voxsub,请先执行:
# Windows
py -m pipx ensurepath
# macOS / Linux
pipx ensurepath然后重新打开终端。
开发时可以使用可编辑安装:
pipx uninstall voxsub
pipx install --editable --python python3.12 .从 Github Releases 下载最新的 .zip 压缩包。解压到任意目录,运行 VoxSub.exe
voxsub transcribe <媒体文件> [选项]示例:
voxsub transcribe video.mp4 --language zh-Hans
voxsub transcribe video.mp4 --language en --model medium -o video.srt
voxsub transcribe video.mp4 --device cuda --fp16 true --verbose常用选项:
| 选项 | 说明 | 默认值 |
|---|---|---|
-l, --language |
Whisper 语言代码;zh-Hans 会额外转为简体中文 |
自动检测 |
-m, --model |
Whisper 模型名 | large |
--device |
auto、cuda、mps、cpu |
auto |
--fp16 |
auto、true、false |
auto |
-o, --output |
输出 .srt 路径 |
媒体同名 .srt |
--verbose |
显示 Whisper 识别进度 | 关闭 |
voxsub embed <媒体文件> [字幕文件] [选项]如果不指定字幕文件,VoxSub 默认使用媒体同名 .srt。
示例:
voxsub embed video.mp4
voxsub embed video.mp4 subtitle.srt
voxsub embed video.mp4 -s subtitle.srt --language zh --output-video video.mkv --overwrite常用选项:
| 选项 | 说明 | 默认值 |
|---|---|---|
[字幕文件] |
位置参数形式的字幕路径 | 媒体同名 .srt |
-s, --subtitle |
显式指定字幕路径 | 媒体同名 .srt |
-l, --language |
字幕流语言元数据;zh-Hans 会写入 zh |
不写入 |
--output-video |
输出 .mkv 路径 |
媒体同名 .mkv |
--overwrite |
覆盖已有输出文件 | 关闭 |
voxsub all <媒体文件> [选项]all 会先生成 .srt,再将该字幕封装进 .mkv。
示例:
voxsub all video.mp4 --language zh-Hans --model medium --output-video video.mkv
voxsub all video.mp4 --device cuda --fp16 auto --overwriteall 支持 transcribe 的转写选项,也支持 embed 的输出选项:
| 选项 | 说明 |
|---|---|
-l, --language |
识别语言或字幕语言 |
-m, --model |
Whisper 模型 |
--device |
运行设备 |
--fp16 |
fp16 策略 |
-o, --output |
SRT 输出路径 |
--verbose |
Whisper 详细输出 |
--output-video |
MKV 输出路径 |
--overwrite |
覆盖已有 MKV |
VoxSub 的设备由 --device 控制:
voxsub transcribe video.mp4 --device auto
voxsub transcribe video.mp4 --device cuda
voxsub transcribe video.mp4 --device mps
voxsub transcribe video.mp4 --device cpu--fp16 auto 默认只在 CUDA 上启用 fp16:
voxsub transcribe video.mp4 --device cuda --fp16 true
voxsub transcribe video.mp4 --device mps --fp16 false如果指定 --device cuda 后报错,常见原因是 voxsub 的 pipx 独立环境里安装的是 CPU 版 PyTorch。可在 voxsub 环境中重装 CUDA 版 PyTorch:
pipx runpip voxsub install --upgrade --force-reinstall torch --index-url https://download.pytorch.org/whl/cu121CUDA 版本请以 PyTorch 官网当前安装命令为准。Windows 上可以这样检查 voxsub 环境中的 PyTorch:
pipx runpip voxsub show torch
voxsub transcribe video.mp4 --device cudaVoxSub 提供 Avalonia 桌面界面,用于在不手写命令的情况下执行同一套 CLI 能力。
- 选择任务类型:转写字幕、封装字幕或转写并封装
- 选择媒体文件,并按需要选择字幕文件或输出路径
- 设置语言、Whisper 模型、设备和 fp16 策略
- 点击开始,在日志区域查看实时输出
图形界面本身不内置 Whisper、PyTorch 或 FFmpeg。它会优先调用系统中的
voxsub命令;如果未安装voxsub,则尝试使用本仓库内的python/voxsub.py。脚本模式会自动在项目根目录创建或复用.venv并安装缺失依赖,不会向系统 Python 安装包。
欢迎提交 Issue 和 Pull Request!
本项目基于 MIT 许可证 开源。
- OpenAI Whisper — 本地语音识别与转写能力
- FFmpeg — 多媒体处理工具套件
- OpenCC — 中文简繁转换
- Avalonia UI — 跨平台 .NET UI 框架
- CommunityToolkit.Mvvm — .NET MVVM 工具包