Skip to content

Latest commit

 

History

613 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jav-trans

jav-trans 是一个面向 Windows 和 NVIDIA 显卡的本地字幕生成工具。选择视频后,它会自动完成日语语音识别、字幕时间轴、可选翻译和质量检查,输出日文、译文或中日双语 SRT。

视频、音频、语音识别和时间轴始终在本机处理。只有选择 API 翻译时,字幕文本才会发送到你配置的服务;仅日文和本地翻译模式不会上传媒体或字幕。

网页控制台主界面

主要功能

  • 本地网页控制台:选择视频、调整设置、查看进度并打开结果。
  • 日语识别与精细时间轴:使用 Qwen3-ASR 1.7B 和 CTC 对齐生成字幕。
  • 三种输出:仅日文、仅译文、中日双语。
  • 两种翻译方式:OpenAI 兼容 API,或本地 Hy-MT2-7B Q4。
  • 质量报告:标出时间轴、字幕布局和翻译中的可疑项,方便按时间码复查。
  • 断点与缓存:失败后可以复用已有识别结果,不必总是从头开始。

运行要求

  • Windows 10/11。
  • NVIDIA 独立显卡;8GB 及以上显存推荐,当前 ASR 模型要求至少 6144MiB 物理显存。
  • Windows 发布包已包含 FFmpeg Shared,无需另行下载或安装。首次启动需要联网安装 Python 依赖;ASR 模型约 3.9GB,本地翻译模型约 4.6GB。
  • 将发布包解压到普通可写目录,并预留至少 15GB 空间。

正式 ASR 不会静默回退到 CPU。CUDA 不可用、驱动过旧或显存不足时,任务会明确报错。

快速开始

  1. Releases 下载并解压 Windows 发布包。
  2. 双击 jav-trans.exe。首次启动会自动安装依赖;中断后重新运行即可继续。
  3. 在网页控制台中选择一个或多个视频。
  4. 选择字幕模式和翻译方式,按需填写 API Key 或本地模型设置。
  5. 点击“开始任务”,完成后从任务卡打开 SRT 和可选的质量报告。

发布包自带 FFmpeg Shared。普通用户无需单独配置 FFmpeg;只有从源码运行时才需要自行安装。

首次使用建议勾选“不翻译(仅日文字幕)”跑一个短视频,以确认 CUDA、模型下载和输出目录都正常。

选择处理模式

模式 是否发送字幕文本 适合场景
仅日文 最快验证环境,或只需要日文 SRT
本地翻译 隐私优先、零 API 成本的中文草稿
API 翻译 需要术语表、全片上下文和更稳定的成品质量

API 模式默认使用 OpenRouter。通常只需填写 API Key;如果改用其他服务,Base URL 与模型名必须配套:OpenRouter 使用 厂商/模型 形式,DeepSeek 官方 API 使用裸模型名。此外该服务必须提供 Responses 接口(/responses)——程序只使用这一个协议面,只支持 Chat Completions 的旧接口和中转用不了。

本地翻译固定使用 Hy-MT2-7B-Q4_K_M.gguf,首次使用时自动下载。先安装 llama.cpp:

winget install -e --id ggml.llamacpp

然后在网页控制台选择“本地 Hy-MT2”。本地后端逐句翻译,不使用 API 模式的术语表、角色参考和全片上下文;它更适合作为隐私优先的草稿方案。

NVIDIA 用户可从 llama.cpp 官方 Releases 下载 CUDA 版。先运行 nvidia-smi 查看驱动支持的 CUDA 版本,再选择不高于该版本的 Windows x64 压缩包:

  • CUDA 12:llama-b<版本号>-bin-win-cuda-12.x-x64.zip
  • CUDA 13:llama-b<版本号>-bin-win-cuda-13.x-x64.zip

文件名中的 build 号和 CUDA 小版本会随发布变化,请以 Releases 页面为准。如果同一项另列有匹配的 cudart-llama-bin-win-cuda-*.zip(CUDA DLLs),也一并下载并解压到同一目录。最后在网页设置中填写该目录里的 llama-server.exe 路径。

