Web Browser’a Speech Recognition ile Sesli Komut Bölüm2

Selamlar Arkadaşlar;

Önceki makalede kaldığımız yerden devam ediyoruz.

Aşağıda sizden gelen yoğun istek üzerine projenin esas amacını gösteren bir video bulunmaktadır. Umarım sizde benim kadar keyif alırsınız.

İsterseniz şimdi kodlamaya devam edelim.

recognizer_SpeechRecognized() methodunda kullandığımız komutlara devam ediyoruz.

what time is it” komutu ile aşağıda görüldüğü gibi o anki saat bilgisi çekilir. Ve makinaya söyletilir.

temperature“: Komutunda aşağıda görüldüğü gibi ilgili url’e watin(watin ile ilgili makaleye buradan ulaşabilirsiniz.) sayesinde gidilip ilgili alanlar pars edilerek İstanbul için anlık sıcaklık bilgisi çekilip yazdırılır ve söyletilir.

Get Money“: Komutunda aşağıda görüldüğü gibi merkez bankasına gidilip today.xml çekilerek xpath ile ilgili kurlar pars edilmektedir. Daha sonra sonuçlar hem yazdırılmakta hem de makinaya söyletilmektedir. Proxy olan serverlar için yazılması gereken kodlar pasif olarak aşağıda belirtilmiştir..

Get Movies“: Komutunda aşağıda görüldüğü gibi beyazberde.com’a gidilerek vizyondaki filmler segmesi clicklenip imageleri belli kriterlerde olan film isimleri listbox’a doldurulmaktadır. İşleme başlamadan önce yapılacağına dair bir sesli mesaj verilmekte ve işlem bitince gene işlemin bittiğine dair sesli bir mesaj ile kullanıcı bilgilendirilmektedir.

Open Yahoo“: Komutunda watin sayesinde explorer browser’da yahoo açılıp, search kısmına aşağıda görüldüğü gibi odaklanılır.

IPAD search“: Komutu ile explorerda açılan yahoo browser’ın search kısmına IPAD yazılıp, arama butonuna aşağıda görüldüğü gibi basılır.

Open Garanti” ve “Garanti Enter“: Komutlarında aşağıda görüldüğü gibi garanti bankası sitesine resmi giriş yapıldıktan sonra, müşteri numarası ve password alanları doldurulup giriş tuşuna basılır. Sonraki adımda Resim onay tuşuna basılır. Daha sonra cep telefonuna gelen mesaj sesli bir şekilde okununca garanti sayfasındaki ilgili mobile password alanı doldurulur ve “Garanti Enter ” komutu ile giriş tuşuna basılır. Böylece Garanti Hesap ekranına erişilir..

Open Bora“: Komutunda watin ile explorer açılıp borakasmer.com’a aşağıda görüldüğü gibi gidilir.

Kapat Ex” : Komutu ile açılan Explorer Browser kapatılır.

mouse down“,”mouse up“,”mouse left“,”mouse right” komutları ile mouse aşağı, yukarı, sola ve sağa hareket ettirilir.

stop” komutu ile hareket eden mouse durdurulur.

Push Button” ile mouse’un sol tuşu tıklanır.

Faster” komutu ile hareket eden mouse hızlandırılır.

İlgili kodlar aşağıda görüldüğü gibidir.

“Ex Max“: Komutu ile açılan explorer browser’ı ekranı kaplatılır.

Ex Min“: Komutu ile açılan explorer browser’ı aşağı alınır.

Ex Up“,”Ex Down“: Komutları ile açılan explorer browser’ında scroll aşağı ve yukarı hareket ettirilir.

Ex Stop“: Komutu ile açılan explorer browser’ında hareket eden scroll durdurulur.

Ex Up Faster” ve “Ex Down Faster“: Komutları ile  açılan explorer browser’ında yukarı veya aşağı hareket ettirilen scroll hızlandırılır.

Ex Back” ve “Ex Forward“: Komutları ile  açılan explorer browser’ında geri ve ileri sayfalara geçilir. Geçiş sırasında öğrenme fonksiyonu açık ise ilgili sayfalar için de tüm linkler öğrenilir. Öğrenme konusuna ilerde detaylı olarak değinilecektir.

İlgili kodlar aşağıda görüldüğü gibidir.

Geldik en önemli komutlara:

“Learn” : Hatırlarsanız speech recognition’da söylenen komutların var olan komutlar ile karşılaştırılıp bulanacağı bir kütüphane gerekmektedir. Bunun üzerinden gidersek açılan webBrowser daki bir link’in söylenince tıklanabilmesi için ilgili textin önceden kütüphane’ye eklenmesi gerekir. Böylece herhangi bir link’in text’i komut olarak sisteme geldiği zaman ilgili kütüpahaneden eğer linkler içerisin eşleşen olur ise tıklanarak ilgili adrese gidilir. Bunu için “Learn” komutunda açılan webBrowser’daki tüm linkler gezilerek aynı olan linklerin ve boş olan linklerin  birdaha eklenmemesi koşulu ile ilgili linklerin text’i Choices olarak belirlediğimiz nesnemize ordan da Grammer objectimize doldurulur. htable nesnemize text değeri için link’in text’i value değeri içinde link’in url’i aşağıda görüldüğü gibi kaydedilir.

“Don’t Learn”: İlgili webBrowser’da açık olan sayfadaki linkler unutturulur. Yani kütüphaneden aşağıda görüldüğü gibi silinir.

“Ex Learn”:  Aynı “Learn” komutu nasıl webBrowser için çalışıyor ise “Ex Learn“‘de watin ile açılan tüm Explorer browser içindeki linklerin texler’i öğrenilir ve library’e eklenir. Ayrıca diğer sayfalara geçişlerde de öğrenme işlemi her açılan explorer penceresi için Explorer_Learn() methodu ile otomatik olarak yapılır. İşleme başlamadan önce kullanıcı sesli olarak “Ok I am Learnnig” şeklinde bilgilendirilir.  htable nesnemize text değeri için link’in text’i value değeri için ise “Learn” komutundan farklı olarak boş “” string değeri aşağıda görüldüğü gibi atılır. Nedenini ileride tartışacağız.

“Ex Don’t Learn” : Aynı “Don’t Learn” komutunda olduğu gibi burda da webBrowser için değil açılan explorer browser içindeki öğrenilen linkler library’den çıkarılır ve gidilecek diğer explorer browser ekranlarında, ilgili sayfadaki linkleri öğrenme işlemi yapılmaz.  İşleme başlamadan önce kullanıcı sesli olarak “I Forget Everything” şeklinde aşağıda görüldüğü gibi bilgilendirilir.

“Ex Back” ve “Ex Forward” komutlarında geçiş yapılan sayfada duruma göre linklerin öğrenilmesi gerekiyor ise Explorer_Learn() methodu çağrılarak ilgili linklerin textleri library’e eklenir.İşleme başlamadan önce kullanıcı “Wait For Learning” şeklinde aşağıda görüldüğü gibi bilgilendirilir.

Shout Up“: Komutu makinanın her işlemden önce kullanıcıyı bilgilendirmesini aşağıda görüldüğü gibi sonlandırır.

Say Load“: Komutu makinanın her işlemden önce kullanıcıyı tekrardan bilgilendirmesini aşağıda görüldüğü gibi sağlar.

Run Notepad” ve “Kapat Notepad“:Komutları Notepad uygulamasının açılmasını ve kapatılmasını aşağıdaki görüldüğü gibi sağlar.

Run Paint” ve “Kapat Paint“: Komutları Paint uygulamasının açılmasını ve kapatılmasını aşağıda görüldüğü gibi sağlar.

Boya” ve “No Boya“: Komutları özellikle paint uygulamasında kullanmak üzere mouse’un sol tuşunun basılı kalmasını veya tuşun bıraklımasını aşağıda görüldüğü gibi sağlar. Sol tuşun basılı kalması ile paint uygulamasında çizim yapılabilir. Yine sol tuşun basılması bırakılarak çizim işlemine son verilebilir.

Son ve en önemli konu olarak aşağıda görüldüğü gibi söylenen komut eğer Library’deki hiçbir komut ile örtüşmüyorsa, öğrenilen linklerin textlerine bakılır. Eğer örtüşen linklerin value’leri var ise bu linkler “Learn” komutu ile doldurulmuşlardır ve windows form’daki webBrowser üzerindeki bir link’i, temsil etmektedirler. Buna göre windows form’daki webBrowser’ın url’ine söylenen link’in value değeri atanır ve böylece  ilgili adrese yönlendirilir. Eğer value değeri boş ise “Ex Learn” komutu ile dolmuş demektir. Buda açılan explorer browser’ın üzerindeki bir link’i işaret etmektedir. Linq query ile söylenen link text değerinden bulunup explorer üzerinde clicklenir. Ve browser ilgili url’e yönlendirilir. Eğer ilgili Linkin Text’i “Yahoo! Mail” veya “Mail” ise Mail sayfası için username ve password alanları doldurulup giriş tuşuna basılarak yahoo mail’in ana sayfasına erişilir. İlgili kodlar aşağıdaki gibidir.

Form1

Uygulamada yukarıda görüldüğü gibi 4 tane timer vardır. Gelin şimdi timerların ne işe yaradığına bakalım.

Timer1: Textbox2′ nin” Line” komutu ile textbox1 yanına gelmesi aşağıdaki görüldüğü gibi sağlar.

 Timer2: Textbox2′ nin “Rahat” komutu ile textbox1 altına hareket etmesini aşağıda görüldüğü gibi sağlar.

 Timer3: “Mouse Up“,”Mouse Down“, “Mouse Left” , “Mouse Right“, “Faster”  ve “Stop” komutlarında mouse’ın belirtilen komut yönünde hareket etmesini, hızlanmasını veya  durmasını aşağıda görüldüğü gibi sağlar.

 Timer4: Windows Form’daki webBrowser’da yada açılan explorer browser’ı üzerinde “Scroll Down“, “Scroll Up“,  “Scroll Stop“, “Faster Down“, “Faster Up“, “Ex Down” , “Ex Up“, “Ex Up Faster” , “Ex Down Faster” ve “Ex Stop” komutları ile scrollun aşağı, yukarı hareket etmesini, hızlanmasını veya durmasını aşağıda görüldüğü gibi sağlar.

Son olarak Windows Form’daki webBrowser ilgili Url’e yönlenip yükleme işlemi tamamlandığında koşula göre ilgili linklerin öğrenilmesi ve kullanıcıya bilgi verilmesi gibi işlemlerin yapıldığı kısım aşağıdaki gibidir.

Sonuç olarak yukarıdaki örnekde de görüldüğü gibi ses teknolojileri ile birlikte bilgisayarlarla olan etikleşim bambaşka bir boyut kazanmaktadır. İlerki bir dönemde klavye, mouse veya digital write pen gibi birçok  araç ortadan kalkacaktır. Yerini hareket ve sesi algılayan kinect gibi toolar yer alacaktır.

Siz de bu teknolojiyi daha farklı nasıl kullanabileceğimizi ve bize olan faydalarını düşünüp, benimle paylaşırsanız sevinirim.

Yeni bir makalede görüşmek üzere hoşçakalın.

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

