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

普通话学习 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
加载扩展
- 构建:
make build-extension - 打开
chrome://extensions,启用开发者模式 - “加载已解压的扩展程序”,选择扩展构建输出(
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:
- 在顶层导入
- 将模块分离到文件夹中
- 在扩展中使用类