VideoCaptioner 全流程视频字幕处理实战指南:语音识别、字幕优化、翻译与配音合成一站式搞定
【免费下载链接】VideoCaptioner🎬 卡卡字幕助手 | VideoCaptioner - 基于 LLM 的智能字幕助手 - 视频字幕生成、断句、校正、字幕翻译全流程处理!- A powered tool for easy and efficient video subtitling.项目地址: https://gitcode.com/gh_mirrors/vi/VideoCaptioner
VideoCaptioner(卡卡字幕助手)是一个基于大语言模型(LLM)的视频字幕处理工具,覆盖"语音识别 → 字幕断句 → LLM 优化 → 翻译 → 视频合成"的完整工作流。本文以项目根目录的 README.md 为主体,结合 docs/cli.md 命令文档与核心源码实现,系统讲解其安装方式、CLI 命令、GUI 桌面版、LLM 配置、Claude Code Skill 接入以及底层工作原理,读完后你将能独立完成从一段原始视频到带优化字幕、多语言翻译乃至配音成片的完整处理管线。
一、项目概览:一条命令打通视频字幕全流程
VideoCaptioner 的设计目标是"安装即用、免费起步"。其核心处理流水线在 README 中概括为:
音视频输入 → 语音识别 → 字幕断句 → LLM 优化 → 翻译 → 视频合成在此基础上,项目还提供了字幕配音(dub)与在线视频下载(download)等延伸能力。从源码结构看,这一流水线被拆分为多个独立的核心模块,分别位于 videocaptioner/core/asr(语音识别)、videocaptioner/core/split(断句)、videocaptioner/core/optimize(优化)、videocaptioner/core/translate(翻译)以及 videocaptioner/core/subtitle(字幕样式渲染)等目录,各模块既可独立使用,也可由process命令一键串联。
项目同时提供CLI 命令行与GUI 桌面版两种使用方式,并额外内置Claude Code Skill,允许 AI 编程助手直接调用 VideoCaptioner 处理视频。
二、安装:一条 pip 命令,免费功能开箱即用
pip install videocaptioner # 安装 CLI + GUI 桌面版安装后即可使用所有免费功能,无需任何 API Key 或额外配置:
- 必剪语音识别(bijian):免费 ASR 引擎;
- 必应翻译(bing)与谷歌翻译(google):免费翻译服务。
只有需要 LLM 参与的功能(字幕优化、大模型翻译、反思式翻译等)时才需要配置 LLM API Key。GUI 桌面版的启动方式见下文,Windows 用户还可以从官方 Release 下载独立安装包,macOS 用户可通过仓库中的 scripts/run.sh 一键脚本安装。
三、CLI 命令行:核心命令与完整参数
CLI 入口实现在 videocaptioner/cli/main.py,通过argparse构建了gui、transcribe、subtitle、dub、synthesize、process、download、style、config、doctor共十个子命令。运行videocaptioner <命令> --help可查看每个命令的完整参数。
3.1 transcribe — 语音转字幕
将音视频文件转为字幕文件,支持 mp3/wav/mp4/mkv 等格式,视频会自动提取音频:
videocaptioner transcribe video.mp4 --asr bijian主要参数:
| 选项 | 说明 |
|---|---|
--asr | ASR 引擎:bijian(默认,免费)、jianying(免费)、whisper-api、whisper-cpp。bijian/jianying 仅支持中英文,其他语言请用 whisper-api 或 whisper-cpp |
--language CODE | 源语言 ISO 639-1 代码,如zh、en、ja,或auto(默认,自动检测) |
--word-timestamps | 输出词级时间戳(配合字幕断句使用) |
--whisper-api-key/--whisper-api-base | Whisper API 密钥与地址(仅--asr whisper-api) |
--whisper-model | Whisper 模型名(whisper-api 默认whisper-1,whisper-cpp 默认large-v2) |
-o PATH | 输出文件或目录路径 |
--format | 输出格式:srt(默认)、ass、txt、json |
从源码看,除上述公开参数外,videocaptioner/cli/main.py 还以隐藏参数形式支持 Faster-Whisper 本地引擎的高级选项(--fw-model、--fw-device、--fw-vad-method、--fw-vad-threshold、--fw-prompt、--fw-voice-extraction),对应 videocaptioner/core/asr/faster_whisper.py 的实现,可通过videocaptioner config set transcribe.faster_whisper.model ...等配置项使用。
3.2 subtitle — 字幕优化与翻译
对字幕文件进行最多三步处理:
- 断句(Split)— 按语义边界重新分割字幕(LLM);
- 优化(Optimize)— 修正 ASR 识别错误、标点与格式(LLM);
- 翻译(Translate)— 翻译到目标语言(LLM / 必应 / 谷歌)。
默认开启优化与断句、关闭翻译;指定--translator或--target-language即自动开启翻译:
# 翻译字幕(免费必应翻译) videocaptioner subtitle input.srt --translator bing --target-language en # 使用大模型优化并反思式翻译 videocaptioner subtitle input.srt --translator llm --reflect --layout target-above主要参数:
| 选项 | 说明 |
|---|---|
--translator | 翻译服务:llm(默认)、bing(免费)、google(免费) |
--target-language CODE | 目标语言 BCP 47 代码:zh-Hans、en、ja、ko、fr、de等 |
--no-optimize/--no-translate/--no-split | 分别跳过优化、翻译、断句 |
--reflect | 反思式翻译(仅 LLM,质量更高但更慢) |
--layout | 双语布局:target-above、source-above、target-only、source-only |
--prompt TEXT | 自定义提示词(辅助 LLM 优化/翻译) |
--api-key/--api-base/--model | LLM 密钥、接口地址、模型名(也可用环境变量) |
--max-cjk/--max-english | 单行最大字符/单词数(默认 CJK 18、英文 12) |
--thread-num/--batch-size | 并发线程数(默认 4)与批处理大小(默认 20) |
3.3 synthesize — 字幕合成到视频
将字幕烧录到视频中,支持软字幕(嵌入轨道)与硬字幕(烧录画面)两种模式:
videocaptioner synthesize video.mp4 -s subtitle.srt --subtitle-mode hard| 选项 | 说明 |
|---|---|
-s FILE | 必填,字幕文件(.srt/.ass) |
--subtitle-mode | soft(默认,嵌入可选字幕轨道)或hard(永久烧录进画面) |
--quality | 视频质量:ultra(CRF18)、high(CRF23)、medium(默认,CRF28)、low(CRF32) |
--layout | 双语字幕布局 |
--style NAME | 样式预设(运行videocaptioner style查看) |
--style-override JSON | 内联 JSON 覆盖样式字段,如'{"outline_color": "#ff0000"}' |
--render-mode | 渲染模式:ass(默认,描边样式)或rounded(圆角背景) |
--font-file PATH | 自定义字体文件(.ttf/.otf) |
两种字幕渲染模式让硬字幕更美观:
- ASS 模式(默认)— 传统描边/阴影样式,支持自定义字体、颜色、描边宽度:
# 使用动漫风格预设 videocaptioner synthesize video.mp4 -s sub.srt --subtitle-mode hard --style anime # 自定义红色描边与字号 videocaptioner synthesize video.mp4 -s sub.srt --subtitle-mode hard \ --style-override '{"outline_color": "#ff0000", "font_size": 48}'- 圆角背景模式— 现代圆角矩形背景,支持自定义背景色、圆角半径、内边距:
videocaptioner synthesize video.mp4 -s sub.srt --subtitle-mode hard --render-mode rounded # 白字红底、圆角 12 videocaptioner synthesize video.mp4 -s sub.srt --subtitle-mode hard \ --style-override '{"text_color": "#ffffff", "bg_color": "#ff000099", "corner_radius": 12}'样式选项仅对硬字幕(--subtitle-mode hard)生效,软字幕由播放器自行渲染。圆角背景模式的默认参数定义在 videocaptioner/core/subtitle/styles.py:背景色默认#191919C8(半透明深灰)、文字#FFFFFF、圆角半径 12、水平/垂直内边距 28/14、底部外边距 60、行间距 10,均支持通过--style-override覆盖。
3.4 dub — 字幕配音
根据字幕时间轴生成配音音轨,可选把音轨写回视频。普通 SRT 可直接使用;多说话人场景可在字幕文本中标注说话人:
[Alice] 你好,今天开始测试。 Bob: This line uses another voice.# Edge TTS(默认,无需 API key,依赖网络) videocaptioner dub input.srt --preset edge-cn-female -o output.wav # SiliconFlow CosyVoice2 videocaptioner dub input.srt --preset siliconflow-cn-female \ --tts-api-key "$VIDEOCAPTIONER_TTS_API_KEY" -o output.wav # Gemini TTS videocaptioner dub input.srt --preset gemini-en-friendly \ --tts-api-key "$VIDEOCAPTIONER_TTS_API_KEY" -o output.wav # 多说话人音色映射,并输出视频 videocaptioner dub input.srt --video video.mp4 \ --speaker-voice Alice=anna \ --speaker-voice Bob=benjamin \ -o video_dubbed.mp4| 选项 | 说明 |
|---|---|
--preset | 配音预设:如siliconflow-cn-female、gemini-en-friendly、edge-cn-female |
--tts-api-key | TTS API key。SiliconFlow/Gemini 需要;Edge TTS 不需要 |
--voice | 默认音色。SiliconFlow 可用anna、alex、benjamin;Gemini 使用Kore、Achird等;Edge 可用xiaoxiao、yunxi或完整 voice ID |
--speak auto/first/second | 双语字幕时选择朗读第一行还是第二行 |
--speaker-voice NAME=VOICE | 给字幕中的说话人指定音色,可重复 |
--speaker-clone NAME=AUDIO\|TEXT | SiliconFlow 音色克隆参考音频与对应文本 |
--clone-audio/--clone-text | 给默认说话人使用 SiliconFlow 音色克隆;Gemini/Edge 不支持 |
--timing balanced/strict/natural/none | 时间轴策略:默认balanced;strict更贴字幕;natural更保留自然语速 |
--adapt-length | 使用 LLM 缩短明显过长的台词 |
--audio-mode replace/mix/duck | 输出视频时替换原声、混合原声,或压低原声作为背景 |
命令会额外生成*.dubbing.json报告,记录每句使用的说话人、音色、生成时长、变速倍数和时间轴 warning。各 TTS 提供商的预设、模型与音色别名定义在 videocaptioner/core/dubbing/presets.py,例如 SiliconFlow 使用 CosyVoice2 模型(FunAudioLLM/CosyVoice2-0.5B),Gemini 使用gemini-3.1-flash-tts-preview并内置 Kore、Achird 等数十种音色,Edge 则将xiaoxiao、yunxi等别名映射到zh-CN-XiaoxiaoNeural等完整 voice ID。
3.5 process — 全流程处理
一键完成:转录 → 断句 → 优化 → 翻译 → 合成,支持上述所有命令的参数:
videocaptioner process video.mp4 --target-language ja额外选项:
| 选项 | 说明 |
|---|---|
--no-synthesize | 跳过视频合成(只输出字幕) |
--dub | 在转录/处理字幕后生成配音音轨或配音视频 |
--dub-only | 只输出配音结果,跳过字幕烧录/嵌入 |
典型场景示例:
# 英文视频配成中文视频 videocaptioner process talk.mp4 \ --asr bijian \ --translator bing --to zh-Hans \ --dub-only \ --timing strict # 中文视频配成英文视频 videocaptioner process input.mp4 \ --translator bing --to en \ --dub-only \ --preset gemini-en-friendly \ --tts-api-key "$VIDEOCAPTIONER_TTS_API_KEY"音频文件作为输入时,会自动跳过视频合成步骤。
3.6 download / style / config / doctor
- download— 下载在线视频:
videocaptioner download <URL> [-o 目录],支持 YouTube、B站等 yt-dlp 支持的所有平台; - style—
videocaptioner style列出全部样式预设及其配置参数(ASS 与圆角背景两种模式); - config— 配置管理,子命令包括
show、set、get、path、init、edit(详见下文"配置管理"); - doctor— 环境诊断:
videocaptioner doctor检查 Python、FFmpeg/FFprobe、yt-dlp、配置文件及 ASR/LLM/翻译/配音关键配置,缺失项会给出对应修复命令;--json输出机器可读结果,便于 Agent/CI 集成;--check-api可额外执行轻量的提供商 API 连通性检查。
3.7 通用选项与退出码
所有命令均支持:
| 选项 | 说明 |
|---|---|
-v/--verbose | 详细输出 |
-q/--quiet | 静默模式,仅输出结果路径(适合管道使用) |
--config FILE | 指定配置文件 |
退出码定义见 videocaptioner/cli/exit_codes.py:
| 码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 一般错误 |
| 2 | 参数/配置错误 |
| 3 | 输入文件不存在 |
| 4 | 依赖缺失(FFmpeg 等) |
| 5 | 运行时错误(API 失败等) |
四、GUI 桌面版
pip install videocaptioner videocaptioner-gui # 显式打开桌面版 videocaptioner gui # 等价命令 videocaptioner # 无参数时也会打开桌面版从 videocaptioner/cli/main.py 的main()实现可以看到,当不带任何子命令运行时,CLI 会直接调用_run_gui启动桌面版;若 GUI 依赖缺失(未安装完整包),则会提示安装官方包并返回依赖缺失退出码(4)。GUI 界面源码位于 videocaptioner/ui 目录,包括任务创建、字幕编辑、批量处理、样式设置、日志查看等完整界面模块。
五、LLM API 配置
LLM 仅用于字幕优化和大模型翻译,免费功能(必剪识别、必应翻译)无需任何配置。项目支持所有OpenAI 兼容接口的服务商,包括 DeepSeek、SiliconCloud 等平台。在软件设置或 CLI 中填入 API Base URL 和 API Key 即可:
videocaptioner config set llm.api_key <your-key> videocaptioner config set llm.api_base https://api.openai.com/v1 videocaptioner config set llm.model gpt-4o-mini更完整的 LLM 配置说明可参考 docs/config/llm.md(翻译器配置见 docs/config/translator.md,ASR 配置见 docs/config/asr.md)。
六、Claude Code Skill:让 AI 编程助手直接处理视频
本项目提供了 skills/SKILL.md 作为 Claude Code Skill,使 AI 编程助手可以直接调用 VideoCaptioner 处理视频。安装到 Claude Code:
mkdir -p ~/.claude/skills/videocaptioner cp skills/SKILL.md ~/.claude/skills/videocaptioner/SKILL.md然后在 Claude Code 中输入:
/videocaptioner transcribe video.mp4 --asr bijian即可让 AI 助手完成视频转录等操作。
七、工作原理:从源码看四个关键机制
7.1 语音识别:模板方法 + 磁盘缓存 + 公益限流
所有 ASR 引擎都继承自 videocaptioner/core/asr/base.py 中的BaseASR基类,采用模板方法模式:子类只需实现_run()(调用识别服务)与_make_segments()(将响应转为ASRDataSeg段列表)。基类统一提供三项能力:
- 格式校验与 CRC32 文件指纹:支持 flac/m4a/mp3/wav 音频格式,读取文件后计算 CRC32 作为缓存键(
self.crc32_hex),子类可通过重写_get_key()加入更多参数; - 两级磁盘缓存:
run()方法先查缓存,命中则直接返回;未命中则调用_run()并将结果写入缓存(有效期 2 天),同一文件重复识别几乎零成本; - 公益服务限流:针对必剪、剪映等免费公共接口,内置调用次数与总时长双重限制(默认 100 次调用 / 360 分钟总时长 / 12 小时窗口),通过 SQLite 缓存表记录每次调用的音频时长,超出即抛出运行时错误,防止滥用。
识别结果统一封装为ASRData(位于 videocaptioner/core/asr/asr_data.py),携带时间戳、词级时间戳等结构化信息,供下游断句、优化模块消费。
7.2 字幕断句:语义理解 + 规则兜底
断句模块 videocaptioner/core/split/split.py 的核心目标是让字幕按语义自然断行,而非机械按时间切分。其实现要点包括:
- LLM 语义断句:长文本(超过约 500 字的片段)交由 LLM 依据语义切分(videocaptioner/core/split/split_by_llm.py);
- 规则兜底:对短片段按时间间隔、词数等规则合并/分割,源码中定义了丰富的阈值常量,例如 CJK 单行最大 25 字、英文单行最大 18 词、允许的最大时间间隔 1500ms、短段合并阈值 200ms、规则分割时间间隔阈值 500ms 等;
- 预处理:移除纯标点片段,为英语、俄语等空格分隔语言补空格,并支持大小写归一化;
- 对齐修复:结合 videocaptioner/core/split/alignment.py 的
SubtitleAligner,在优化/断句后自动对齐原始时间轴,避免文本错位。
7.3 字幕优化:Agent 循环自动验证与修正
videocaptioner/core/optimize/optimize.py 中的SubtitleOptimizer使用 LLM 优化字幕内容,支持:
- Agent loop 自动验证与修正:通过
difflib对比优化前后文本,发现异常(如大量增删、编号错乱)时最多自动重试修正(MAX_STEPS = 3),并配合json_repair修复 LLM 返回的残缺 JSON; - 并发批量处理:基于
ThreadPoolExecutor的线程池(线程数与批大小可配置),并在atexit注册清理函数确保进程退出时资源正确释放; - 自适应拆分:对超长字幕自动分组后再逐批优化,兼顾质量与成本。
7.4 翻译:工厂模式统一接入四种服务
videocaptioner/core/translate/factory.py 中的TranslatorFactory.create_translator()按类型创建翻译器实例,统一封装 LLM(OpenAI 兼容)、Google、Bing、DeepLX 四种翻译器,并提供线程数、批大小、目标语言、自定义提示词、反思模式等公共参数。其中:
- LLM 翻译:默认模型
gpt-4o-mini,支持上下文感知与反思式翻译(--reflect),对应提示词模板位于 videocaptioner/core/prompts/translate(含 standard、reflect、single 三个模板); - Bing / Google:免费翻译,工厂内部自动调整批大小(Google/DeepLX 为 5,Bing 为 10),并设置合理的请求超时。
八、配置管理:四级优先级与环境变量
配置优先级为:命令行参数 > 环境变量(VIDEOCAPTIONER_*)> 配置文件 > 默认值。该优先级在 videocaptioner/cli/main.py 的_build_cli_overrides()与_load_config()中实现——每个命令的 CLI 参数被收集为嵌套 override 字典(如llm.api_key、transcribe.asr、dubbing.preset),再与配置文件、环境变量逐层合并。运行videocaptioner config show可查看最终生效的完整配置。
8.1 配置文件位置与初始化
配置文件位于~/.config/videocaptioner/config.toml(macOS/Linux)。推荐先运行:
videocaptioner config init videocaptioner doctor非交互环境(Agent/CI)可这样初始化:
videocaptioner config init --non-interactive --profile dubbing \ --translator bing \ --timing balanced --audio-mode replaceconfig init还支持--print-template输出带注释的模板、--force覆盖已有配置,以及--llm-api-key、--asr、--dub-preset、--voice等完整初始化参数。
8.2 环境变量
| 变量 | 说明 |
|---|---|
OPENAI_API_KEY/OPENAI_BASE_URL/OPENAI_MODEL | LLM 密钥、地址、模型名 |
VIDEOCAPTIONER_DUB_PRESET | 配音预设 |
VIDEOCAPTIONER_TTS_API_KEY/VIDEOCAPTIONER_TTS_API_BASE/VIDEOCAPTIONER_TTS_MODEL/VIDEOCAPTIONER_TTS_VOICE | 配音 TTS 的密钥、地址、模型、默认音色 |
VIDEOCAPTIONER_TTS_WORKERS | 并发 TTS 请求数 |
VIDEOCAPTIONER_DUB_TIMING | 配音时间轴策略 |
VIDEOCAPTIONER_DUB_AUDIO_MODE | 原声处理方式 |
VIDEOCAPTIONER_TTS_MAX_SPEED | 配音最大变速倍数 |
VIDEOCAPTIONER_TTS_REWRITE_TOO_LONG | 是否启用 LLM 缩短过长台词 |
8.3 配置文件示例(TOML)
[llm] api_key = "sk-xxx" api_base = "https://api.openai.com/v1" model = "gpt-4o-mini" [transcribe] asr = "bijian" [subtitle] optimize = true split = true [translate] service = "bing" [dubbing] preset = "edge-cn-female" api_key = "" voice = "xiaoxiao" timing = "balanced" audio_mode = "replace" tts_workers = 5运行videocaptioner config show可查看全部配置项;config set <key> <value>支持点号路径直接写入,如videocaptioner config set llm.api_key <your-key>。
九、开发与测试
仓库使用uv管理 Python 依赖与虚拟环境,开发流程如下:
git clone https://github.com/WEIFENG2333/VideoCaptioner.git cd VideoCaptioner uv sync && uv run videocaptioner # 运行 GUI uv run videocaptioner --help # 运行 CLI uv run pyright # 类型检查 uv run pytest tests/test_cli/ -q # 运行测试测试覆盖非常全面:tests/test_asr覆盖必剪、剪映、Whisper API 等各 ASR 引擎及分块识别、块合并;tests/test_translate覆盖 Bing、Google、DeepLX、LLM 翻译器与缓存校验;tests/test_dubbing覆盖 Edge TTS 提供商、管线与预设;另有tests/test_split、tests/test_optimize、tests/test_subtitle、tests/test_tts、tests/test_thread等分别验证断句、优化、ASS 渲染、TTS 与多线程流水线。测试夹具(样例音频与字幕)位于 tests/fixtures,可用于快速验证各命令行为。
十、许可证
项目以 GPL-3.0 协议开源,可自由查看源码、学习与二次开发。
【免费下载链接】VideoCaptioner🎬 卡卡字幕助手 | VideoCaptioner - 基于 LLM 的智能字幕助手 - 视频字幕生成、断句、校正、字幕翻译全流程处理!- A powered tool for easy and efficient video subtitling.项目地址: https://gitcode.com/gh_mirrors/vi/VideoCaptioner
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考