Skip to content

Repository files navigation

Melodi

Melodi, Windows üzerinde çalışan Türkçe sesli ve yazılı kişisel asistandır. Gemini ile doğal dil işleme yapar; mikrofon, seslendirme, kalıcı hafıza, yapılacaklar listesi, takvim ve güvenli uygulama açma araçlarını tek bir masaüstü arayüzünde birleştirir.

Özellikler

  • Türkçe sesli komut algılama
  • Yazılı sohbet desteği
  • Gemini tool-calling altyapısı
  • Duruma göre renk ve hareket değiştiren animasyonlu orb
  • Edge TTS ile Türkçe sesli yanıt
  • Kalıcı kullanıcı hafızası
  • Tarihli veya tarihsiz yapılacaklar listesi
  • Takvim etkinlikleri ve yaklaşan plan görünümü
  • Kalıcı hızlı not alanı
  • Canlı CPU, RAM ve disk göstergeleri
  • Hafızadaki şehre göre hava durumu
  • TCMB'den ücretsiz ve tarihli döviz kurları
  • Hava, takvim ve görevleri birleştiren günlük “Günaydın” özeti
  • Ayarlardan özelleştirilebilen Günaydın bölümleri ve kelime/cümle tetiklemeli özel rutinler
  • Bilinmeyen veya ücretli modele geçişi engelleyen ücretsiz mod koruması
  • Canlı internet bağlantısı ve mikrofon kullanılabilirlik göstergeleri
  • Ctrl + Space genel mikrofon kısayolu ve güvenli dinleme iptali
  • İsteğe bağlı sürekli dinleme
  • Kaynak bağlantılı yerel Markdown araştırma raporları
  • YouTube ve Spotify araması
  • Trendyol'da ürün araması
  • Türkçe Wikipedia'dan kaynaklı kısa bilgi ve isteğe bağlı sayfa açma
  • Güvenli whitelist üzerinden Windows uygulaması açma
  • Hareketli sistem tepsisi ikonu
  • Pencereyi tray'e gizleme ve geri açma

Gereksinimler

  • Windows 10 veya Windows 11
  • Python 3.11 veya üzeri
  • Mikrofon ve ses çıkışı
  • İnternet bağlantısı
  • Gemini API anahtarı

Kurulum

Projeyi klonlayın:

git clone https://github.com/EgeGermen/Melodi.git
cd Melodi

Sanal ortam oluşturup etkinleştirin:

py -m venv .venv
.\.venv\Scripts\Activate.ps1

Bağımlılıkları yükleyin:

py -m pip install -r requirements.txt

Test araçlarını da yüklemek için:

py -m pip install -r requirements-dev.txt

.env.example dosyasını .env adıyla kopyalayın:

Copy-Item .env.example .env

Ardından .env içine Gemini API anahtarınızı yazın:

GEMINI_API_KEY=your_gemini_api_key_here

Çalıştırma

py main.py

Uygulama açılırken mikrofon, ortam gürültüsünü yaklaşık bir saniye ölçer. Ardından mikrofon düğmesiyle sesli komut verebilir veya sağ paneldeki alana mesaj yazabilirsiniz. Melodi arka plandayken Ctrl + Space ile dinlemeyi başlatabilirsiniz. Dinleme sırasında aynı kısayola veya mikrofon düğmesine tekrar basmak isteği iptal eder ve algılanan komut işlenmez.

Örnek komutlar

  • “Bugün hava nasıl?”
  • “Yarın saat 14.00 için diş hekimi etkinliği ekle.”
  • “Ekmek almayı yapılacaklara ekle.”
  • “Yapılacaklar listemde ne var?”
  • “Not defterini aç.”
  • “YouTube'da Barış Manço ara.”
  • “Spotify'da Sezen Aksu ara.”
  • “Ben Antalya'da yaşıyorum.”
  • “Günaydın.”

Özel rutinler Ayarlar ekranında her satıra tetikleyici = adım; adım biçiminde eklenebilir. Örneğin:

işe başlıyorum = görevleri listele; Spotify'ı aç

Rutin yalnız tetikleyici cümle tam olarak söylendiğinde çalışır.

