Meili
Python

Meili

Meili(美丽)是一款可以实时翻译中文的软件,配有显示拼音和释义的透明浮层。

GitHub|

美丽 (Meili) 意为“美丽”。


image

普通话学习 HUD • 本地翻译 • 文本转语音


这是什么?

美丽 (Meili) 是一款软件,让你能够实时翻译中文,并通过透明叠加层显示拼音和释义。

功能

1. 监视区域

  • 启动时,你在系统对话框中选择要共享的窗口。
  • 点击叠加层可打开流的冻结帧,然后在上面画一个框来设置监视区域(右键或 Esc 取消)。
  • 应用会持续监视共享窗口的该区域:每 3 秒读取那里的中文,仅在出现新行时进行翻译。
  • 右键点击叠加层可清除区域。

2. 学习卡片

  • 每个结果显示汉字、拼音(pypinyin)、来自 CC-CEDICT 的词语分解,以及翻译(本地 MarianMT,Helsinki-NLP/opus-mt-zh-en)。
  • 卡片水平居中显示在叠加层底部。应用为文字绘制轮廓,使其在视频上保持可读。

3. 划词翻译

  • 在桌面任意位置选择中文文本,应用会通过相同的流程处理:CJK 过滤 → 卡片 → 翻译。

4. 快捷键

  • 按 Ctrl+Alt+S 截取屏幕。应用对其进行 OCR 并翻译找到的任何中文。

5. 文本转语音

  • NeuTTS(本地神经 TTS,可选,在配置中启用)。
  • gTTS 作为后备。
  • 应用会相应地用中文或英文朗读汉字或译文。

6. 浏览器扩展(Chromium)

  • 在页面上选择中文文本,扩展会显示页内翻译提示框。
  • 扩展与 127.0.0.1:8263 上的本地后端通信。
  • 扩展仅在内存中保留页面上下文。不会向磁盘写入任何内容。

安装

前提条件

  • Python 3.12+
  • Node.js(最新 LTS,用于浏览器扩展)
  • Tesseract OCR,包含 chi_sim 和 eng 训练数据(已内置在 data/tessdata/)
  • PyGObject + GStreamer + PipeWire GStreamer 插件(用于 Wayland 上的门户共享)
  • 基于 Chromium 的浏览器(用于扩展)

设置

# 系统依赖(Arch Linux)
./scripts/install_dependencies.sh

# Python 依赖
make install-pip

# 可选:NeuTTS
make vendor

# 浏览器扩展
make build-extension

# 配置
cp config/example_config.yaml config/config.yaml

配置

编辑 config/config.yaml:

ocr:
  engine: "pytesseract"
  languages: ["en", "zh"]     # chi_sim 负责汉字处理

translation:
  service: "helsinki-nlp"
  model: "Helsinki-NLP/opus-mt-zh-en"   # 中文 -> 英文
  target_language: "en"

performance:
  use_gpu: false
  neutts_enabled: false   # 需要 vendor/neutts 和 src/assets/voice_ref.wav

use_gpu: false 在 CPU 上运行翻译模型。

运行

make run

加载扩展

  1. 构建:make build-extension
  2. 打开 chrome://extensions,启用开发者模式
  3. “加载已解压的扩展程序”,选择扩展构建输出(src/extension/dist)

项目结构

Meili/
├── src/
│   ├── mesly/              # Python 应用程序
│   │   ├── capture/        # Portal/PipeWire 窗口流、屏幕捕获
│   │   ├── config/         # 设置和系统规格
│   │   ├── dictionary/     # CC-CEDICT 查询、拼音、分词
│   │   ├── ocr/            # Tesseract OCR + 仅 CJK 过滤
│   │   ├── server/         # FastAPI 后端(扩展端点)
│   │   ├── translation/    # 本地 MarianMT (opus-mt-zh-en) 服务
│   │   ├── tts/            # NeuTTS / gTTS 语音合成
│   │   ├── utils/          # 日志、快捷键
│   │   └── window/         # PyQt5 HUD 叠加层
│   └── extension/           # Chromium 扩展(划词翻译)
├── data/                    # 内置 tessdata + CC-CEDICT
├── config/                  # 运行时配置
├── vendor/                  # NeuTTS(可选)
├── scripts/                 # 安装脚本
└── main.py                  # 入口点

贡献

欢迎贡献。开发指南请参阅 AGENTS.md:

  • 在顶层导入
  • 将模块分离到文件夹中
  • 在扩展中使用类