VideoCaptioner 全流程视频字幕处理实战指南:语音识别、字幕优化、翻译与配音合成一站式搞定
2026/9/21 19:29:44 网站建设 项目流程

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构建了guitranscribesubtitledubsynthesizeprocessdownloadstyleconfigdoctor共十个子命令。运行videocaptioner <命令> --help可查看每个命令的完整参数。

3.1 transcribe — 语音转字幕

将音视频文件转为字幕文件,支持 mp3/wav/mp4/mkv 等格式,视频会自动提取音频:

videocaptioner transcribe video.mp4 --asr bijian

主要参数:

选项说明
--asrASR 引擎:bijian(默认,免费)、jianying(免费)、whisper-apiwhisper-cpp。bijian/jianying 仅支持中英文,其他语言请用 whisper-api 或 whisper-cpp
--language CODE源语言 ISO 639-1 代码,如zhenja,或auto(默认,自动检测)
--word-timestamps输出词级时间戳(配合字幕断句使用)
--whisper-api-key/--whisper-api-baseWhisper API 密钥与地址(仅--asr whisper-api
--whisper-modelWhisper 模型名(whisper-api 默认whisper-1,whisper-cpp 默认large-v2
-o PATH输出文件或目录路径
--format输出格式:srt(默认)、asstxtjson

从源码看,除上述公开参数外,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 — 字幕优化与翻译

对字幕文件进行最多三步处理:

  1. 断句(Split)— 按语义边界重新分割字幕(LLM);
  2. 优化(Optimize)— 修正 ASR 识别错误、标点与格式(LLM);
  3. 翻译(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-Hansenjakofrde
--no-optimize/--no-translate/--no-split分别跳过优化、翻译、断句
--reflect反思式翻译(仅 LLM,质量更高但更慢)
--layout双语布局:target-abovesource-abovetarget-onlysource-only
--prompt TEXT自定义提示词(辅助 LLM 优化/翻译)
--api-key/--api-base/--modelLLM 密钥、接口地址、模型名(也可用环境变量)
--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-modesoft(默认,嵌入可选字幕轨道)或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-femalegemini-en-friendlyedge-cn-female
--tts-api-keyTTS API key。SiliconFlow/Gemini 需要;Edge TTS 不需要
--voice默认音色。SiliconFlow 可用annaalexbenjamin;Gemini 使用KoreAchird等;Edge 可用xiaoxiaoyunxi或完整 voice ID
--speak auto/first/second双语字幕时选择朗读第一行还是第二行
--speaker-voice NAME=VOICE给字幕中的说话人指定音色,可重复
--speaker-clone NAME=AUDIO\|TEXTSiliconFlow 音色克隆参考音频与对应文本
--clone-audio/--clone-text给默认说话人使用 SiliconFlow 音色克隆;Gemini/Edge 不支持
--timing balanced/strict/natural/none时间轴策略:默认balancedstrict更贴字幕;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 则将xiaoxiaoyunxi等别名映射到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 支持的所有平台;
  • stylevideocaptioner style列出全部样式预设及其配置参数(ASS 与圆角背景两种模式);
  • config— 配置管理,子命令包括showsetgetpathinitedit(详见下文"配置管理");
  • 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_keytranscribe.asrdubbing.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 replace

config init还支持--print-template输出带注释的模板、--force覆盖已有配置,以及--llm-api-key--asr--dub-preset--voice等完整初始化参数。

8.2 环境变量

变量说明
OPENAI_API_KEY/OPENAI_BASE_URL/OPENAI_MODELLLM 密钥、地址、模型名
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_splittests/test_optimizetests/test_subtitletests/test_ttstests/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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询