Php İle Google TTS Servisini Kullanmak
Google çeviri sistemi, uzun bir süredir kendi içerisinde Türkçe Konuşma Sentezleme (TTS) hizmeti vermekte. TTS (Text-to-Speech) sistemleri yazılı metni ses e dönüştüren yazılımlardır. özellikle bu sistemler okuma güçlüğü çeken kişilerin, yazılı metni duyarak anlamalarına sağlar. Google çeviri'nin tts sistemini kullanmasının asıl amacı yabancı dillerin seslerini duyarak daha kolay anlamamızı sağlamasıdır. kendi adıma özellikle ingilizce kelimelerin teleffuzlarını duymak istediğimde ilk tercihim google çeviri'dir.
buradaki çalışmamızda google tts sistemine yapacağımız curl sorguları göndererek ses dosyalarını sunucumuza indireceğiz. normal şartlarda google tts servisi sadece 100 karakterlik metin isteklerine cevap veriyor. çalışmamızda 95 karakterden düşük metinlerin dönüştürmesinde tek bir sorgu, 95 in üzerindeki metinlerin dönüştürülmesinde ise metini ortalama 80 karakterlik parçalalara bölüp her biri için (while döngüsü içinde) ayrı sorgu göndereceğiz. while döngüsü içerisinde elde ettiğimiz veriyi aynı dosyanın içerisine toplayarak tek bir dosya haline oluşturulmasını sağlıyacağız. normal şartlarda 2 mp3 dosyasını direkt olarak birşeştiremeyiz (ffmpg sınıfına ihtiyaç duyabiliriz) fakat google tts servisinin oluşturduğu mp3 dosyalarının başlık kısmında dosyanın sadece dosyanın mpg olduğunu belirten 4 karakterli kısım var. google tts servisinden indirilen verinin direk olarak birleştirilmesi sonucunda dosyayı oynatan tarayıcı yada mp3 çalar bu kısmı atlayabiliyor. mantığı daha iyi anlayabilmek için aşağıdaki tabloyu inceleyebiliriz. kırmızı alanlar dosya başlıklarını belirtiyor.
google sunucusundan verileri çekmek için curl kütüphanesini kullanıyoruz . çalışmamızda oluşturduğumuz sorguların mantığını aşağıdaki görüntüden anlayabiliriz.
gördüğümüz gibi google çeviri sayfasındaki tts tuşuna bastığımızda sayfa sunucuya görüntüdeki gibi bir komut gönderiyor.
http://translate.google.com.tr/translate_tts?ie=UTF-8&q=merhaba%20d%C3%BCnya&tl=tr&total=1&idx=0&textlen=13&prev=input
"ie" parametresi karakter setini, "q" parametresi urlencode edilmiş metni, "tl" parametresi çevirilecek dili, "textlen" gönderilen metnin uzunluğunu, "total" kaç kere çeviri yaptığımızı gösteriyor. yaptığım denemelerde tts servisinin id,q ve tl parametrelerine bağımlı olduğunu gördüm ve sistemimizi ona göre düzenledik.
çalışmamızda sunucumuzu fazla yormamak adına çevirilecek kelime uzunluğunu 400 karakter ile sınırladık ama
$text = substr($_POST['text'], 0, 400);
yada hiçbir limitlenmdirme olmaması için
$text = $_POST['text'];
şeklinde düzenleyebilrisiniz.
çalışmamızı buradan inceleyebilir, buradan çalışma dosyalarını indirebilirsiniz. herhangi bir görüşünüz için lütfen yorum yapınız.