Shotcut AI 字幕翻译完整指南:免费、本地、把口播视频变成多语言字幕
【免费下载链接】shotcutcross-platform (Qt), open-source (GPLv3) video editor项目地址: https://gitcode.com/gh_mirrors/sh/shotcut
Shotcut 内置的 AI 字幕翻译功能,能让你不离开剪辑窗口,就把时间线上的口播音频转成带时间码的字幕轨道,并用 Whisper 引擎一步翻译成英文字幕。整套流程本地运行、不上传音频,默认模型只需约 57 MB 硬盘空间,适合做课程、访谈、海外发布的视频创作者。

它能替你省掉什么
先说清楚这套功能覆盖的环节,方便你判断自己用不用得上:
- 🎙️音频转文字:在 SubtitlesDock 里点 "Speech to Text...",勾选含人声的轨道即可转录,对话框内置 101 种语言选项
- 🌍一键翻译:勾选 "Translate to English" 后,Whisper 会在转录的同时输出英文字幕(源码里对应
--translate参数,见 WhisperJob) - 🗂️多轨道管理:每跑一轮就生成一条独立字幕轨道,原声轨道、英文轨道并存;需要更多语种时,用 SRT 导出/导入再挂一条轨道
- 💸成本:引擎是 whisper.cpp,模型免费且本地推理,没有按字计费的 API
它适合的场景:一期视频要同时出「原声 + 英文」两版字幕,或先出英文底稿再交给译员处理。不适合的场景:指望它把中文直接翻成法语——Whisper 的翻译方向固定是英文,其他目标语种要走后文的 SRT 换轨流程。
数据流:背后实际跑了什么
用一句话描述整条链路:你勾选的轨道 → 混缩成 16 kHz 单声道临时 WAV → whisper-cli 转录(可选翻译)→ 生成 SRT → 自动导入为新字幕轨道。
拆开看就是两个后台任务(在 SubtitlesDock::speechToText 中编排):
- 第一个任务 "Extracting Audio":把选中轨道之外的内容静音,渲染出一个 16 kHz、单声道、无视频的临时 WAV
- 第二个任务 "Speech to Text":调用 whisper-cli,带上
--language、--max-len、--split-on-word,勾选翻译时追加--translate;完成后由 PostJobAction 把 SRT 自动挂到时间线上
进度、日志、失败重试都在任务面板里能看到,不用盯着终端。
上手操作:从配置引擎到收轨道
第 1 步:让对话框认出 whisper-cli 和模型
打开 "Speech to Text..." 对话框后,如果底部 Configuration 区显示红色路径,说明还差配置(逻辑在 TranscribeAudioDialog):
- 可执行文件:默认在 Shotcut 程序目录找
whisper-cli(Windows 是whisper-cli.exe),找不到就点浏览按钮手动指定 - 模型:对话框内置一张模型清单(定义在 whispermodel.qml),点一行就会确认下载并校验 sha256,模型缓存在
shotcut/whisper_models目录里,装一次永久用 - 两项都绿了,"OK" 才会亮起——这是它防止你白等半小时的设计
第 2 步:四个参数决定输出质量
对话框主体只有几个字段,但每个都影响结果:
| 参数 | 取值范围 | 建议 |
|---|---|---|
| Name(新轨道名) | 任意文本 | 直接写 "English",省去后面改名 |
| Language(源语言) | 101 选 1,默认跟随系统语言 | 明确选源语言比自动猜更稳 |
| Translate to English | 勾选 | 要翻译就勾,纯转录就空着 |
| Maximum line length | 10–100 字符,默认 42 | 竖屏短视频可调到 30–40,横屏 50–60 |
| Include non-spoken sounds | 勾选 | 想保留「(笑声)」「(掌声)」这类标注就勾 |
| Use GPU | 默认开 | 没有独显或跑挂过就关掉,程序会自动退避重试 |
下方 "Tracks with speech" 列表决定哪些轨道参与:只勾含人声的轨道,其余轨道在临时渲染里会被静音,既省时间也避免配乐干扰识别。
第 3 步:看进度、校字幕
点 "OK" 后任务面板里会依次出现 "Extracting Audio" 和 "Speech to Text" 两条任务,Whisper 按--print-progress实时回报百分比。完成后 SRT 已经挂成一条新字幕轨道,回到 SubtitlesDock 逐条看:
- 点击某条字幕,下面会出现前后两条的预览框,方便连着读上下文
- 时间码不准时,用 "Set Subtitle End"(Shift+T)或 "Move Subtitles"(Shift+Y)快速挪
- 想直接看原始 SRT,右键任务里的 SRT 即可查看
多语言轨道怎么组织
拿到英文轨道后,「本地化」的落地方式是把每条轨道当成一种语言来管:
- 每轮转录在对话框的 Name 字段起好轨道名(如 "EN"、"ZH"),同名轨道会被拒绝,防止覆盖
- SubtitlesDock 支持 SRT 导入/导出:把英文轨道导出 → 外部翻成目标语种 → 导回来挂成新轨道,多语种并存
- 最终要烧录进画面时,用 "Burn In Subtitles on Output" 在时间线输出上加字幕滤镜;想当花字用,则 "Generate Text on Timeline" 会生成一条纯文本轨道
- 轨道的增删改由 SubtitleTrackDialog 统一管理
提速与避坑速查
选模型:体积、精度、速度怎么权衡
模型清单里每档都有全精度和 q5 量化两个版本,量化版体积约为全精度 1/3,日常口播精度损失很小:
| 档位 | 全精度 | 量化版 | 适用 |
|---|---|---|---|
| tiny | 约 74 MB | 约 31 MB | 试跑、短音频 |
| base(默认推荐) | 约 141 MB | 约 57 MB | 清晰口播,首选 |
| small | 约 465 MB | 约 181 MB | 长视频、口音较重 |
| medium | 约 1.4 GB | 约 514 MB | 嘈杂环境 |
| large-v3 | 约 2.9 GB | 约 1.0 GB | 极致精度、长内容 |
两个加速点:GPU 推理默认开启(见 settings 中 whisperUseGpu),失败一次会自动带--no-gpu重试而不是直接报错;线程数按 CPU 核数 -1 自动分配,32 位进程限 1 线程防内存爆。
字幕对不齐、翻译不理想怎么办
- 串音/漏识别:多半是只勾了「人声轨道」还不够——先压低背景音乐再转录,比换大模型更有效
- 时间码偏移:用 Shift+T / Shift+Y 逐条微调;整轨系统性偏移时检查源音频采样率与项目设置是否一致
- 中文乱码:是字体问题,在字幕渲染设置里换成支持中文的字体(如思源黑体)
- 只翻出英文:这是设计如此,Whisper 翻译方向固定为英文;其他语种走「导出 SRT → 翻译 → 导入新轨道」的循环
今天就做的一步
打开一个有口播的素材 → 视图里打开 Subtitles 面板 → "Speech to Text..." → 保持默认 base 量化模型直接 "OK",十分钟不到你会收获一条带时间码的字幕轨道。
接下来可以往三个方向延伸:把 "Text to Speech..." 配上 voices/ 目录里的本地语音包,给纯文字字幕配音;用 burn-in 滤镜把多轨字幕烧进成片;或者研究 mltcontroller 里轨道与生产者的交互,为团队搭一套自动化的字幕产线。
【免费下载链接】shotcutcross-platform (Qt), open-source (GPLv3) video editor项目地址: https://gitcode.com/gh_mirrors/sh/shotcut
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考