# CrossSubtitle-AI

基于 `Tauri v2 + Vue 3 + Pinia + Tailwind CSS` 的本地优先字幕工作台，覆盖以下 MVP 链路：

- 导入音视频文件并创建任务队列
- 使用 `ffmpeg` 抽取 16kHz 单声道 WAV
- 执行基础 VAD 切分并生成语音片段时间轴
- 进入 Whisper 转录/翻译环节
- 可选接入 OpenAI-compatible 接口生成中文译文
- 实时推送任务进度和字幕片段
- 导出 `SRT / VTT / ASS`

## 目录结构

- `src/`: Vue 前端界面、Pinia 状态、字幕编辑器
- `src-tauri/src/audio.rs`: 音频抽取与 WAV 读取
- `src-tauri/src/vad.rs`: VAD API 与基础能量检测实现
- `src-tauri/src/whisper.rs`: Whisper 接口层
- `src-tauri/src/translate.rs`: OpenAI-compatible 滑动窗口翻译
- `src-tauri/src/subtitle.rs`: SRT / VTT / ASS 导出
- `src-tauri/src/task.rs`: 任务编排与事件广播

## 当前实现说明

- 当前仓库已补齐完整工程骨架与核心数据流。
- 前端 `npm run build` 已通过，Rust 侧 `cargo check` 已通过。
- `whisper.rs` 已接入真实 `whisper-rs`，会基于 VAD 片段逐段转录；目标语言为英文时启用 Whisper 原生 `translate`。
- `vad.rs` 已接入 `ort` 版 Silero VAD 推理入口；当模型缺失或推理失败时，会自动回退到能量检测，保证链路不断。

## 运行前准备

1. 安装 Rust 工具链。
2. 安装 `cmake`，`whisper-rs-sys` 在首次编译时需要它。
3. 安装 `ffmpeg`，并确保可通过命令行直接调用。
4. 安装前端依赖：

```bash
npm install
```

5. 如需中文翻译，配置环境变量：

```bash
export OPENAI_API_BASE=https://your-openai-compatible-endpoint/v1
export OPENAI_API_KEY=your_api_key
export OPENAI_MODEL=GLM-4-Flash-250414
```

6. 若要真正启用 ONNX Runtime 推理，请确保本机存在可被 `ort` 动态加载的 ONNX Runtime 库，或按你的部署方式提供运行库。

7. 启动桌面应用：

```bash
npm run dev
```

## 下一步建议

- 为 `src-tauri/src/vad.rs` 补模型输入名自适应和更多异常日志。
- 加入文件选择器、任务恢复、批量导出与测试用例。
- 为 `whisper-rs` 增加硬件加速参数与模型配置面板。
