Python'da "speech recognition" nasıl yapılır?

Litenium

Centipat
Katılım
19 Temmuz 2022
Mesajlar
643
Çözümler
8
Speech recognition gibi bir modül kullanmadan kendi speech recognition kütüphanemi / modülümü nasıl yapabilirim? (gerekirse tüm kelimeleri kendim yazabilirim böyle yapılan bir içerik görmüştüm kaybettim o yüzden burada soruyorum ve yapılması gereken şeyleri söyleyin çok uğraştırır gibi şeyler söylemeyin)
 
Son düzenleyen: Moderatör:
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 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.
 
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()

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.

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.

Tamam bakacağım.
 
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.
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.
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.

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.

Ü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.
 
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.

Tamam o AI model dokümanını vesaire nereden bulabilirim veya nereden öğrenebilirim hangi kütüphaneleri öğrenmeliyim?
 
Iki buyuk component bir arada:
SR ( Speech Recognition )
NLP ( Natural Language Processing )

Ikisi de deep learning - neural network yapisiyla ogretiliyor. Turkce modelleri var midir bilmiyorum Python icin, ancak oldugunu dusunuyorum.

Soylenileni yaziya dokecek ( SR ) , NLP de bunu anlayarak uygun cevabi verecek ya da eslestirecek token'lar ile.

Kelimeleri yazmak mesele degil, train etmek mesele. Yani hecelerin, kelimelerin soylenilmis halinin datasi uzerinde train etmek ve surekli duzeltmek gerekiyor.

Surekli film + altyazi kombosuyla beslemek gibi dusunebilirsin SR'yi, her hecenin, her kelimenin milyonlarca defa farkli aksan ve kontektslerde vurguyla soylenisini duymali ve buna gore modeli olusturmali.

 

Geri
Yukarı