Selamlar! Bugün sizlerle başlıktan da gördüğünüz üzere Python yazılım dilini kullanarak sesli asistan yapıyoruz. Komutları, dilleri vb. daha sonra istediğiniz gibi değiştirebilirsiniz.
Şimdi kodda gördüğünüz karışık şeylerin ne iş yaptığına bakalım.
Peki, nedir bu
Kodumuzdaki
Kodumuzda self'i çeşitli yerlerde kullandık:
Evet, tahmin ettiğiniz gibi bu metni bana ChatGPT hazırladı fakat benim katkılarım da büyük.
pip Nedir, Nasıl Kurulur? (tıklayın)
Öncelikle bir .py uzantılı Python dosyası oluşturun. Oluşturduğunuz dosyaya aşağıdaki kodları yapıştırın.
Python:
import speech_recognition as sr
import pyttsx3
import webbrowser
import requests
import keyboard
from win10toast import ToastNotifier
toaster = ToastNotifier()
dogrulama = 0
def tarayici_url_cek():
url = "https://wirehaired-dog-cotton.glitch.me/"
response = requests.get(url, verify=False)
if response.status_code == 200:
return response.text
else:
raise Exception("Sayfaya erişilemiyor.")
class HetrAssistant:
def __init__(self):
self.recognizer = sr.Recognizer()
self.engine = pyttsx3.init()
self.engine.setProperty('rate', 160)
self.engine.setProperty('volume', 2)
def speak(self, text):
self.engine.say(text)
self.engine.runAndWait()
def listen(self):
with sr.Microphone() as source:
print("Dinliyorum...")
toaster.show_toast("HetrAssistant", "Seni dinliyorum..", duration=3)
self.recognizer.adjust_for_ambient_noise(source)
audio = self.recognizer.listen(source)
try:
komut = self.recognizer.recognize_google(audio, language='tr-TR')
print(f"Sen: {komut}")
return komut
except sr.UnknownValueError:
print("Bekle...")
self.speak(f"Sorry, I can not hear you.")
return ""
except sr.RequestError:
print("Bekle...")
self.speak("Sorry, I can not.")
return ""
def run(self,dogrulama):
print("Bekle...")
self.speak(f"Hi! I'm HetrAssistant. What is the password?")
while True:
komut = self.listen().lower()
nickname = 'admin'
if dogrulama == 0:
if 'centilmenler kulübü' in komut:
dogrulama = 1
print("Bekle...")
self.speak(f"Hi! I'm HetrAssistant. How can I help you?")
else:
print("Bekle...")
self.speak(f"What is the password?")
elif dogrulama == 1:
if 'görüşürüz' in komut:
self.speak("Good bye!")
break
elif 'tarayıcı' in komut:
print("Bekle...")
webbrowser.open(tarayici_url_cek())
toaster.show_toast("HetrAssistant", "Tarayıcı açıldı.", duration=3)
elif 'teşekkürler' in komut or 'teşekkür ederim' in komut or 'sağol' in komut:
print("Bekle...")
self.speak(f"Thank you {nickname}! How can I help you?")
elif 'programı kapat' in komut:
print("Bekle...")
keyboard.send('alt+f4')
toaster.show_toast("HetrAssistant", "Program kapatıldı.", duration=3)
elif 'sayfayı kapat' in komut:
print("Bekle...")
keyboard.send('ctrl+f4')
toaster.show_toast("HetrAssistant", "Sayfa kapatıldı.", duration=3)
elif 'türk hack team' in komut or 'tht' in komut:
print("Bekle...")
webbrowser.open("https://turkhackteam.org")
toaster.show_toast("HetrAssistant", "TurkHackTeam Açıldı!", duration=3)
self.speak("HACKING TIME!!")
elif 'programı değiştir' in komut:
print("Bekle...")
keyboard.send('alt+tab')
toaster.show_toast("HetrAssistant", "Program değiştirildi.", duration=3)
elif 'sayfayı değiştir' in komut:
print("Bekle...")
keyboard.send('ctrl+tab')
toaster.show_toast("HetrAssistant", "Sayfa değiştirildi.", duration=3)
elif 'masaüstünü değiştir' in komut:
print("Bekle...")
keyboard.send('win+tab')
toaster.show_toast("HetrAssistant", "Masaüstü değiştirildi.", duration=3)
elif 'yapıştır' in komut:
print("Bekle...")
keyboard.send('ctrl+v')
toaster.show_toast("HetrAssistant", "Kopyalanan metin yapıştırıldı.", duration=3)
if __name__ == "__main__":
assistant = HetrAssistant()
assistant.run(0)
Şimdi kodda gördüğünüz karışık şeylerin ne iş yaptığına bakalım.
Kullanılan Kütüphaneler
- speech_recognition: Sesli komutları algılamak ve metne dönüştürmek için kullanılır.
- pyttsx3: Metinleri sesli olarak okutmak için kullanılır.
- webbrowser: Web tarayıcısında URL açmak için kullanılır.
- requests: HTTP istekleri yapmak için kullanılır.
- keyboard: Klavye kısayollarını simüle etmek için kullanılır.
- win10toast: Windows 10 için bildirimler (toast) göndermek için kullanılır.
Sınıflar ve Fonksiyonlar
- tarayici_url_cek Fonksiyonu:
- Belirli bir URL'den (bu durumda "https://wirehaired-dog-cotton.glitch.me/") veri çekiyor.
- İstek başarılı olursa, HTML içeriği döndürülüyor. Aksi takdirde bir hata fırlatılıyor.
- Aynı zamanda belirli URL'nin açtığı sayfada bir URL var ve bu URL'yi değiştirmek için kodun değişmesine gerek yok.
- Bu olayı Canlı Güncelleme Sistemi adlı oluşturduğum konuda daha detaylı anlattım. Aynı mantık fakat güncelleme değil.
- HetrAssistant Sınıfı:
- speak:
- Verilen metni sesli olarak okur.
- listen:
- Mikrofonu kullanarak sesli komutları dinler ve metne dönüştürür. Hata durumunda uygun mesajları kullanıcıya söyler.
- run:
- Asistanın ana işleyiş fonksiyonu. İlk olarak şifre doğrulaması yapar. Şifre doğruysa, çeşitli komutlara yanıt verir:
- 'centilmenler kulübü': Şifreyi doğrular ve asistanı aktif hale getirir.
- 'görüşürüz': Asistanı kapatır.
- 'tarayıcı': Belirli bir URL'yi tarayıcıda açar.
- 'teşekkürler', 'teşekkür ederim', 'sağol': Kullanıcıya teşekkür eder ve yardım teklif eder.
- 'programı kapat', 'sayfayı kapat', 'programı değiştir', 'sayfayı değiştir', 'masaüstünü değiştir', 'yapıştır': Klavye kısayollarını simüle eder ve belirli işlemleri yapar.
- 'türk hack team', 'tht': Belirli bir URL'yi açar ve "HACKING TIME!!" mesajını okur.
- Asistanın ana işleyiş fonksiyonu. İlk olarak şifre doğrulaması yapar. Şifre doğruysa, çeşitli komutlara yanıt verir:
- speak:
Özellikler
- Sesli Komutlar: Komutlar Türkçe olarak tanımlanmış ve listen fonksiyonu bu komutları algılamak için Google'ın ses tanıma API'sini kullanıyor.
- Klavye Kısayolları: Klavye kısayollarını simüle etmek için keyboard kütüphanesi kullanılmış. Bu, programın bazı uygulamaları ve işlemleri kontrol etmesine olanak sağlar.
- Hata Yönetimi: listen fonksiyonu ses tanıma sırasında olabilecek hataları ele alır, ancak tarayici_url_cek fonksiyonunda HTTP isteklerinin başarısız olması durumunda sadece bir hata fırlatır.
Peki, nedir bu self?
- self: Sınıfın bir örneğini (instance) temsil eden bir referanstır. Bir sınıfın herhangi bir metodu içinde self kullanarak o sınıfın örneğine erişiriz. Bu sayede, sınıfın diğer metotlarına ve özelliklerine erişebiliriz.
self Nasıl Kullanılır?
- Özelliklere Erişim:
- Sınıfın örneği üzerindeki özelliklere erişmek için self kullanılır. Özellikler, sınıfın
[COLOR=rgb(147, 101, 184)]__init__[/COLOR]metodu gibi başlangıç metotlarında tanımlanır. -
Python:
class MyClass: def __init__(self, value): self.value = value # 'self.value', sınıfın örneğine ait bir özelliktir. def print_value(self): print(self.value) # 'self.value' kullanılarak özelliğe erişilir.
- Sınıfın örneği üzerindeki özelliklere erişmek için self kullanılır. Özellikler, sınıfın
- Metotlara Erişim:
- Sınıfın diğer metotlarına erişmek için de
selfkullanılır. Bu, bir metot içinde başka bir metodu çağırmak için gereklidir. -
Python:
class MyClass: def __init__(self, value): self.value = value def print_value(self): print(self.value) def print_twice(self): self.print_value() # 'self.print_value()' ile aynı sınıftaki diğer metodu çağırır. print(self.value * 2)
- Sınıfın diğer metotlarına erişmek için de
Kodumuzdaki self Kullanımı
Kodumuzda self'i çeşitli yerlerde kullandık:[COLOR=rgb(147, 101, 184)]__init__[/COLOR]Metodu:
self.recognizer = sr.Recognizer()self.engine = pyttsx3.init()
- Bu satırlar, HetrAssistant sınıfının her bir örneği için bir Recognizer nesnesi ve bir pyttsx3 motoru oluşturur ve bunları
[COLOR=rgb(147, 101, 184)]self.recognizer[/COLOR]ve[COLOR=rgb(147, 101, 184)]self.engine[/COLOR]özellikleriyle ilişkilendirir.
- speak Metodu:
self.engine.say(text)self.engine.runAndWait()
- Bu metot,
[COLOR=rgb(147, 101, 184)]self.engine[/COLOR]özelliğini kullanarak verilen metni sesli olarak okutmak için pyttsx3 motorunu kullanır.
- listen Metodu:
with sr.Microphone() as source:audio = self.recognizer.listen(source)
- Bu metot,
[COLOR=rgb(147, 101, 184)]self.recognizer[/COLOR]özelliğini kullanarak mikrofon verilerini dinler ve sesli komutları metne dönüştürür.
- run Metodu:
if dogrulama == 0:if 'centilmenler kulübü' in komut:
- Burada
[COLOR=rgb(147, 101, 184)]self[/COLOR]kullanımı sınıfın içindekidogrulamave[COLOR=rgb(147, 101, 184)]komut[/COLOR]gibi diğer değişkenlere erişmek için değil, ancak[COLOR=rgb(147, 101, 184)]self.listen()[/COLOR]ve[COLOR=rgb(147, 101, 184)]self.speak()[/COLOR]gibi metotlara erişim sağlamak içindir.
Özet
self, sınıfın bir örneğine ait özelliklere ve metotlara erişmek için kullanılır. Sınıf içindeki metotları tanımlarken self, bu metotların sınıfın kendi örneği üzerinde çalışmasını sağlar. Özellikle nesne yönelimli programlamada, self bu tür erişim ve işlemler için temel bir yapı taşıdır.Evet, tahmin ettiğiniz gibi bu metni bana ChatGPT hazırladı fakat benim katkılarım da büyük.
pip Nedir, Nasıl Kurulur? (tıklayın)
Son düzenleme:






