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-compose 启动:
# 启动 CPU 节点(适合绝大多数无显卡的家用 NAS 或服务器)
docker-compose up -d echosrt-cpu
# 或者:启动 GPU 节点(需在宿主机安装 NVIDIA Container Toolkit 及驱动)
docker-compose up -d echosrt-gpu使用 docker run 命令启动预编译镜像:
# 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# 构建 CPU 镜像
docker build -t echosrt:cpu-local -f Dockerfile .
# 构建 GPU 镜像
docker build -t echosrt:gpu-local -f Dockerfile.gpu .
#构建完成后,将上述 `docker run` 命令中的镜像名称替换为构建的镜像名后运行# 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)
- 浏览器打开
http://127.0.0.1:8000或http://[远程IP]:8000进入工作台 - 访问
/docs查看 API 接口文档。。
- 在 [任务工作区] 拖拽上传视频或音频文件,系统支持批量排队上传,音频文件将自动经过 FFmpeg 进行标准化 16kHz 单声道重采样。
- 勾选任务并点击“执行全量工作流”,后端会在后台自动串行执行提音、识别、翻译。
- 本地模式:对于含有大量环境噪音的视频,建议在「高级设置 -> 阈值过滤」中开启 VAD 智能静音过滤,减少模型的“幻觉”复读并提升推理速度。
- 云端模式:长音频切片上传过程全自动完成,如果使用非官方的第三方代理接口,请注意调整大文件网络超时时间。
- 填入 API Base URL 和 API Key。
- 自定义 Prompt 强制大模型输出特定风格(例如语气、设定、特定角色人名映射等)。
├── 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),容器将会自动对齐挂载目录的读写权限。
- 分流代理控制:云端识别API和LLM 翻译API可独立选择是否使用全局代理。(v1.0.0 实装)
- API 多方案管理系统:支持预设多套 API 配置及快速切换。(v1.1.0 实装)
- 媒体库扫描与状态自愈:支持一次性全量扫描并根据磁盘状态自愈。(v1.1.0 实装)
- 下载与资产管理标准化:统一了全局带进度条的下载交互逻辑。(v1.1.0 实装)
- API 自动轮询与故障自愈:在遇到可恢复错误(如 HTTP 429/401)时,自动切换方案池中的下一个可用方案,并支持断点接管。
- LLM 翻译断点续传:翻译模块增加“断点续传/缓存”机制,避免长视频翻译意外中断后从头开始。
- 任务插队机制:后端队列基于
PriorityQueue重构,允许紧急任务无视先来后到,直接插入队列最前端。 - 全局队列进度透明化:“流水线看板”中应直接显示具体的进度百分比与子状态(如“正在提音 45%”)。
- 智能静音切片 (VAD 切分):解决超长音频一刀切断导致时间轴断裂与薛定谔“幻觉”的问题,支持静音区安全切片。
- 模型适用语言标注:在模型下拉列表中,增加 Whisper 模型的适用识别语言标注。
- 空间管理优化:提供“清理中间产物”选项,并在面板显示任务占用的磁盘空间大小。
- WebSocket 断线重连:加入断线自动重连机制,并结合长轮询作为兜底。
- 模型下载进度显示优化:优化后台拉取巨型模型时的数据量和进度条动态显示体验。
- 合法使用:本项目仅供技术研究、个人视频剪辑与字幕制作辅助使用。
- 接口规范:请用户自行准备合规的 LLM API 及云端识别 API,确保使用不违反当地法律法规及服务商的使用条款。
- 开源许可:本项目基于 MIT 协议开源,完全免费,由第三方模型引起的任何输出内容问题概不负责。
