Google Speech-To-Text API

Herkese Merhabalar,

Mobiler.dev içerisinde yayınlanan bu mobi içeriğinde sizlere Android platformunda Google’ın altyapısından yararlanarak sesli olarak söylediklerinizi nasıl yazıya çevirebileceğinizden bahsetmek istiyorum.


Google'ın Speech-To-Text API'si eş zamanlı oluşturulan ses verileri tanıyarak, tüm sesi işlendikten sonra sonuçları text olarak döndürebiliyor.



Kullanım isteğinize göre iki ayrı yöntemden bahsetmek istiyorum. Bu iki yöntem arasındaki temel fark ise birinde ses okumayı başlattığınızda Google ikonu içeren dialog penceresi sizi karşılarken diğerinde ise daha özgürsünüz. İsterseniz kendinize özgü bir dialog penceresi oluşturabilir veya bir Toast uyarı mesajıyla dinlemenin başladığını belirtebilirsiniz. Yönteminizi yapacağınız projeye göre seçebilirsiniz.


Şahsen Google'a hazır dialog hizmetinden dolayı çok teşekkür etsek de uygulamamda daha özgür olmak için kendi tasarımımla dialog penceresi oluşturma taraftarıyım. Ancak projenizin küçük bir kısmı için kullanacaksanız ilk yöntemin kodlarının daha basit olduğunu söyleyebilirim.


Şimdi bu iki yönteme dilerseniz daha yakından bakalım.


1 - Google Dialog ile Ses Tanıma


ADIM 1 - Tanıma İşlemini Buton'a Bağlama


Ses dinlemeyi ve işlemeyi speak() metoduna yaptırarak bu metodu b1 butonunda çağırıyoruz.



ADIM 2 - Dinleme Penceresi için Intent Tanımlama


Şimdi speak metodunun içeriğine bakalım.



Bu metodun içerisinde ilk olarak kullanıcıdan konuşma beklenir ve bunu bir konuşma tanıyıcısı aracılığıyla gönderecek bir Intent oluşturulur.


Sonrasında dil modelini Serbest Dil Modeli olarak veriyoruz. Bu model serbest biçimli konuşma tanımaya dayalı bir dil modelidir. İsteğinize göre başka dil modellerini kullanabilirsiniz. Detaylara buradan ulaşabilirsiniz.


6. satırda dil ataması yapıyoruz. Locale.getDefault, yereldeki dili döndürür.(tr_TR)

Konuşma penceresi açıldığında görünecek yazıyı belirliyoruz.


ADIM 3 - Dialog'dan Dönen Verileri İşleme


Gerekli ayarları yaptıktan sonra bu intent'i başlatmak için startActivityForResult metodunu çağırıyoruz. Bu aktivite sonrası veri alacağımız için startActivity yerine bu metodu çağırdık.