Raspberry Pi ve Ollama ile yerel bir desk robot. Mikrofonla konuşursunuz, ses metne çevrilir, Ollama’daki model cevap üretir ve TTS ile sesli yanıt verilir.
- Yerel STT: faster-whisper ile Türkçe konuşma tanıma
- Yerel LLM: Ollama (örn. gemma3:1b) ile masaüstünde çalışan sohbet
- TTS: pyttsx3 ile metin okuma
- Basit arayüz: Tkinter ile mikrofon aç/kapa ve sohbet geçmişi
- Python 3.10+
- Ollama kurulu ve çalışır durumda (ollama.com)
- Raspberry Pi (veya x86/ARM masaüstü), mikrofon ve hoparlör
git clone https://github.com/ismailcankaratas/desk-robot.git
cd desk-botpython3 -m venv robotenv
source robotenv/bin/activate # Windows: robotenv\Scripts\activate
pip install -r requirements.txtOllama’yı kurup bir model indirin (Türkçe için hafif modeller önerilir):
# Ollama kurulumu: https://ollama.com/download
ollama pull gemma3:1b
# veya: ollama pull llama3.2:3bİlk çalıştırmada faster-whisper small modelini otomatik indirir. Raspberry Pi’de bellek kısıtlıysa app.py içinde WhisperSTT("base") veya WhisperSTT("tiny") kullanabilirsiniz.
source robotenv/bin/activate
python app.py- Mikrofonu Aç ile dinlemeyi başlatın, konuşun; sessizlik sonrası kayıt biter, cevap üretilir ve sesli okunur.
- Mikrofonu Kapat ile dinlemeyi durdurun.
desk-bot/
├── app.py # Giriş noktası, STT/LLM/TTS/Recorder bağlantısı
├── core/
│ └── robot_service.py # Dinleme döngüsü, hafıza, LLM çağrısı
├── infra/
│ ├── whisper_stt.py # faster-whisper STT
│ ├── ollama_llm.py # Ollama chat API
│ ├── tts_engine.py # pyttsx3 TTS
│ └── audio_recorder.py # Ses kaydı (sessizlik algılamalı)
├── ui/
│ └── gui.py # Tkinter arayüzü
├── models/ # (Opsiyonel) Piper TTS ONNX modelleri
├── requirements.txt
└── README.md
app.py içinde şunları değiştirebilirsiniz:
- Whisper:
WhisperSTT("small")→"base"veya"tiny"(daha az RAM) - Ollama modeli:
OllamaLLM("gemma3:1b")→ kullandığınız model adı - Kayıt:
AudioRecorderparametreleri (sessizlik süresi, max saniye vb.)
- Ollama’yı Pi’de çalıştırıyorsanız küçük modeller (gemma3:1b, phi, vb.) tercih edin.
- Whisper için
tinyveyabasedaha az bellek kullanır. - Ses kartı/mikrofon için
sounddevicelistesinden doğru cihazı seçebilirsiniz (AudioRecorder(device=...)).
MIT