41 Cevaplar

  1. murat dedi ki:

    Hocam Elinize Sağlık;

    Yok artık diyorum başka birşey diyemiyorum. Daha nereye bu teknoloji götürülebilir bilmiyorum. Ama siz herhalde bir 10 yıl ileriye götürmüşünüz :)

  2. ömer dedi ki:

    Hocam Elinize sağlık;

    Ben de lambadan sonra bu kadarını beklemiyordum. Burdaki arkadaşlar da tabiri caizse dilini yuttu. En kısa zamanda kodları tek tek yazıp bizde bunu deniyeceğiz. Şu ana kadar izlediğim en baba yazlım üzerine olan teknoloji videolarından biri idi. Her türlü eventinize ben ve arkadaşlarım katılmak isteriz. İyi ki varsınız.

  3. veli dedi ki:

    Yok artık lebron james hocam.
    Elinize sağlık . Daha ne denebilir ki:)

  4. Elekber dedi ki:

    Hocam, cok guzel. Su projenin kaynak dosyalarni (vs) paylasa bilirmisiniz ? isterseniz mailime yollayin :) Tesekkurler

  5. Alekber dedi ki:

    Hocam, çox güzül bir çalışma. Lütfen, bu projenin kaynak dosyalarını (visual studio) paylaşa bilirmisiniz? Mailime-de yollaya bilirsiniz. Bazı sorunlardan dolayı, kodları tam olarak yazamıyorum. Teşekkür ederim.

    • borsoft dedi ki:

      Selam Alekber,
      Baya bir zaman önce idi. Ama en kısa zamanda bakarım. Tam düzgününü bulur isem sana dönerim..

      • Alekber dedi ki:

        Lütfen hocam, kaynak dosyalarını paylaşırsanız yada mailime yollarsanız çox iyi olur. Çok ihtiyyacım var, buna. Digerleri olmazsada olur, bana gerekli olan asıl 2 şey var. 1. Sesli komut ile, mouse(cursoru yani)-yi kontrol etmek. 2. Sesli komut ile, Web Browseri kontrol etmek.

        • borsoft dedi ki:

          Selam Alekber;
          Projeyi malesef şu anda paylaşamıyacam. Çünkü bendekinde de sorun var. Ama sirket sunucularında yedeği vardı. Ordan bulunca sana mail atıcam…

          İyi çalışmalar.

          • Alekber dedi ki:

            Lütfen hocam, lütfen…. Söyledigim gibi, çox ihtiyacım var buna. Sabırsızlıkla bekliyorum hocam. Teşekkür ederim, ilginiz için.

  6. Alekber dedi ki:

    Hocam merhaba. Ne oldu, buldunuzmu?

    • borsoft dedi ki:

      Selamlar,
      Malesef ses Dll’ini paylaşamıyacağım. Halen hakları şirket üzerine kayıtlı imiş.

      Kusura bakmayın. Zamanım olduğu zaman yeni bir tane geliştirip, ilk sizinle paylaşacağım:) Olmadı siz de birtane yazın. Bana istediğinizi sorabilirsiniz.

      İyi çalışmalar.

      • Alekber dedi ki:

        Hocam, bana ses DLL-i gerek diilki )) Ben, sesli komutları vermeyi filan hepsini yapdım. İngilizcede anlıyor beni güzel ve kodladığım şekilde işini görüyor. Tek yapamadığım 2 şey var.Şu ki, ses ile mouseyi (cursornu – sizin videonuzdaki gibi) kontrol etmek istiyorum, ama yapamıyorum. Birde, ses ile Web Browseri kontrol edemiyorum(sizin videodaki gibi, proqrama bi veb brovser gömemiyorum, vs-nın kendi brovseri hariç). Bu 2-si gerek bana yalnızca. Nasıl yapayım? :) Teşekkürler.

        • borsoft dedi ki:

          Selam Alekber;

          Bana mail atarsan ona dönüş yaparım. Aslında makalede hepsini anlatmıştım:)
          İyi çalışmalar.

  7. Alekber dedi ki:

    Evet hocam, anlatmışsınız. Ama, malesef yinede yapamadım. Bana sadece, o sölediklerim olan bir proje gerek. Öyle bişeyin, kaynak dosyalarnı istiyordum yani.
    Mailinizi bilmiyorum.

  8. Alekber dedi ki:

    Merhaba hocam.
    Hocam, mail adresinize mesaj yazdım. Baktınızmı? Sabırsızlıkla bekliyorum.

  9. Alekber dedi ki:

    Hocam merhaba. Ne oldu hocam? Geri donusunuz olmadi :((

  10. Alekber dedi ki:

    Selam, Bora hocam. Lütfen, bi cevab yazın zahmet olmazsa. Hocam, bekliyorum projeyi. Zaman ayırırmısınız lütfen. :((

    • borsoft dedi ki:

      Selam Alekber;
      Yeni makina kurdum. Anca disklerden kodlari alip alip atiyorum. Bulunca aticam. Yarin ozellikle ariyacagim.

      Iyi aksamlar.

      • Alekber dedi ki:

        Tamam hocam. Lütfen, çok önemli. Söyledigim gibi, digerleri gerek deyil. Sadece, ses ile mouseyi (cursornu – sizin videonuzdaki gibi) kontrol etmek ve ses ile Web Browseri kontrol etmek (sizin videodaki gibi, proqrama bi veb brovser gömemiyorum, vs-nın kendi brovseri hariç). Bu 2-si gerek bana yalnızca. Teşekkür ediyorum hocam.
        – Hocam, ses ile, Web browseri kontol etmek olmazsada olur. En önemlisi, ses ile mouseyi (cursornu – sizin videonuzdaki gibi) kontrol etmek gerek bana.

  11. Alekber dedi ki:

    Selam, Bora hocam. Nasilsiniz?. Hocam, aradinizmi bu gun? Bulabildinizmi birsey? :)

    • borsoft dedi ki:

      Selam Alekber. Buldum ama calismadilar:( Sonucta Windows Kernel kullaniyorlar.. Bu da windows 10 …

      • Alekber dedi ki:

        Hocam cok iyi. Siz o dosyalari bana yollaya bilirmisiniz? Lütfen. Bende Windows 8.1. Bir problemi olmaz bence. Windows 7-de calissa bile yeter.Ne olursa olsun, siz bulduklarinizi yollayin zahmet olmazsa. Bu arada, hocam çok sevindim buldugunuz için.

  12. Alekber dedi ki:

    Hocam, merhaba. Siz bulduklariniz bana yollayarmisiniz? Lutfen. Calismazsada bana yeter. Bana zaten windows 10-da calismasi gerek deyil.

  13. Alekber dedi ki:

    Hocam, merhaba. Siz bulduklariniz bana yollayarmisiniz? Lutfen. Calismazsada bana yeter. Bana zaten windows 10-da calismasi gerek deyil. Bekliyorum hocam.

  14. Alekber dedi ki:

    Bora hocam, birdaha merhaba. Lutfen, bi kez bakin. Hocam, buldugunuz dosyalari yollaya bilirmisniz? Lutfen.

  15. Alekber dedi ki:

    Bora hocam, birdaha merhaba. Lutfen, bi kez bakin. Hocam, buldugunuz dosyalari yollaya bilirmisniz? Lutfen. Benden baska herkes ile ilgileniyorsunuz.

  16. Ali Yaöam dedi ki:

    Eline Sağlık Hocam :)

  17. can karalar dedi ki:

    çok güzel helal olsun

    • borsoft dedi ki:

      Selam Can,

      Çok teşekkür ederim Can. Bu bir makaleden ziyade aylar süren bir çalışmanın eseridir. Tek amacı özürlü çocuklara bilgisayar kullandırabilmektir ve tamamen gönül işidir.
      Sadece böyle bir yazı ile de başarıya ulaşmış bir işi, paylaşmak istedim.

  18. Yasin dedi ki:

    hocam size bir sorum olucak kendi kodladığım elimde az komutlu olsa da bir program var bilgisayardan istediğim dosyayı açtırıyorum kelimelerimin karşılığını da alıyorum fakat sizin gibi internette gezinemiyorum bu konu hakkında yardımcı olurmusunuz kod mantığını hala anlamış değilim verdiğiniz kodları da anlamadığım için kullanamıyorum yardımcı olursanız çok sevinirim

    • borsoft dedi ki:

      Selam Yasin,

      Öncelikle yaptığın adımlar için seni tebrik ederim.
      Benim kodları ancak sanırım birebir anlatmamdan başka bir yol görülmüyor. Uzaktan, anlamadığın kodları anlatmak çok zor gibi :)

      İyi çalışmalar.

      • Yasin dedi ki:

        Eğer birebir verme şansınız varsa oda kabulüm. :) Ama bana en azından bir yol gösterirseniz gerçekten çok işime yarayacak hani bana buraya buraya odaklan demeniz yeterli hocam

  19. borahan dedi ki:

    Bora hocam selamlar,
    Türkçe karakterlerde sorun yaşanıyor ve her zaman algılamıyor alternatif olarak ne düşünebiliriz. Mesala Çiftçi, Çekoslavakya gibi okunması ve algılanması zor olanlarda ne gibi alternatiflere yönelebiliriz.

    • borsoft dedi ki:

      Selamlar,
      Maalesef bu kullandığın kütüphane ile alakalı. Türkçe’ye daha uygun milli kütüphaneleri deniyebilirsin. Ama ücretliler haberin olsun :)

      İyi çalışmalar.

  20. elif dedi ki:

    Merhaba ie’ yi nerede tanımladınız acaba ne oldugunu anlayamadım bir türlü

    • borsoft dedi ki:

      Selamlar,
      Tanımlamadım WatIn ile birlikte geliyor..

      • eli dedi ki:

        Ben watin core’u ekleyince form kelimesinin altını kırmızıyla çiziyor. Bunu nasıl düzeltebilirim peki yardımcı olabilir misiniz?

  21. berk dedi ki:

    hocam merhaba, bilgisayarım klasörünü nasıl açtırabilirim

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.