Web API Dünyası | Speech API
Yeni bir yazı serisi ile herkese merhaba. Bu yazı serimde, Web tarafında denemekten keyif aldığım ve geliştirme yaparken kullanabileceğiniz bazı API’lardan bahsedeceğim.
Serimizin ilk konuğu ses-yazı dönüşümleri için bize yardımcı olabilecek Web Speech API. Web Speech API’dan bahsetmeden hemen öncesinde Web API’nın tarayıcılarımızın yetenekleri olduğunu ve JavaScript ile sınırlamamız gerektiğini hatırlatmakta fayda var. Fakat biz yine de örneklerimizi JavaScript temel alarak inceleyeceğiz.
Web Speech API ile girdilerimiz artık sadece metinlerden değil, seslerden de oluşabiliyor. Yani, ses ile iletebileceğiniz bir komutla aksiyon aldırabilir ya da varolan bir metnin sese dönüştürülmesini sağlayabilirsiniz. Bu sayede çok daha interaktif web içerikleri oluşturabilirsiniz. Bu API’yi sesli dönütlerle görme engelli bireyler için web platformunuzu zenginleştirmek için de kullanabilirsiniz.
Web Speech API’dan temelde az önce bahsettiğim iki beklentimiz bulunmaktadır. Web Speech API da bu beklentimizi iki ana interface olarak basit bir mimari ile karşılıyor. Şimdi detaylarını inceleyeleyim:
Speech recognition
Ses olarak verilen girdiyi metne dönüştürmek için kullanılır. Kısacası mikrofon ile söylenilen kelimelerin metne dönüştürülmesini sağlar. SpeechRecognition sınıfından üretilen yeni bir nesne ile kullanılır. Temel method ve event’leri şu şekildedir:
- start: Sınıfımızı ayağa kaldırmak ve mikrofonu aktif hale getirmek için kullanılır. Bu adımda, tarayıcınız son kullanıcıdan mikrofon kullanım izni talep etmektedir.

- onresult: Event handler olarak karşımıza çıkan onresult, stop method’u çağırıldıktan sonra tetiklenir ve sesli girdileri parametre olarak alır. Aşağıdaki obje modelinde tüm prototipleri görebilirsiniz. results dizisi içerisinde bulunan transcript değeri kullanıcıdan alınan sesli girdinin metin haline dönüştürülmüş formatını verir.

- onspeechend: Start ile başlayan dinleme eylemi kullanıcının konuşmasının bittiği algılandığında yapılacak işlemler için bu handler kullanılır. Biz aşağıdaki örneğimizde bu fonksiyonda stop method’unu tetikledik.
- stop: Start method’uyla ayağa kaldırılan sınıfın sonlanmasını sağlayan ve browser tarafına mikrofonla görevin tamamlandığını belirten method’dur.
Speech synthesis
Verdiğimiz metinleri, talep ettiğimiz dilin telaffuz kurallarına göre seslendirilmesi için kullanılır. speechSynthesis sınıfından türetilen nesne ile kullanılır. speak, pause, resume, cancel gibi temel medya oynatıcı method’ları bulunmaktadır.
Önemli bir detay olarak; SpeechSynthesisUtterance sınıfından utterance nesnesi oluşturulur. Bu nesne, okunacak metnin özelliklerinin belirlenmesini sağlar. Örneğin; hangi dilde telaffuz edileceğini belirtmek için lang key’i kullanılır. Tüm utterance key’leri için buradan yararlanabilirsiniz.
listen ve speak fonksiyonları için örnek kod blokları:
Bu yazımda sadece temel method ve event’lere yer vermek istedim. Gelişmiş diğer özellikler için MDN üzerinden inceleme yapabilirsiniz. Ek olarak, tarayıcı desteği tarafında oldukça mutlu eden bu API için Firefox tarafı SpeechRecognition tarafında destek vermeyerek bizi oldukça üzüyor.
Bu metodlar kullanılarak geliştirmiş olduğum translate uygulamasına da bu repository üzerinden erişebilir ve yorumlarınızı iletebilirsiniz.
Vakit ayırdığınız için teşekkürler.