Arayüz

Arayüz üç ana bölümden oluşur:

  • Sol panel: Saat, hava durumu, sistem kullanımı, günlük plan ve hızlı not
  • Orta panel: Animasyonlu orb, asistan durumu, anlaşılan komut ve mikrofon
  • Sağ panel: Kaydırılabilir sohbet geçmişi ve yazılı mesaj alanı

Orb uygulamanın durumunu otomatik gösterir:

Durum Renk Anlam
Bekliyor Mor Yeni komuta hazır
Dinliyor Yeşil Mikrofon kullanıcıyı dinliyor
Düşünüyor Sarı Gemini isteği işliyor
Konuşuyor Mavi Melodi yanıtı seslendiriyor

Mimari

main.py
├── config/
│   ├── app_preferences.py
│   ├── secret_store.py
│   └── settings.py
├── core/
│   ├── agent.py
│   ├── app_paths.py
│   ├── data_migration.py
│   └── tool_registry.py
├── tools/
│   ├── todo_tools.py
│   ├── calendar_tools.py
│   ├── weather_tool.py
│   ├── open_app_tool.py
│   └── ...
├── storage/
│   ├── memory_store.py
│   ├── todo_store.py
│   ├── calendar_store.py
│   └── quick_note_store.py
├── speech/
│   ├── listener.py
│   └── speaker.py
└── ui/
    ├── app.py
    ├── animated_orb.py
    ├── chat_view.py
    ├── quick_note.py
    ├── system_stats.py
    └── theme.py

Tkinter ana thread'i yalnızca arayüzü günceller. Mikrofon, Gemini ve seslendirme işlemleri ayrı worker thread'inde sırayla çalışır. Worker ile arayüz arasındaki iletişim thread-safe kuyruklar üzerinden yapılır.

Güvenlik

Uygulama açma aracı yalnızca tools/open_app_tool.py içindeki whitelist'te tanımlı programları çalıştırır. Kullanıcı girdisi doğrudan shell komutu olarak çalıştırılmaz.

Kalıcı kullanıcı verileri kaynak koddan ayrı tutulur:

%LOCALAPPDATA%\Melodi\
├── data\       # Ayarlar, hafıza, görevler, takvim ve hızlı not
├── logs\       # Dönen uygulama günlükleri
├── cache\      # Yeniden üretilebilen geçici dosyalar
└── secrets.dat # Windows DPAPI ile şifrelenmiş Gemini API anahtarı

Araştırma raporları kullanıcının kolayca bulabilmesi için Belgeler\Melodi\Raporlar klasöründe oluşturulur. Eski storage/ JSON dosyaları ve proje içindeki Markdown raporları ilk çalıştırmada, yeni hedefte aynı dosya yoksa güvenli biçimde kopyalanır; kaynak dosyalar silinmez.

Gemini API anahtarı paketlenmiş kullanımda Windows DPAPI ile mevcut Windows kullanıcısına özel olarak şifrelenir. Geliştirme ortamındaki .env desteği geri dönüş seçeneği olarak korunur ve .gitignore ile Git dışında bırakılır.

Hızlı notlar agent hafızasından ayrı saklanır; not içeriği Gemini sistem promptuna eklenmez.

Testler

Tüm testleri çalıştırmak için:

py -m pytest tests/ -v

Mevcut test paketi storage sınıflarını, araçları, tool registry'yi ve önemli regresyon senaryolarını kapsar.

Geliştirme önizlemesi

Dashboard'u gerçek mikrofon ve Gemini akışını başlatmadan görüntülemek için:

py -m ui.dashboard_skeleton_preview

Yol haritası

  • Gemini Live API ile gerçek zamanlı ses akışı
  • Melodi konuşurken araya girebilme
  • Daha düşük sesli yanıt gecikmesi
  • Gelişmiş ses seviyesi görselleştirmesi

Geliştirici

Ege Germen

About

🎙️ Gemini destekli; sesli ve yazılı iletişim, kalıcı hafıza, görevler, takvim, seslendirme ve güvenli uygulama açma özelliklerine sahip Windows kişisel asistanı.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages