https://github.com/siveci/echosrt
本地 AI 字幕工作站。集成 faster-whisper 语音识别与 LLM 智能翻译,提供一站式 WebUI 自动化工作流,支持 GPU 加速。
https://github.com/siveci/echosrt
auto-subtitle dual-subtitles faster-whisper gui java javascript llm-translation openai-whisper python subtitle-generator transcription translation whisper
Last synced: about 2 months ago
JSON representation
本地 AI 字幕工作站。集成 faster-whisper 语音识别与 LLM 智能翻译,提供一站式 WebUI 自动化工作流,支持 GPU 加速。
- Host: GitHub
- URL: https://github.com/siveci/echosrt
- Owner: SiVeci
- Created: 2026-04-25T17:04:09.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-02T17:42:09.000Z (about 2 months ago)
- Last Synced: 2026-05-03T00:40:34.296Z (about 2 months ago)
- Topics: auto-subtitle, dual-subtitles, faster-whisper, gui, java, javascript, llm-translation, openai-whisper, python, subtitle-generator, transcription, translation, whisper
- Language: JavaScript
- Homepage:
- Size: 126 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
EchoSRT 字幕工作台
---
## 🌟 项目简介
**EchoSRT** 是一个音视频字幕自动化提取与翻译工具。提供WebUI,支持本地 GPU/CPU 推理以及云端 API 处理,提供一站式、全自动流水线解决方案。
## ✨ 核心特性
- **双引擎语音识别 (ASR)**:
- **本地引擎**:内置 `faster-whisper`,自动探测 NVIDIA CUDA 硬件加速或回退 CPU 模式,支持 VAD 静音过滤、Beam Size 等高阶参数。
- **云端引擎**:支持 OpenAI 格式的语音 API,针对超大文件实现了突破 25MB 限制的物理切片与时间戳重排机制。
- **大语言模型智能翻译 (LLM)**:基于并发信号量 (`asyncio.Semaphore`) 实现字幕分块异步翻译。支持 DeepSeek、ChatGPT 等任意兼容 OpenAI 接口的模型,结合上下文自动润色,生成“熟肉”字幕。
- **自动化非阻塞流水线**:后端基于 FastAPI + `asyncio.Queue` 实现多任务调度,支持批量下发处理。
- **可视化 Web 工作台**:Vue 3 前端,提供实时 WebSocket 状态同步、滚动日志输出与看板式资产管理。
- **强大的分流代理机制**:支持按模块(模型下载 / 云端 ASR / LLM 翻译)独立接管 HTTP/SOCKS5 网络代理。
- **多平台 Docker 部署**:提供 CPU 和 GPU 独立镜像,支持快捷部署。
---
## 🚀 快速部署
### 方案一:Docker 部署 (推荐)
#### 1. 使用 Docker Compose 启动 (最简单)
已提供云端预编译镜像,在项目根目录下直接使用 `docker-compose` 启动:
```bash
# 启动 CPU 节点(适合绝大多数无显卡的家用 NAS 或服务器)
docker-compose up -d echosrt-cpu
# 或者:启动 GPU 节点(需在宿主机安装 NVIDIA Container Toolkit 及驱动)
docker-compose up -d echosrt-gpu
```
#### 2. 使用 Docker CLI 手动启动
使用 `docker run` 命令启动预编译镜像:
```bash
# CPU 版本
docker run -d --name echosrt-cpu \
-p 8000:8000 \
-v $(pwd)/workspace:/app/workspace \
-v $(pwd)/models:/app/models \
ghcr.io/siveci/echosrt:cpu-latest
# GPU 版本 (需增加 --gpus all 参数)
docker run -d --name echosrt-gpu \
--gpus all \
-p 8000:8000 \
-v $(pwd)/workspace:/app/workspace \
-v $(pwd)/models:/app/models \
ghcr.io/siveci/echosrt:gpu-latest
```
#### 3. 手动构建镜像 (可选)
```bash
# 构建 CPU 镜像
docker build -t echosrt:cpu-local -f Dockerfile .
# 构建 GPU 镜像
docker build -t echosrt:gpu-local -f Dockerfile.gpu .
#构建完成后,将上述 `docker run` 命令中的镜像名称替换为构建的镜像名后运行
```
### 方案二:本地 Python 运行
```bash
# 1. 安装 FFmpeg
# Windows: 下载 FFmpeg 并在项目根目录创建 bin/ffmpeg/bin/ 放入 ffmpeg.exe
# Linux: sudo apt install ffmpeg
# 2. 安装 Python 依赖
pip install -r requirements.txt
# 3. 启动后台服务与 WebUI
python app.py
```
*(注:命令行交互,运行 `python main.py`)*
---
## 🛠️ 使用指南
### 1. 访问WebUI工作台
- 浏览器打开`http://127.0.0.1:8000`或`http://[远程IP]:8000`进入工作台
- 访问 `/docs` 查看 API 接口文档。。
### 2. 工作区与流水线
- 在 **[任务工作区]** 拖拽上传视频或音频文件,系统支持批量排队上传,音频文件将自动经过 FFmpeg 进行标准化 16kHz 单声道重采样。
- 勾选任务并点击“执行全量工作流”,后端会在后台自动串行执行提音、识别、翻译。
### 3. ASR 识别调优
- **本地模式**:对于含有大量环境噪音的视频,建议在「高级设置 -> 阈值过滤」中开启 **VAD 智能静音过滤**,减少模型的“幻觉”复读并提升推理速度。
- **云端模式**:长音频切片上传过程全自动完成,如果使用非官方的第三方代理接口,请注意调整大文件网络超时时间。
### 4. LLM 翻译设置
- 填入 API Base URL 和 API Key。
- 自定义 **Prompt** 强制大模型输出特定风格(例如语气、设定、特定角色人名映射等)。
---
## 📁 项目结构 (Monorepo)
```text
├── api/ # FastAPI 路由、服务逻辑与任务 Worker 车间
│ ├── routers/ # Web API 接口
│ ├── services/ # 配置层与文件流操作
│ └── workers/ # 异步队列消费进程
├── core/ # 底层算法库
├── frontend/ # 前端代码与静态资源
├── config/ # 配置文件目录
├── models/ # Faster-Whisper 离线模型文件
├── workspace/ # 音视频及字幕任务产物存储区
├── app.py # WebUI & API 后端启动入口
├── main.py # CLI 命令行交互入口
├── docker-compose.yml
└── Dockerfile
```
---
## ⚙️ 系统要求
| 维度 | 要求 |
| :--- | :--- |
| **操作系统** | Windows 10+ / Linux |
| **Docker** | 支持 linux/amd64 (GPU 版需具备 NVIDIA Runtime) |
| **Python** | 3.10 - 3.12(推荐 3.12.x) |
| **硬件(推荐)** | 至少 8GB 内存;使用本地 GPU 引擎推荐至少 6GB+ 显存的 NVIDIA 显卡 |
> **💡 Docker 权限说明**:如果在 NAS (如群晖、Unraid 等) 上部署遇到读写权限的问题,增加环境变量 `-e PUID=1000` 和 `-e PGID=1000` (替换为实际的 UID/GID),容器将会自动对齐挂载目录的读写权限。
## TODO
- [x] **分流代理控制**:云端识别API和LLM 翻译API可独立选择是否使用全局代理。(v1.0.0 实装)
- [x] **API 多方案管理系统**:支持预设多套 API 配置及快速切换。(v1.1.0 实装)
- [x] **媒体库扫描与状态自愈**:支持一次性全量扫描并根据磁盘状态自愈。(v1.1.0 实装)
- [x] **下载与资产管理标准化**:统一了全局带进度条的下载交互逻辑。(v1.1.0 实装)
- [ ] **API 自动轮询与故障自愈**:在遇到可恢复错误(如 HTTP 429/401)时,自动切换方案池中的下一个可用方案,并支持断点接管。
- [ ] **LLM 翻译断点续传**:翻译模块增加“断点续传/缓存”机制,避免长视频翻译意外中断后从头开始。
- [ ] **任务插队机制**:后端队列基于 `PriorityQueue` 重构,允许紧急任务无视先来后到,直接插入队列最前端。
- [ ] **全局队列进度透明化**:“流水线看板”中应直接显示具体的进度百分比与子状态(如“正在提音 45%”)。
- [ ] **智能静音切片 (VAD 切分)**:解决超长音频一刀切断导致时间轴断裂与薛定谔“幻觉”的问题,支持静音区安全切片。
- [ ] **模型适用语言标注**:在模型下拉列表中,增加 Whisper 模型的适用识别语言标注。
- [ ] **空间管理优化**:提供“清理中间产物”选项,并在面板显示任务占用的磁盘空间大小。
- [ ] **WebSocket 断线重连**:加入断线自动重连机制,并结合长轮询作为兜底。
- [ ] **模型下载进度显示优化**:优化后台拉取巨型模型时的数据量和进度条动态显示体验。
---
## ⚠️ 免责声明
1. **合法使用**:本项目仅供技术研究、个人视频剪辑与字幕制作辅助使用。
2. **接口规范**:请用户自行准备合规的 LLM API 及云端识别 API,确保使用不违反当地法律法规及服务商的使用条款。
3. **开源许可**:本项目基于 MIT 协议开源,完全免费,由第三方模型引起的任何输出内容问题概不负责。