cat-shark a032855210 feat: 字幕质量提升——长时寒暄幻觉清洗 + 专名/成人隐语不直译
两部分同属字幕质量优化,共用 llm.py 翻译链路:

1) 长时寒暄幻觉词清洗(nodes/subtitle_cleanup.py)
   对展示时长超过阈值(默认 15s,实测 30s 幻觉占位 vs 2s 真实词的分界)
   且文本含收尾/开场寒暄(晚安、感谢观看等)的字幕,文本替换为 '-',
   由后续过滤流程移除;短时寒暄(如剧情中真实互道晚安)保留不误删。
    写文件前调用 。

2) 专名/隐语不直译(nodes/proper_nouns.py)
   片假名专名(人名/品牌/角色)与成人语境隐语是 LLM 误译重灾区:
   - ジンゴ 被误译成'芒果'、カンタくん 被保留日文而非音译;
   - マンゴー/バナナ/リンゴ/金玉/おまんこ/ちんちん 等在色情语境中
     是生殖器官代称,字面直译严重错译。
   整理三张规则表(专名/拟声词/成人隐语,用户提供隐语表),
    检测原文命中后动态注入翻译提示词,
   让 LLM 按正确语义处理。文档见 docs/proper_nouns.md。

测试(红→绿):
- tests/test_hallucination_mask.py:长时掩码/短时保留/非寒暄保留/阈值边界
- tests/test_proper_nouns.py:专名命中/拟声词/成人隐语/真实数据集成
- 真实 LLM 集成测试(完整 1440 行翻译 + 清洗 + 专名注入)通过
2026-09-05 22:32:40 +08:00

VRSub

为视频生成 VR 双眼字幕的单体应用:API、调度器与全部节点在同一进程内运行, 单仓库、单环境、单命令启动。由原分布式 WOV 多仓库合并而来,详细约定见 AGENTS.md

快速开始

uv sync
uv run uvicorn wov_app.main:app --reload

访问 http://127.0.0.1:8000/ 上传视频,自动执行"提音 → 转写 → 翻译 → ASS"。

  • 模型权重本地优先:把 whisper 模型放在 model/faster-whisper-large-v3 (含 model.bin)即可完全离线运行。
  • LLM 翻译默认使用 SiliconFlowQwen/Qwen3.6-35B-A3B),API Key 放在 gitignored 的 .envLLM_API_KEY=sk-...),启动时自动加载;也可用 LLM_API_BASE / LLM_MODEL 环境变量覆盖。

目录

路径 说明
src/wov_sdk/ 协议数据模型(与分布式版兼容)
src/wov_app/ 应用层:API、注册表、调度器、数据库
nodes/ 进程内节点实现(echo/ffmpeg/whisper/llm/ass
manifests/ 节点清单 JSON
web/ 静态前端
model/ 本地模型权重(gitignored
data/ SQLite 与存储(gitignored
tests/ 测试(100% 行覆盖率)

测试

uv run pytest

与分布式版的关系

  • 协议数据模型、工作流 DAG 数据化、调度拓扑执行保持不变。
  • 已移除:子进程节点、节点 HTTP 协议、节点注册/实例管理、TTL 回收。
  • 未来回退分布式时,只需为 registry.invoke 重新加上进程边界。
S
Description
No description provided
Readme
3.6 MiB
Languages
Python 92.6%
JavaScript 5%
HTML 1.4%
CSS 1%