दस्तावेज़ीकरण

पोर्टफोलियो

Meili
Python

Meili

Meili (美丽) एक सॉफ़्टवेयर है जो आपको चीनी का लाइव अनुवाद करने की सुविधा देता है, जिसमें पिनयिन और अर्थ के साथ एक पारदर्शी ओवरले होता है।

GitHub|

मेइली (Meili) का अर्थ है "सुंदर"।


image

मंदारिन अध्ययन HUD • स्थानीय अनुवाद • टेक्स्ट-टू-स्पीच


यह क्या है?

मेइली (美丽) एक सॉफ़्टवेयर है जो आपको चीनी का लाइव अनुवाद करने देता है, पिनयिन और अर्थ के साथ एक पारदर्शी ओवरले के साथ।

विशेषताएँ

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, ब्राउज़र एक्सटेंशन के लिए)
  • chi_sim और eng traineddata के साथ Tesseract OCR (data/tessdata/ में vendored)
  • PyGObject + GStreamer + PipeWire GStreamer प्लगइन (Wayland पर पोर्टल शेयर के लिए)
  • Chromium-आधारित ब्राउज़र (एक्सटेंशन के लिए)

सेटअप

# System dependencies (Arch Linux)
./scripts/install_dependencies.sh

# Python dependencies
make install-pip

# Optional: NeuTTS
make vendor

# Browser extension
make build-extension

# Configuration
cp config/example_config.yaml config/config.yaml

कॉन्फ़िगरेशन

config/config.yaml संपादित करें:

ocr:
  engine: "pytesseract"
  languages: ["en", "zh"]     # chi_sim does the hanzi work

translation:
  service: "helsinki-nlp"
  model: "Helsinki-NLP/opus-mt-zh-en"   # Chinese -> English
  target_language: "en"

performance:
  use_gpu: false
  neutts_enabled: false   # needs vendor/neutts and src/assets/voice_ref.wav

use_gpu: false अनुवाद मॉडल को CPU पर चलाता है।

चलाएँ

make run

एक्सटेंशन लोड करें

  1. इसे बनाएँ: make build-extension
  2. chrome://extensions खोलें, Developer Mode सक्षम करें
  3. "Load unpacked" करें और एक्सटेंशन बिल्ड आउटपुट (src/extension/dist) चुनें

प्रोजेक्ट संरचना

Meili/
├── src/
│   ├── mesly/              # Python application
│   │   ├── capture/        # Portal/PipeWire window streaming, screen capture
│   │   ├── config/         # Settings and system specs
│   │   ├── dictionary/     # CC-CEDICT lookup, pinyin, segmentation
│   │   ├── ocr/            # Tesseract OCR + CJK-only filtering
│   │   ├── server/         # FastAPI backend (extension endpoint)
│   │   ├── translation/    # Local MarianMT (opus-mt-zh-en) service
│   │   ├── tts/            # NeuTTS / gTTS speech synthesis
│   │   ├── utils/          # Logging, hotkeys
│   │   └── window/         # PyQt5 HUD overlay
│   └── extension/           # Chromium extension (select-to-translate)
├── data/                    # Vendored tessdata + CC-CEDICT
├── config/                  # Runtime config
├── vendor/                  # NeuTTS (optional)
├── scripts/                 # Install scripts
└── main.py                  # Entry point

योगदान

योगदान का स्वागत है। विकास दिशानिर्देशों के लिए AGENTS.md देखें:

  • शीर्ष स्तर पर इम्पोर्ट करें
  • मॉड्यूल को फ़ोल्डरों में अलग करें
  • एक्सटेंशन में क्लास का उपयोग करें