179 lines
6.3 KiB
Markdown
179 lines
6.3 KiB
Markdown
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="readme/screenshot-main.png">
|
||
<img src="readme/screenshot-main.png" alt="CrossSubtitle-AI 截图" width="100%">
|
||
</picture>
|
||
|
||
<div align="center">
|
||
|
||
# CrossSubtitle-AI
|
||
|
||
**AI 驱动的本地优先字幕工作台**
|
||
|
||
[](https://github.com/AndySkaura/crosssubtitle-ai/releases)
|
||
[](https://github.com/AndySkaura/crosssubtitle-ai/blob/main/LICENSE)
|
||
[](#)
|
||
|
||
[English](./README.en.md) · **简体中文**
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
## 简介
|
||
|
||
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 安装包) |
|
||
|
||
> 首次启动时需要下载 Whisper 模型(约 500MB),请确保网络通畅。
|
||
|
||
## 使用方式
|
||
|
||
### 快速开始
|
||
|
||
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/) — 轻量级桌面应用框架
|
||
- 所有贡献者和用户
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
由 <a href="https://kuraa.cc">kuraa</a> 制作
|
||
</div>
|