- 为桌面端用户提供字幕级实时翻译体验,在不中断原有视频播放的前提下展示双语字幕。
- 支持 Windows/macOS 双平台,覆盖多种源语言(英文、日文、韩文等)与中文目标语言。
- 采用模块化设计,便于后续扩展新特性(多目标语言、团队协作、云端同步等)。
- 用户启动应用,授予屏幕录制权限,并在主界面配置 API Key、Endpoint、源语言等参数。
- 用户点击“选择字幕区域”,拖拽选择屏幕原字幕区域。
- 用户点击“选择显示区域”,拖拽翻译字幕展示窗口位置。
- 用户点击“开始”,后台线程进入抓取→OCR→翻译→渲染循环。
- 实时翻译结果以覆盖层形式显示在目标区域,可随时暂停或调整设置。
- 日志面板展示最近的 OCR 结果、翻译调用状态与错误信息,便于排查问题。
- 区域选择:半透明遮罩+矩形拖拽,分别记录源字幕区域与翻译显示区域。
- 实时屏幕捕捉:按照设定频率获取源区域截图,支持跨平台热键触发。
- OCR 识别:调用 EasyOCR(或可替换 OCR 引擎)识别字幕文本,支持多语言切换与自定义置信度阈值。
- 去重与缓存:对连续帧进行去重,避免重复翻译,提高性能。
- 翻译调用:对接 OpenAI 格式接口,支持自定义模型、温度、最大 token 等参数。
- 结果渲染:透明置顶窗口实时刷新翻译文本,支持字体、颜色、滚动等样式自定义。
- 配置管理:本地持久化 API Key、Endpoint、语言偏好、刷新频率、样式设定。
- 日志与提示:UI 中展示状态(运行中、暂停、失败)、错误消息与调试日志。
- 快捷键支持:定义全局热键,快速开始/停止翻译或重新选择区域。
- 任务栏/托盘集成:托盘菜单展示运行状态、入口配置与退出操作。
- 多语言译文并行显示,满足多目标语言需求。
- 字幕滚动历史与保存功能,便于复盘。
- 云端同步配置,支持多设备共享设置。
- 插件接口,供高阶用户接入自定义翻译或后处理逻辑。
- 表现层:PyQt6/PySide6 实现主控窗口、区域选择器、翻译覆盖层。
- 应用层:MainApp 管理生命周期、配置、事件绑定;TranslationEngine 管理后台循环;DisplayOverlay 管理渲染。
- 基础服务层:屏幕捕捉器(mss 或系统 API)、OCR 处理器(EasyOCR)、翻译协调器(requests 调用外部 API)。
- 支持服务:配置读取/写入模块、日志模块、缓存模块(去重)、错误与告警模块。
- 负责 UI 初始化、配置加载、模块实例化。
- 管理按钮事件:区域选择、开始/停止、设置面板。
- 与 TranslationEngine 通过信号/回调交互,接收翻译结果并交给 DisplayOverlay。
- 基于全屏透明窗口,捕获鼠标拖拽事件。
- 以 QRect 形式返回坐标与尺寸,并对结果进行归一化处理。
- 支持 ESC/右键取消与重新选择逻辑。
- 运行在独立线程或使用 QThread 包装,避免阻塞 UI。
- 循环步骤:
capture_screen_area(rect)→ 获取 numpy 数组格式图像。ocr_reader.readtext(image)→ 提取文本与置信度。- 文本清洗(去空格、合并行、过滤低置信度结果)。
- 判断是否与上一轮结果相同,若不同进入翻译。
translate_text(text)→ requests 调用外部 API,处理超时重试。- 通过回调向 UI 层发送翻译结果与原文,供显示与日志使用。
- 提供可配置的刷新频率、重试策略、最大队列长度。
- 无边框透明窗口,总在最前,大小位置绑定目标区域。
- QLabel 显示文本,支持多行、描边、阴影等样式,避免与背景混淆。
- 可根据用户配置调整字体、颜色、背景透明度。
- 支持淡入淡出或平滑滚动效果,提升用户体验。
- 采用 JSON/YAML 存储(如
settings.json)。 - 提供加载、验证、保存接口,敏感信息(API Key)可加密存储或提示用户加密。
- 使用 Python
logging模块记录运行状态、错误、请求耗时。 - UI 提供日志面板或弹窗提醒重要错误。
- 预留接入 Sentry 等远程监控的接口(可选)。
UI 事件 → MainApp → TranslationEngine.start()
↓
ScreenCapturer → OCRProcessor → TextCache
↓ ↓
TranslationCoordinator (API 调用)
↓
主线程回调 → DisplayOverlay.update_text()
- 所有跨线程通信通过信号槽或线程安全队列完成。
- 控制循环周期,确保 OCR/翻译耗时不会导致堆积。
| 需求 | 方案/库 | 说明 |
|---|---|---|
| GUI | PyQt6 / PySide6 | 跨平台、支持透明窗口与托盘 |
| 屏幕捕捉 | mss | 性能好,封装简洁 |
| OCR | EasyOCR | 多语言支持,可替换为 PaddleOCR/Tesseract |
| 翻译 API | requests + 自定义封装 | 兼容 OpenAI 接口格式,可扩展 Azure/OpenRouter |
| 配置持久化 | json/yaml + pathlib | 简单可靠 |
| 日志 | logging + rotating log | 支持文件与控制台输出 |
| 打包 | PyInstaller | 支持 Windows/macOS 可执行文件 |
- 并发设计:隔离 UI 与后台处理线程,必要时引入线程池或 asyncio。
- 缓存机制:基于 hash 或文本对比的去重,避免重复翻译。
- 批处理:对于多段字幕可批量请求翻译 API,减少网络往返。
- 资源复用:OCR 模型初始化一次,多次复用,避免重复加载。
- 降级策略:API 超时或失败时降级显示原文或提示,避免应用崩溃。
- 明确提示用户授权屏幕录制权限,并说明数据仅用于前端翻译,不做持久化。
- API Key 加密存储或要求用户每次启动输入,避免明文保存在磁盘。
- 网络请求使用 HTTPS,支持自定义 API Endpoint 证书验证(可配置忽略但默认启用)。
- 配置项示例:
api.endpointapi.keytranslation.source_languagetranslation.target_languageengine.interval_msoverlay.font_sizeoverlay.background_alpha
- 提供导入/导出配置功能,方便迁移。
- 日志级别:DEBUG/INFO/WARNING/ERROR。
- 关键事件:OCR 结果、翻译请求耗时、失败重试、权限异常。
- 可选:集成远程错误上报(Sentry)或本地日志查看器。
- 单元测试:覆盖配置解析、文本处理、缓存逻辑。
- 集成测试:模拟 OCR 输出与翻译 API 返回,验证管道串联。
- UI 测试:使用 Qt Test 或截图对比验证覆盖层渲染。
- 性能测试:脚本对不同帧率、字幕密度进行压测,记录延迟与 CPU 占用。
- 使用 PyInstaller 生成平台特定可执行文件,编写
.spec文件定义资源、数据文件。 - macOS 需处理代码签名、公证;Windows 需附带 VC++ 运行库依赖提示。
- 发布 artifacts 前进行最终测试,确保配置、权限、字体资源完整。
- M1 核心功能(2 周)
- 完成 UI 框架、区域选择、基础翻译循环。
- M2 功能整合(2 周)
- 增强配置管理、日志展示、快捷键、错误处理。
- M3 性能与 UX 优化(2 周)
- 引入缓存、样式自定义、历史字幕、托盘支持。
- M4 打包与发布(1 周)
- 完成打包脚本、跨平台测试、文档与发布说明。