🗣️ Mobil Uygulamalarda Ses Sentezi (Text-to-Speech) ile Erişilebilirlik
Ses sentezi, metni konuşmaya dönüştüren teknolojidir. Mobil uygulamalarda erişilebilirliği artırmak için kritik bir rol oynar. Görme engelli veya okuma güçlüğü çeken kullanıcılar için uygulamanın içeriğini anlamanın temel yoludur. Bu rehber, geliştiricilere ses sentezini uygulamalarına nasıl entegre edecekleri konusunda yol gösterecektir.
📱 Android'de Ses Sentezi Entegrasyonu
Android, `TextToSpeech` sınıfı aracılığıyla yerleşik ses sentezi desteği sunar.
- ⚙️ TextToSpeech Nesnesi Oluşturma: İlk adım, `TextToSpeech` sınıfının bir örneğini oluşturmaktır. Bu işlem, bir bağlam (Context) ve bir başlatma dinleyicisi (OnInitListener) gerektirir.
- 🗣️ OnInitListener Arayüzü: Bu arayüz, ses sentezi motorunun başarıyla başlatılıp başlatılmadığını belirtir. Başlatma başarılı olduğunda, motoru yapılandırabiliriz.
- 🌍 Dil Ayarları: `setLanguage()` metodu ile kullanılacak dili ayarlayabilirsiniz. Örneğin, Türkçe için `Locale("tr", "TR")` kullanabilirsiniz.
- 🔊 Konuşmayı Başlatma: `speak()` metodu, metni konuşmaya dönüştürmek için kullanılır. Bu metot, metni, kuyruk modunu (örneğin, mevcut konuşmayı durdurup yeni metni konuşma veya kuyruğa ekleme) ve isteğe bağlı parametreleri alır.
- 🛑 Kaynakları Serbest Bırakma: Uygulama kapatıldığında veya ses sentezi motoruna ihtiyaç kalmadığında, `shutdown()` metodunu çağırarak kaynakları serbest bırakmak önemlidir.
🍎 iOS'ta Ses Sentezi Entegrasyonu
iOS, `AVSpeechSynthesizer` sınıfı aracılığıyla ses sentezi desteği sağlar.
- 🗣️ AVSpeechSynthesizer Nesnesi Oluşturma: `AVSpeechSynthesizer` sınıfının bir örneğini oluşturarak başlayın.
- 🗣️ AVSpeechUtterance Oluşturma: Konuşulacak metni içeren bir `AVSpeechUtterance` nesnesi oluşturun. Bu nesne, metin, ses hızı, ses perdesi ve ses yüksekliği gibi özellikleri yapılandırmanıza olanak tanır.
- 🌍 Ses Seçimi: `AVSpeechSynthesisVoice` sınıfını kullanarak farklı dillerde ve aksanlarda sesler seçebilirsiniz.
- 🔊 Konuşmayı Başlatma: `speakUtterance()` metodu ile metni konuşmaya dönüştürebilirsiniz.
✨ Erişilebilirlik İpuçları
- 👂 Kullanıcı Kontrolü: Kullanıcılara ses sentezi hızını, ses yüksekliğini ve dilini ayarlama seçenekleri sunun.
- 🏷️ Açıklayıcı Etiketler: Görsel öğeler için açıklayıcı etiketler sağlayın, böylece ekran okuyucular bu öğeleri sesli olarak açıklayabilir.
- 🧭 Navigasyon Kolaylığı: Uygulamanın menülerinde ve kontrollerinde kolayca gezinmeyi sağlayın.
- 🧪 Test Etme: Uygulamanızı farklı ekran okuyucular ve ses sentezi motorları ile test ederek erişilebilirlik sorunlarını tespit edin.
🛠️ Kod Örnekleri (Android - Kotlin)
import android.speech.tts.TextToSpeech
import android.content.Context
import java.util.Locale
class TTSHelper(context: Context) {
private var tts: TextToSpeech? = null
init {
tts = TextToSpeech(context) { status ->
if (status == TextToSpeech.SUCCESS) {
val result = tts?.setLanguage(Locale("tr", "TR"))
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
//Dil desteklenmiyor hatası
}
} else {
//Başlatma hatası
}
}
}
fun speak(text: String) {
tts?.speak(text, TextToSpeech.QUEUE_FLUSH, null, "")
}
fun shutdown() {
tts?.shutdown()
}
}
📚 Ek Kaynaklar