输出与隐私

  • SRT 和质量报告写入所选输出目录;仅日文模式会生成 <视频名>.ja.srt
  • models/ 保存已下载模型,tmp/ 保存任务状态、缓存和日志。
  • 成功任务会清理一次性临时文件,但保留模型与跨任务 ASR 缓存。
  • API 翻译只发送字幕文本,不发送视频或音频。具体数据处理规则仍取决于你选择的 API 服务。
  • 质量报告用于辅助人工复查,不保证每条识别或翻译都完全正确。

删除运行中的任务会先请求取消;任务进入“已取消”后再次删除,才会清理该任务的临时目录。

常见问题

程序窗口无法打开

在程序目录打开 PowerShell,运行:

.\jav-trans.exe --doctor

需要保留启动日志时使用 --keep-console;需要重装运行环境时使用 --reinstall

下载速度很慢

在网页控制台的“识别设置”中填写代理,或启动时传入代理:

.\jav-trans.exe --proxy http://127.0.0.1:7890

CUDA 或显存报错

先关闭其他占用显卡的程序并更新 NVIDIA 驱动。保持默认的 ASR_BATCH_SIZE=auto,程序会在 OOM 后自动降低批大小;当前没有更小的 ASR 模型可切换。

API 翻译失败

确认 API Key、Base URL 和模型名属于同一服务。OpenRouter 的模型名通常形如 deepseek/deepseek-v4-flash;DeepSeek 官方地址 https://api.deepseek.com 使用 deepseek-v4-flash。其他兼容服务请使用其文档给出的地址和模型名。

如果报错指向 /responses 路径不存在(404 或 Not Found),说明该服务只提供 Chat Completions 接口,无法使用;请改用支持 Responses 的服务,或改用本地翻译。

程序默认要求译文按 JSON Schema 返回(DeepSeek 官方地址除外,它只支持较宽松的 json_object)。如果服务商不支持严格 schema,返回结构错误或直接报错,可在 .env 中改用宽松约束:

LLM_STRUCTURED_OUTPUT=json_object

反过来,如果希望 OpenRouter 只把请求发给能真正强制执行 schema 的供应商,可以设 LLM_STRUCTURED_OUTPUT=json_schema;此时未声明 structured_outputs 的模型会返回 404。

如何反馈长任务问题

日志位于 tmp/log/<job_id>/。反馈时请附上 .run.log、对应 SRT 和质量报告,并先移除 API Key、视频路径等隐私信息。

从源码运行

源码运行还需要 Git、uv、符合 pyproject.toml 约束的 Python,以及 FFmpeg Shared。TorchCodec 依赖 FFmpeg 共享 DLL;Windows 上应确保 Shared 版位于 PATH,且不要让静态版排在它前面。

winget install --id Gyan.FFmpeg.Shared --exact

git clone https://github.com/jaykwok/jav-trans.git
cd jav-trans

uv venv
uv sync

$env:PYTHONIOENCODING="utf-8"
uv run --no-sync python launcher.py

浏览器默认打开 http://127.0.0.1:2233。端口被占用时会自动选择下一个可用端口,并在启动日志中显示实际地址。请使用 uv 安装项目依赖,不要用 pip install 逐个安装,以免误装 CPU 版 PyTorch。

更多文档

致谢:WhisperJAV 为本项目早期路线提供了重要参考。

About

Windows + NVIDIA 上本地运行的 JAV 字幕生成工具。Qwen3-ASR 转写,自训 CTC 对齐头产出真实字级时间轴;ASR 之前不做任何丢弃式判断,音频只切不筛,每一秒都进解码器。翻译走 OpenAI 兼容 API 或完全本地(llama.cpp + 内置 GGUF,全程不出网)。输出符合 Netflix 简中规范的日文 / 中文 / 中日双语 SRT。

Topics

Resources

Stars

20 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages