Türkçe Sohbet Eden Chatbotlar

09 March 2017

Günümüzde pek çok teknoloji firması, Iron Man filmindeki Jarvis gibi ses komutlarıyla çalışan bir yardımcı yapma gayretinde. Eskiden bu tip yazılımların Türkçe desteği olmasa da artık yavaş yavaş Türkçe versiyonları gün yüzüne çıkıyor. Bunun en güzel örneği Apple'ın Siri'si. Türkçe'yi çok iyi bir şekilde algılayıp cevap verebiliyor.

Bu tip botların dünyada yarattığı en büyük endişe maalesef gizlilik ihlali. Çünkü bu yazılımlar konuşmalarınızı internet üzerinden bir yere gönderip cevabını size geri gönderiyor. Yani konuşmalarınız aslında bir yerlerde kayıt altında tutuluyor. Özellikle sizi sürekli dinleyen yazılımların verdiği endişe çok büyük. Örneğin Siri sadece "Hey Siri" derseniz ya da Google "Ok Google" derseniz komutlarınızı işliyor fakat bu cümleleri yakalayabilmesi için sizi her zaman dinlemeli. Bu yaptığı dinlemeleri nasıl değerlendiriyorlar bu bir soru işareti. Sürekli dinlemeyi deaktif etseniz bile bunun gerçekten deaktif olduğundan emin olmak güç.

Bu tip endişeler yüzünden bazı geliştiriciler açık kaynak kodlu yazılımlar geliştirdi. Bunların en popüleri Jasper projesi. Kodlarını görebildiğiniz için konuşmanızın siz istemedikçe bir yerlere gönderilmediğinden emin olabiliyorsunuz. Fakat ne yazık ki Türkçe desteği bulunmamakta. Hobi olarak bunun Türkçe halini yapmak istedim. Açık kaynak kodlu Türkçe konuşan bir Jarvis'in pek çok kullanım alanı olabilir diye düşündüm. Konuşmalarımızın üçüncü partilere yollanmayacak olması da bu kullanım alanını genişletebilirdi.

Fakat Türkçe konusunda yaşadığım ve henüz aşamadığım bazı zorluklar mevcut. Bir botun sizin sesinizden emir alıp, bu emri yerine getirip sonra konuşarak bilgi vermesi için basitçe şu adımları gerçekleştirmesi gerekiyor.

  1. Kullanıcıdan aldığı sesi işleyip yazıya dönüştürmeli (Speech-to-text)
  2. Yazıdaki denilen şeyi algılayıp ona göre gerekli işlemleri yapmalı
  3. Sonuç olarak ürettiği yazıyı tekrar ses olarak geri dönmeli (text-to-speech)

Türkçe dilinde yazıda denilen şeyi algılama üzerine bir sürü yapılmış çalışma mevcut. Benim ROMTU projem de aşağı yukarı benzer bir şey yapıyordu. Bir yere veri göndermeden offline yapılması teoride mümkün. Ancak pratikte yine uzak bir servise gönderip işlenmesi daha makul olmakta.

Türkçe bir yazıyı sesli bir şekilde okuma işi de kolay. Bunun için gTTs kütüphanesinden faydalandım. Bir yere veri göndermeden yapmak yine mümkün oluyor.

Fakat Türkçe speech-to-text şu an için büyük problem. Açık kaynak kodlu bir çalışma bulamadım bununla ilgili. Google'ın bu işi gerçekleştiren bir API'ı mevcut. Onu kullanmak zorunda kaldım. Bu API oldukça başarılı çalışsa da ses dosyasını Google serverlarına gönderip, yazı karşılığını alıyoruz. Yani sesimiz yine üçüncü parti bir yere ulaşıyor.

Buna henüz bir çözüm bulabilmiş değilim. O yüzden kodları henüz yayınlamayacağım. Ancak bu projeyle uğraşırken Twitch'de seebotschat isimli bir kanala denk geldim. Bu kanalda birisi iki Google Home cihazını yan yana koyarak sohbet ettiriyordu. Türkçe olarak böyle bir çalışma yapıldı mı diye araştırdım ve bir şey bulamadım. En azından şimdilik böyle bir şey yapıp video çekeyim diye düşündüm.

Şu an var olan gizlilik problemini çözer çözmez projeyi açık kaynak kodlu olarak yayınlayacağım. O zamana kadar aşağıdaki videoyla eğlenebilirsiniz.