JavScribe 字幕服务
JavScribe 是 JavdBviewed 系列下的日语→中文字幕生成组件:ja→zh 一步翻译(ASR+翻译合一)、 .zh.srt 原位落位、下载目录监听、进度查询、远端只传音频处理。
JavScribe 仓库只含代码与配置,不内置任何模型权重。 需要什么模型、去哪下载、放到哪里, 见 部署指南。
它解决什么问题
影片(BT/PT 下载、网盘落地等)进库后通常没有中文字幕。JavScribe 把这条链路自动化:
下载落盘目录 (mkv/ts/mp4/...)
│ 目录监听(文件大小稳定才接手,避免半截下载)
▼
JavScribe 流水线
├─ 预检: 已有 <影片名>.zh.srt → 跳过
├─ [可选] JASNA 马赛克修复
├─ 字幕引擎: ChickenRice「海南鸡」Whisper (ja→zh 一步到位, CTranslate2, CUDA/CPU)
├─ 落位: <影片名>.zh.srt 写到影片同目录 → Emby/Jellyfin/Plex 扫描即用
├─ [可选] LLM 润色第二遍 (任意 OpenAI 兼容端点)
└─ [可选] Emby Refresh API 联动
│
▼
进度接口 /health /jobs (HTTP) + 远端处理: 只传音频(30~80MB),不传整片特性
- 一步 ja→zh:直接用「海南鸡」(TransWithAI ChickenRice)日转中专用模型 + 为这类素材调过的 VAD,不经过「通用 ASR + LLM」两遍
- 媒体库友好:输出固定
<影片名>.zh.srt(可配 ja/en/none),与影片同目录;Emby/Jellyfin/Plex 自动挂载,多分卷按各自基名匹配 - 下载目录监听:文件大小稳定检测(下载未完成不接手)、存量文件可一次追平、已生成字幕自动跳过
- 进度可见:进度精确到影片时间轴("已翻到 47:12 / 共 150:20"),HTTP 接口随时查询;批量一次加载模型
- 本地 / 服务器一套代码:一份配置两份
profiles(--profile local|server)——本地 GUI 拖拽批处理或watch常驻;服务器serve常驻 + 进度接口,Docker 一条命令起 - 远端处理:本地算力不够时,
jav-scribe upload 影片.mkv --remote http://<服务器>:8300→ 本地 ffmpeg 只抽 16kHz opus 音频(2.5h 影片约 30–80MB)上传 → 服务器跑完 → SRT 回传落到本地影片同目录 - 客户端工作台:浏览器看板看进度、页面生成字幕(浏览器本地提音轨、只把音轨发给服务)、批量文件夹扫描入队、页面上管理服务端设置项;同一产品两种形态(Docker Web / 桌面安装版),可挂多台服务端做自动均衡
角色与形态
服务端只负责模型与模型渠道的对接、处理客户端传过来的音轨;客户端负责用户侧的 扫描、音轨提取与上传。两个角色、三种形态:
| 角色 | 形态 | 跑在哪 | 端口 | 职责 |
|---|---|---|---|---|
| 服务端 | JavScribe serve(headless) | GPU 服务器 | 8300 | 模型推理、ASR 生成、音轨上传接收、任务队列/调度、进度/设置/扫描 API |
| 客户端 | 字幕工作台 · Docker(Web) | 任意一台内网机器(可与服务同机) | 8400 | 浏览器看板、生成字幕、扫描「客户端部署机」目录、下载 srt、管理服务设置 |
| 客户端 | JavScribe Client · 桌面安装版 | 用户电脑(exe / AppImage / deb) | —(内嵌服务) | 同一套界面;扫描与写回以本电脑为准,无需另开浏览器 |
要点:
- 客户端是同一个产品、两种形态:同一套前端代码(
client/单一来源)、同一版本号、 同一时间发布,样式与交互完全一致。Docker 形态适合「在部署机上开浏览器管理」, 安装版适合「本地双击即用、字幕写回本地磁盘」。 - 服务端无图形界面:所有可视化(看板、设置、更新提示)都落在客户端前端; 服务端的新版本提示同样显示在客户端的服务卡片上。
- 多台服务端可挂同一个客户端:「⚖ 自动均衡」把新任务实时分给在途任务最少的在线服务。
- 多个客户端可连同一台服务端:任务状态单一真源在服务端内存,每个客户端都是 「视图 + 操作代理」;他端客户端提交的任务以「他端」标记显示,可看进度、可做服务端操作 (暂停/重试/下载 srt),但字幕不会自动落回本机磁盘。
版本与发布
| 组件 | 版本 tag | 发布方式 |
|---|---|---|
| 服务端 | serve-vX.Y.Z | 独立演进;GitHub Release(exe/zip)+ GHCR 镜像 |
| 客户端(Web 形态) | web-vX.Y.Z | 与安装形态同号同 commit 发布;部署机本地构建镜像 |
| 客户端(安装形态) | client-vX.Y.Z | 与 Web 形态同号同 commit 发布;CI 出 exe/AppImage/deb |
前端更新检查同时比对客户端与服务端的 GitHub Release:客户端新版本提示与卡片角标、 服务端版本落后提示都显示在客户端前端(服务端本身没有界面可提示)。
与 JavdBviewed 的关系
- JavScribe 产出的
.zh.srt落在影片同目录,Emby 扫描后即可在看片端直接使用; 配置了emby段的服务会在每个任务完成后自动触发 Emby Refresh - 也可以完全脱离 JavdBviewed 独立使用(Jellyfin/Plex 或纯目录消费)
- 代码与许可:JavScribe 本体 MIT;仓库 github.com/JavdBviewed/JavScribe
下一步
- 第一台 GPU 服务器怎么部署 → 部署指南
- 客户端怎么用(登记服务 / 生成 / 扫描 / 设置 / 看板)→ 客户端
- 配置项全量清单(环境变量 / config.json / 服务设置白名单 / 客户端本机设置)→ 配置参考
- 常见问题(显存占用 / API Key / 路径不存在 / 字幕质量 / 多客户端…)→ 常见问题
- 接口清单与安全边界 → API 参考
