- 选择文件夹/单文件 → SenseVoice 转录 → LLM 修正 → 多路线翻译 → 双语 SRT - 路线:直译中文 / 英转中 / 仅转录 - 并发流水线:转录(可调) + LLM 并发(可调),降噪拆锁并发 - 断点续跑:.subtitle-work/ 中间产物,三阶段独立续跑 + 翻译段级续跑 - 去重:history 跟随视频文件夹,防重复任务保护 - 实时进度:SSE 推送 + 耗时显示 + 子任务状态 + 重新生成按钮 - 时间戳调优:VAD silence_schedule + noisereduce 降噪 + 完整性校验
64 lines
2.2 KiB
Markdown
64 lines
2.2 KiB
Markdown
# subtitle-studio 字幕生成系统
|
||
|
||
选择文件夹或单个视频 → 自动生成多路线双语字幕,实时查看进度。
|
||
|
||
## 快速开始
|
||
|
||
```powershell
|
||
# 方式一(推荐):后台启动,无窗口,日志写 logs/server.log
|
||
scripts\start_hidden.bat
|
||
|
||
# 方式二:前台启动(关窗口即停止)
|
||
scripts\start.bat
|
||
|
||
# 停止后台服务
|
||
scripts\stop.bat
|
||
```
|
||
|
||
浏览器打开 **http://127.0.0.1:8788**(start_hidden.bat 会自动打开)
|
||
|
||
## 功能
|
||
|
||
1. **选择视频**:浏览文件系统(支持盘符切换/上级目录),或直接输入路径;选文件夹批量处理
|
||
2. **选择路线**:
|
||
- 路线 A 直译中文:转录 → LLM 修正 → 日文直译中文 → `.ja.zh.srt` + `.zh.srt`
|
||
- 路线 B 英转中:转录 → LLM 修正 → 日→英→中 → `.r2.zh.en.srt` + `.r2.zh.srt`
|
||
- 仅转录:只做语音识别 → `_transcript.json`
|
||
3. **实时进度**:SSE 推送任务状态(等待/转录/修正/翻译/生成字幕/完成/失败)
|
||
4. **完成列表**:已生成字幕文件可直接下载,失败任务可一键重试
|
||
|
||
## 技术栈
|
||
|
||
| 组件 | 说明 |
|
||
|------|------|
|
||
| 前端 | 原生 HTML/JS,SSE 实时进度 |
|
||
| 后端 | FastAPI + uvicorn(:8788) |
|
||
| 转录 | SenseVoiceSmall + fsmn-vad(GPU,py312_cuda 环境) |
|
||
| 修正 | LLM 分块并发(4 worker) |
|
||
| 翻译 | DeepSeek V4 Flash 全文一次请求(1M 上下文,不指定 max_tokens) |
|
||
| LLM | OCG Router(192.168.1.246:19878,自动选 key) |
|
||
|
||
## 目录
|
||
|
||
```
|
||
subtitle-studio/
|
||
├── src/substudio/
|
||
│ ├── main.py # FastAPI 入口
|
||
│ ├── taskmanager.py # 任务队列 + 状态机 + SSE
|
||
│ ├── llm.py # OCG Router 客户端(流式兼容)
|
||
│ ├── config.py # 配置
|
||
│ └── pipeline/
|
||
│ ├── transcribe.py # SenseVoice 转录
|
||
│ ├── fix.py # 分块并发修正
|
||
│ ├── translate.py # 路线翻译
|
||
│ └── srt.py # SRT 生成
|
||
├── templates/index.html
|
||
├── static/app.js
|
||
├── output/ # 任务输出(含副本)
|
||
└── scripts/start.bat
|
||
```
|
||
|
||
## 架构文档
|
||
|
||
见 [ARCHITECTURE.md](ARCHITECTURE.md)
|