# CrossSubtitle-AI
**AI 驱动的本地优先字幕工作台**
[](https://github.com/AndySkaura/crosssubtitle-ai/releases)
[](https://github.com/AndySkaura/crosssubtitle-ai/blob/main/LICENSE)
[](#)
[English](./README.en.md) · **简体中文**
---
## 简介
CrossSubtitle-AI 是一款**本地优先**的音视频字幕处理工具。它利用 [Whisper](https://github.com/ggerganov/whisper.cpp) 进行语音识别,结合 [Silero VAD](https://github.com/snakers4/silero-vad) 进行语音活动检测,并支持接入 OpenAI 兼容接口进行智能翻译,帮助你将音视频文件快速转录并翻译为双语字幕。
整个过程在本地完成语音识别,无需上传音视频文件到任何服务器,保护你的数据隐私。
## 功能特性
- **语音识别** — 基于 Whisper 的高精度语音转文字,支持中文、英文、日文、韩文、法文等 17 种源语言
- **语音活动检测** — Silero VAD 精准切分语音片段,自动过滤静音区域
- **智能翻译** — 接入 OpenAI 兼容接口(如智谱 GLM、DeepSeek、ChatGPT 等),将原文翻译为目标语言
- **音频抽取** — 内置 FFmpeg 自动抽取音频并转换为 16kHz 单声道 WAV
- **多种导出格式** — 支持 SRT、VTT、ASS 三种字幕格式导出
- **双语导出** — 支持原文 + 译文并排显示的双语字幕导出
- **字幕编辑器** — 内置字幕编辑器,支持逐条修改原文和译文
- **拖拽导入** — 支持拖拽文件快速创建任务
- **任务队列** — 批量处理多个音视频文件,实时查看处理进度
- **双语界面** — 内置中文 / 英文界面切换
- **本地优先** — 语音识别完全在本地运行,无需上传数据
## 使用流程
1. **选择模式** — 选择「原文」仅做语音识别,或「翻译」模式在识别后自动翻译
2. **添加任务** — 点击「添加任务」按钮或直接拖拽音视频文件到窗口
3. **等待处理** — 任务将依次经历:音频抽取 → VAD 切分 → 语音识别 →(可选)翻译
4. **编辑校对** — 在字幕编辑器中逐条查看、修改识别结果和译文
5. **导出字幕** — 导出为 SRT、VTT 或 ASS 格式
## 截图
| 示例 | 字幕编辑器 |
|:---:|:---:|
|  |  |
## 安装
从 [GitHub Releases](https://github.com/AndySkaura/crosssubtitle-ai/releases) 下载对应平台的安装包:
| 平台 | 安装包 |
|:---:|:---:|
| macOS (Apple Silicon) | `.dmg` |
| Windows | `.exe` (NSIS 安装包) |
## 使用方式
### 快速开始
1. 打开应用,在顶部工具栏选择工作模式:
- **原文** — 仅进行语音识别,输出原文字幕
- **翻译** — 识别后调用 LLM 接口翻译为指定语言
2. 点击「添加任务」或拖拽文件到窗口
3. 等待任务处理完成
4. 在右侧字幕编辑器中查看和修改结果
5. 点击「导出」选择格式保存字幕文件
### 翻译模式配置
使用翻译功能前需要配置 LLM API:
- 在「高级设置」中填入 LLM API Base、API Key 和 Model
- 支持任何兼容 OpenAI API 的服务,如:
- **智谱 GLM** — 推荐免费使用 GLM-4.7-Flash
- **DeepSeek**
- **ChatGPT**
- **自建服务** — 如 Ollama、vLLM 等
### 高级设置
- **Whisper 模型路径** — 指定本地 ggml 模型文件路径
- **VAD 模型路径** — 指定本地 Silero VAD ONNX 模型路径
- **批大小 (Batch Size)** — 每批翻译的片段数 (10-15)
- **上下文 (Context Size)** — 翻译时参考的上下文片段数 (0-5)
## 开发
### 环境要求
- [Rust](https://www.rust-lang.org/) 工具链
- [Node.js](https://nodejs.org/) (18+)
- [FFmpeg](https://ffmpeg.org/)(需在命令行中可用)
- [CMake](https://cmake.org/)(编译 whisper-rs 需要)
### 本地开发
```bash
# 克隆仓库
git clone https://github.com/AndySkaura/crosssubtitle-ai.git
cd crosssubtitle-ai
# 安装前端依赖
npm install
# 启动开发模式
npm run tauri-dev
```
### 构建
```bash
# macOS DMG 构建
npm run tauri-build-dmg
# Windows NSIS 构建
npm run tauri-build-windows
```
## 技术栈
| 层级 | 技术 |
|:---|:---|
| 桌面框架 | [Tauri v2](https://v2.tauri.app/) |
| 前端框架 | [Vue 3](https://vuejs.org/) + [TypeScript](https://www.typescriptlang.org/) |
| 状态管理 | [Pinia](https://pinia.vuejs.org/) |
| 样式 | [Tailwind CSS](https://tailwindcss.com/) |
| 国际化 | [vue-i18n](https://vue-i18n.intlify.dev/) |
| 语音识别 | [whisper-rs](https://github.com/tazz4843/whisper-rs) (Whisper) |
| 语音检测 | [ort](https://github.com/pykeio/ort) (Silero VAD ONNX) |
| 音频处理 | FFmpeg |
| LLM 翻译 | OpenAI-compatible API |
## 项目结构
```
src/ Vue 前端界面
components/ 组件 (TaskQueue, SubtitleEditor)
stores/ Pinia 状态管理
locales/ 国际化文件 (zh-CN, en)
lib/ 类型定义
src-tauri/ Rust 后端
src/
audio.rs 音频抽取与 WAV 读取
vad.rs Silero VAD 语音活动检测
whisper.rs Whisper 语音识别接口
translate.rs OpenAI 兼容翻译接口
subtitle.rs SRT / VTT / ASS 导出
task.rs 任务编排与事件广播
state.rs 应用状态
```
## 开源协议
本项目基于 [MIT](./LICENSE) 协议开源。
## 致谢
- [whisper.cpp](https://github.com/ggerganov/whisper.cpp) — 高性能 Whisper 推理实现
- [Silero VAD](https://github.com/snakers4/silero-vad) — 高精度语音活动检测
- [Tauri](https://tauri.app/) — 轻量级桌面应用框架
- 所有贡献者和用户
---