A Turkish-speaking desktop voice assistant built with Python & Tkinter — controls Spotify, smart bulbs and your system, checks the weather, launches apps, and chats using an LLM.
Python ve Tkinter ile geliştirilmiş, Türkçe konuşan bir masaüstü sesli asistanı — Spotify, akıllı ampul ve sistem kontrolü yapar, hava durumuna bakar, uygulama açar ve bir LLM ile sohbet eder.
🚧 This is version 1.0 — actively under development, more features and improvements are on the way. 🚧 Bu, 1.0 sürümüdür — aktif olarak geliştiriliyor, yeni özellikler ve iyileştirmeler yolda.
Vera is a Turkish-language desktop voice assistant written in vanilla Python. It listens through the microphone, understands commands in natural Turkish, speaks back with a natural-sounding TTS voice, and shows an animated Tkinter orb while it listens/talks. Anything that isn't a recognized command (lights, music, system actions, weather, apps) is forwarded to an LLM (via Groq) for general conversation.
- 🗣️ Voice control — wake/sleep and background listening modes, speech recognition and natural Turkish text-to-speech
- 🎵 Spotify control — play/pause, search & play a track, volume, "what's playing", opening the Spotify app, and automatic volume ducking while Vera talks
- 💡 Smart bulb control — Tuya smart bulb on/off, color and brightness, via local network
- 🖥️ System control — shutdown/restart/sleep/lock (with confirmation window), volume, screenshots, monitor extend/duplicate/second-only, task manager, notification center, file explorer
- 🚀 App launcher — opens desktop apps by voice command
- ⛅ Weather — current weather for any Turkish city/district via OpenWeatherMap
- 💬 General chat — falls back to an LLM (Groq) for anything that isn't a recognized command, with Turkish chat history stored in MySQL
- 🎨 Animated GUI — a minimal, animated Tkinter orb that reacts to listening/speaking state
- Python 3 — core language
- Tkinter — desktop GUI
- pygame — audio playback engine
- edge-tts — Turkish text-to-speech
- SpeechRecognition + PyAudio — microphone capture & speech-to-text
- Groq API — LLM-based general conversation
- Spotify Web API — playback control
- TinyTuya — local control of the Tuya smart bulb
- MySQL — chat history & contacts storage
- OpenWeatherMap API — weather data
main.py is the only entry point and stays at the project root; it boots the audio engine and starts the Tkinter GUI. Everything else is split into four packages by responsibility:
gui/— the Tkinter window and animated orb (gui.py)core/— settings/constants (config.py), command routing & LLM fallback (commands.py), MySQL access (database.py), text helpers (utils.py)controllers/— everything that controls an external device or the OS: Spotify (spotify_controller.py), the smart bulb (bulb_controller.py), Windows (system_control.py), app launching (app_launcher.py)services/— speech I/O (speech.py) and weather lookup (weather.py)
Secrets (API keys, DB password) are read from environment variables via python-dotenv — see Usage below.
Vera/
├── main.py # Entry point
├── gui/ # Tkinter GUI
│ └── gui.py
├── core/ # Settings, command routing, DB, helpers
│ ├── config.py
│ ├── commands.py
│ ├── database.py
│ └── utils.py
├── controllers/ # Spotify, smart bulb, system, app launcher
│ ├── spotify_controller.py
│ ├── bulb_controller.py
│ ├── system_control.py
│ └── app_launcher.py
├── services/ # Speech (TTS/STT) and weather
│ ├── speech.py
│ └── weather.py
├── img/ # Screenshots
├── .env.example
├── requirements.txt
├── LICENSE
└── README.md
- Clone the repository
git clone https://github.com/<your-username>/Vera.git cd Vera
- Install dependencies (Python 3.10+ recommended)
pip install -r requirements.txt
- Copy
.env.exampleto.envand fill in your own keys (Groq, OpenWeatherMap, Spotify, Tuya bulb, MySQL):cp .env.example .env
- Create a MySQL database matching your
.env(DB_NAME, defaultvera_db). - Run it:
python main.py
- Fork the repository
- Create a new branch
- Commit your changes
- Push the branch
- Open a pull request
This project is licensed under the MIT License.
Vera, saf Python ile yazılmış, Türkçe konuşan bir masaüstü sesli asistanıdır. Mikrofondan dinler, doğal Türkçe komutları anlar, doğal bir TTS sesiyle cevap verir ve dinlerken/konuşurken animasyonlu bir Tkinter küresi gösterir. Tanınan bir komut olmayan her şey (ışıklar, müzik, sistem işlemleri, hava durumu, uygulamalar dışında kalan konular) genel sohbet için bir LLM'e (Groq üzerinden) yönlendirilir.
- 🗣️ Sesli kontrol — uyanma/uyuma ve arka planda dinleme modları, konuşma tanıma ve doğal Türkçe seslendirme
- 🎵 Spotify kontrolü — çal/duraklat, şarkı arama & çalma, ses seviyesi, "ne çalıyor", Spotify uygulamasını açma ve Vera konuşurken otomatik ses kısma
- 💡 Akıllı ampul kontrolü — Tuya akıllı ampulü yerel ağ üzerinden açma/kapama, renk ve parlaklık ayarı
- 🖥️ Sistem kontrolü — kapat/yeniden başlat/uyut/kilitle (onay penceresiyle), ses seviyesi, ekran görüntüsü, monitör genişlet/kopyala/sadece ikinci ekran, görev yöneticisi, bildirim merkezi, dosya gezgini
- 🚀 Uygulama açıcı — sesli komutla masaüstü uygulamalarını açar
- ⛅ Hava durumu — OpenWeatherMap üzerinden herhangi bir Türkiye il/ilçesi için güncel hava durumu
- 💬 Genel sohbet — tanınan bir komut olmayan her şey için bir LLM'e (Groq) düşer, Türkçe sohbet geçmişi MySQL'de tutulur
- 🎨 Animasyonlu arayüz — dinleme/konuşma durumuna tepki veren minimal, animasyonlu bir Tkinter küresi
- Python 3 — ana dil
- Tkinter — masaüstü arayüzü
- pygame — ses çalma motoru
- edge-tts — Türkçe metinden sese dönüşüm
- SpeechRecognition + PyAudio — mikrofon yakalama & sesten metne dönüşüm
- Groq API — LLM tabanlı genel sohbet
- Spotify Web API — oynatma kontrolü
- TinyTuya — Tuya akıllı ampulün yerel kontrolü
- MySQL — sohbet geçmişi & kişi kayıtları
- OpenWeatherMap API — hava durumu verisi
main.py, tek giriş noktasıdır ve projenin kök dizininde kalır; ses motorunu başlatır ve Tkinter arayüzünü açar. Geri kalan her şey sorumluluğa göre dört pakete ayrılmıştır:
gui/— Tkinter penceresi ve animasyonlu küre (gui.py)core/— ayarlar/sabitler (config.py), komut yönlendirme & LLM'e düşme (commands.py), MySQL erişimi (database.py), metin yardımcıları (utils.py)controllers/— harici bir cihazı veya işletim sistemini kontrol eden her şey: Spotify (spotify_controller.py), akıllı ampul (bulb_controller.py), Windows (system_control.py), uygulama açma (app_launcher.py)services/— ses giriş/çıkışı (speech.py) ve hava durumu sorgusu (weather.py)
Gizli bilgiler (API anahtarları, DB şifresi) python-dotenv ile ortam değişkenlerinden okunur — aşağıdaki Kullanım bölümüne bakın.
Vera/
├── main.py # Giriş noktası
├── gui/ # Tkinter arayüzü
│ └── gui.py
├── core/ # Ayarlar, komut yönlendirme, DB, yardımcılar
│ ├── config.py
│ ├── commands.py
│ ├── database.py
│ └── utils.py
├── controllers/ # Spotify, akıllı ampul, sistem, uygulama açıcı
│ ├── spotify_controller.py
│ ├── bulb_controller.py
│ ├── system_control.py
│ └── app_launcher.py
├── services/ # Ses (TTS/STT) ve hava durumu
│ ├── speech.py
│ └── weather.py
├── img/ # Ekran görüntüleri
├── .env.example
├── requirements.txt
├── LICENSE
└── README.md
- Depoyu klonlayın
git clone https://github.com/<kullanici-adiniz>/Vera.git cd Vera
- Bağımlılıkları kurun (Python 3.10+ önerilir)
pip install -r requirements.txt
.env.exampledosyasını.envolarak kopyalayıp kendi anahtarlarınızı girin (Groq, OpenWeatherMap, Spotify, Tuya ampul, MySQL):cp .env.example .env
.envdosyanızla eşleşen bir MySQL veritabanı oluşturun (DB_NAME, varsayılanvera_db).- Çalıştırın:
python main.py
- Projeyi fork'layın
- Yeni bir branch oluşturun
- Değişikliklerinizi commit edin
- Branch'i push edin
- Pull request oluşturun
Bu proje MIT Lisansı ile lisanslanmıştır.

