from speech_recognition import *
from Response import Responses, readprinted
openingText = 'Merhaba nasıl, yardımcı olabilirim?'
def speech_recognize():
with Microphone() as source:
voice = ''
try:
print("Şuan dinleniyor.")
voice = Recognizer().recognize_google(Recognizer().listen(source), language='tr-TR')
except UnknownValueError:
print("Söylediğinizi anlayamadım.")
except RequestError:
print("Bağlantı hatası! Lütfen internet bağlantınızı kontrol edin.")
return voice
def getResponse():
voice = speech_recognize()
response = Responses()
print(voice)
response.getInput(voice)
return voice
print_read(openingText)
getResponse()
Python'da speechrecognition kütüphanesi var. Terminale "pip install speechrecognition" yazman yetiyor yüklemek için. Kullanımı için ufak bir örnek atayım. Örnek bana ait.
Not: Örneğe ek olarak gtts kullanıyorum. print_read() fonksiyonu bir texti yazdırıp daha sonra okuması için oluşturduğum bir fonksiyon. Yine ek; Responses sınıfı var. Responses sınıfı ise cevapları tutuyor. Örneğin şunu google'da ara, yada bir uygulamayı aç gibi. Yani daha geliştirilebilir tabii ki. Bu kendi yöntemim, fakat örnek olması açısından atıyorum zaten.
Python:from speech_recognition import * from Response import Responses, readprinted. openingText = 'Merhaba nasıl, yardımcı olabilirim?' def speech_recognize(): with Microphone() as source: voice = ''. try: print("Şuan dinleniyor.") voice = Recognizer().recognize_google(Recognizer().listen(source), language='tr-TR') except UnknownValueError: print("Söylediğinizi anlayamadım.") except RequestError: print("Bağlantı hatası! Lütfen internet bağlantınızı kontrol edin.") return voice. def getResponse(): voice = speech_recognize() response = Responses() print(voice) response.getInput(voice) return voice. print_read(openingText) getResponse()
Bu konuda daha önce bir çalışma yapmadım ama mantık yürütebiliriz. Cümleleri, kelimeleri hatta harfleri tanıtmadan önce sesleri tanıtmanız gerekiyor. Her sesin bir frekansı vardır. Bunları ilk önce bir ses stüdyosunda teker teker söyleyip incelemeniz lazım. Yani mesela 'a' dediğiniz zamanki dalga ile 'b' dediğiniz zamanki dalga farklı olacaktır, bunların arasındaki farkları saptayıp hepsini programa eklemeniz gerekiyor. Tabii söylenen sesin dalgalarını çıkartabilmek için Python'da ayrı bir işlem yapmanız gerekir. Bunun için ses kütüphaneleri araştırabilirsiniz.
Sesleri saptadıktan sonra 'a' diyerek bir deneme yapın. Dalgaları benzer olursa program bunun 'a' sesi olduğunu bilecektir. Tüm sesleri harflerle eşleştirdikten sonra da kelimelere geçebilirsiniz. Art arda harfler söyleneceği için sesleri 'be' değil de 'b' diye kaydetmiş olmanız gerekiyor. Algılanan kelime ile normalde olması gereken kelime aynı olmayabilir. Örneğin 'merhaba' denmiştir ama algılanan 'merhaba'dır. Bu zaman da kelime veri tabanından algılanan kelimenin araması yapılıp eğer böyle bir kelime yoksa en yakın halini alabilir.
Kelimelerden sonra da aradaki boşlukları ayarlayarak cümleleri algılatabilirsiniz. İşte ses algılamanın mantığı.
Python'da bu nasıl yapılabilir bilmiyorum ama denemeye değer.
Bu konuda daha önce bir çalışma yapmadım ama mantık yürütebiliriz. Cümleleri, kelimeleri hatta harfleri tanıtmadan önce sesleri tanıtmanız gerekiyor. Her sesin bir frekansı vardır. Bunları ilk önce bir ses stüdyosunda teker teker söyleyip incelemeniz lazım. Yani mesela 'a' dediğiniz zamanki dalga ile 'b' dediğiniz zamanki dalga farklı olacaktır, bunların arasındaki farkları saptayıp hepsini programa eklemeniz gerekiyor. Tabii söylenen sesin dalgalarını çıkartabilmek için pythonda ayrı bir işlem yapmanız gerekir. Bunun için ses kütüphaneleri araştırabilirsiniz.
Sesleri saptadıktan sonra 'a' diyerek bir deneme yapın. Dalgaları benzer olursa program bunun 'a' sesi olduğunu bilecektir. Tüm sesleri harflerle eşleştirdikten sonra da kelimelere geçebilirsiniz. Art arda harfler söyleneceği için sesleri 'be' değil de 'b' diye kaydetmiş olmanız gerekiyor. Algılanan kelime ile normalde olması gereken kelime aynı olmayabilir. Örneğin 'merhaba' denmiştir ama algılanan 'meraba'dır. Bu zaman da kelime veri tabanından algılanan kelimenin araması yapılıp eğer böyle bir kelime yoksa en yakın halini alabilir.
Kelimelerden sonra da aradaki boşlukları ayarlayarak cümleleri algılatabilirsiniz. İşte ses algılamanın mantığı.
Python'da bu nasıl yapılabilir bilmiyorum ama denemeye değer.
En baştan başlayıp Google ve benzeri şirketlerin yüzlerce, belki de binlerce mühendisle yıllarını harcadığı kütüphaneden yararlanmamak akıl mantık işi değil. AI train gerekiyor. AI train için tek bir model de yeterli değil ayrıca. Farklı modeller sunman gerekiyor.Tamam teşekkürler fakat ben zaten o kütüphaneyi kullanmak istemediğimi belirttim o şekilde yapmak istemiyorum ama benzer bir şey yapmak istiyorum.
Bir yapay zekanın istenileni bulabilmesi için önce onu tanıyor olması gerekir. Tam da bu noktada makine öğrenimi kavramı ortaya çıkar. İşte bu nedenle, bir makinenin önce istenileni öğrenmesi onu tanıması gerekir ancak bu tanıma işlemini bilgisayar sistemleri, bizdeki tanıma işlemlerini gerçekleştiren dokunma, görme, koklama vd. gibi fonksiyonlarımız yerine kendisinin duyu organları olan Binary (İkilik Sistem) ile yapar. Nasıl mı? Hemen örnek verelim;
Örnek verecek olursak arabaya bindiğinizi ve sesinizi tanıtmak istediğinizi düşünün. Tuşa bastınız ve size "Merhaba" kelimesini söylemenizi istedi. Merhaba dediğinizde bu sesin öncelikle frekansını, dalga boyunu ve var ise başka bir çok parametresini kelime işleme mimarilerinde olduğu gibi vektörler haline dönüştürür. Bunları 0 ve 1'ler halinde üzerinde bulunduğu bilgisayarda bir veri setine aktarır. Bu makine öğrenimi kısmıdır, bir kaç farklı kelime "Merhaba", "Günaydın", "Bu gün hava nasıl?" gibi birden çok kelime kullanılmasının temel nedeni, sapmaları ve gürültü oranını ortaya çıkarmaktır. Sapma ve Gürültü nedir bundan bahsedelim; Sapma ve Gürültü basit tabirle 20 kez "Günaydın" dediğinizde her birinin birbirinden farklı olması sapma, her birinin anlaşılabilirlik oranı ise Gürültü olarak adledilebilir. Bu oranın belirlenmesinin nedeni ise siz arabaya binerek "Merhaba" dediğinizde gürültü ve sapma değeri olmaz ise, yapay zeka ilk kayıttaki söylediğinizin %100 aynısını söylemenizi ve sesinizin aynı frekans ve dalga boyuna var ise diğer parametlere sahip olmasını bekleyecektir. İşte bu yüzden yapay zeka, sapma ve gürültü oranlarını da ekleyerek bir kaç farklı kelimeden sesinizin 0 ve 1'lerini oluşturur.
Sonrası mı? Sonrası çok basit. Bir sonraki arabaya binişinizde Merhaba dediğinizde yapay zeka, gelen sesin frekans, dalga boyu ve var ise diğer parametrelerine bakar ve mevcuttaki veri setinde bulunan 0 ve 1'ler ile uyuyor ve sapma ve gürültü oranları ile uyumlu ise "Geldi yine bizim homosapiens diyerek" sesinizi tanımış olur.
Evrim Ağacı'ndan alıntı yapmadım ama demek istediğimi güzelce açıklamışÜstteki alıntının kaynağı Evrim Ağacı forum gönderisi: Ses tanıma sistemi nasıl çalışır? | Soru & Cevap - Evrim Ağacı Kısa sürede bulabildiğim tek Türkçe kaynaktı. Eğer İngilizce kaynak istersen daha fazlası da mevcut fakat bu bedava amelelikten fazlası değil.
Alıntı derken sizden bahsetmiyordum.Evrim Ağacı'ndan alıntı yapmadım ama demek istediğimi güzelce açıklamış
Teşekkür ederim.
En baştan başlayıp Google ve benzeri şirketlerin yüzlerce, belki de binlerce mühendisle yıllarını harcadığı kütüphaneden yararlanmamak akıl mantık işi değil. AI train gerekiyor. AI train için tek bir model de yeterli değil ayrıca. Farklı modeller sunman gerekiyor.
Üstteki alıntının kaynağı evrim ağacı forum gönderisi: Ses tanıma sistemi nasıl çalışır? | Soru & Cevap - Evrim Ağacı kısa sürede bulabildiğim tek Türkçe kaynaktı. Eğer İngilizce kaynak istersen daha fazlası da mevcut fakat bu bedava amelelikten fazlası değil.
Hangi yapay zekayı kullanacaksan onun dökümanlarına bakman gerekiyor. AI konusunda çok bilgili değilim. @bitwise hocam bu konularda daha bilgili. Ona sormakta fayda var.Tamam o AI model dokümanını vesaire nereden bulabilirim veya nereden öğrenebilirim hangi kütüphaneleri öğrenmeliyim?