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 traineddata 포함, 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/        # 포털/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를 참조하십시오:

  • 최상위 레벨에서 가져오기
  • 모듈을 폴더로 분리
  • 확장 프로그램에서 클래스 사용