Python
Meili
Meili (美丽) es un software que te permite traducir chino en vivo, con una superposición transparente con pinyin y significado.
美丽 (Meili) significa "hermoso".

HUD DE ESTUDIO DE MANDARÍN • TRADUCCIÓN LOCAL • TEXTO A VOZ
¿Qué es esto?
Meili (美丽) es un software que te permite traducir chino en vivo, con una superposición transparente con pinyin y significado.
Características
1. Región de visualización
- Al iniciar, eliges la ventana a compartir en el diálogo del sistema.
- Haz clic en la superposición para abrir un fotograma congelado de la transmisión, luego dibuja un cuadro sobre él para establecer la región observada (clic derecho o Esc cancela).
- La aplicación sigue observando esa área de la ventana compartida: cada 3 segundos lee el chino allí y lo traduce solo cuando aparece una nueva línea.
- Haz clic derecho en la superposición para borrar la región.
2. Tarjeta de estudio
- Cada resultado muestra hanzi, pinyin (
pypinyin), un desglose de palabras de CC-CEDICT y la traducción (MarianMT local,Helsinki-NLP/opus-mt-zh-en). - La tarjeta se centra horizontalmente en la parte inferior de la superposición. La aplicación dibuja el texto con un contorno para que siga siendo legible sobre el video.
3. Traducción por selección
- Selecciona texto chino en cualquier lugar del escritorio y la aplicación lo procesa a través del mismo pipeline: filtro CJK → tarjeta → traducción.
4. Tecla de acceso rápido
- Presiona
Ctrl+Alt+Spara capturar la pantalla. La aplicación la procesa con OCR y traduce cualquier chino encontrado.
5. Texto a Voz
- NeuTTS (TTS neuronal local, opcional, habilitado en la configuración).
- gTTS como respaldo.
- La aplicación reproduce los hanzi o la traducción, en chino o inglés respectivamente.
6. Extensión del navegador (Chromium)
- Selecciona texto chino en una página y la extensión muestra una información sobre herramientas de traducción en la página.
- La extensión se comunica con el backend local en
127.0.0.1:8263. - La extensión mantiene el contexto de la página solo en memoria. No escribe nada en el disco.
Instalación
Requisitos previos
- Python 3.12+
- Node.js (última LTS, para la extensión del navegador)
- Tesseract OCR con
chi_simyengtraineddata (incluido endata/tessdata/) - PyGObject + GStreamer + el plugin GStreamer de PipeWire (para compartir portal en Wayland)
- Navegador basado en Chromium (para la extensión)
Configuración
# Dependencias del sistema (Arch Linux)
./scripts/install_dependencies.sh
# Dependencias de Python
make install-pip
# Opcional: NeuTTS
make vendor
# Extensión del navegador
make build-extension
# Configuración
cp config/example_config.yaml config/config.yaml
Configuración
Edita config/config.yaml:
ocr:
engine: "pytesseract"
languages: ["en", "zh"] # chi_sim hace el trabajo de hanzi
translation:
service: "helsinki-nlp"
model: "Helsinki-NLP/opus-mt-zh-en" # Chino -> Inglés
target_language: "en"
performance:
use_gpu: false
neutts_enabled: false # necesita vendor/neutts y src/assets/voice_ref.wav
use_gpu: false ejecuta el modelo de traducción en la CPU.
Ejecutar
make run
Cargar Extensión
- Compílala:
make build-extension - Abre
chrome://extensions, habilita el Modo Desarrollador - "Cargar sin empaquetar" y selecciona la salida de compilación de la extensión (
src/extension/dist)
Estructura del Proyecto
Meili/
├── src/
│ ├── mesly/ # Aplicación Python
│ │ ├── capture/ # Transmisión de ventana Portal/PipeWire, captura de pantalla
│ │ ├── config/ # Configuración y especificaciones del sistema
│ │ ├── dictionary/ # Búsqueda CC-CEDICT, pinyin, segmentación
│ │ ├── ocr/ # Tesseract OCR + filtrado solo CJK
│ │ ├── server/ # Backend FastAPI (endpoint de la extensión)
│ │ ├── translation/ # Servicio local MarianMT (opus-mt-zh-en)
│ │ ├── tts/ # Síntesis de voz NeuTTS / gTTS
│ │ ├── utils/ # Registro, teclas de acceso rápido
│ │ └── window/ # Superposición HUD PyQt5
│ └── extension/ # Extensión Chromium (seleccionar para traducir)
├── data/ # tessdata + CC-CEDICT incluidos
├── config/ # Configuración en tiempo de ejecución
├── vendor/ # NeuTTS (opcional)
├── scripts/ # Scripts de instalación
└── main.py # Punto de entrada
Contribuciones
Se aceptan contribuciones. Consulta AGENTS.md para obtener directrices de desarrollo:
- Importar en el nivel superior
- Separar módulos en carpetas
- Usar clases en extensiones