Merhabalar, <?xml version=”1.0″?> Bir SSML dökümanının root element’i <
Bu makalemde sizlerle birlikte daha önceki makalemde bahsettiğim SSML yapısını inceleyeceğiz. SSML speech synthesis uygulamalarında kullanılan XML tabanlı bir dildir. Zaten açılımı Speech Synthesis Markup Language’dir. W3C tarafından standardize edilmiştir. Bu standart Sun Systems tarafından geliştirilen JSGF ve JSML standartları temel alınarak geliştirilmiştir. SSML, metin okuma işlemlerinde kullanıcıya farklı platformlarda telaffuz, ses seviyesi, hız, cinsiyet gibi parametreleri kontrol etme imkanını sağlar. SSML ile kullanılan teknikler arasında sesli yanıt sistemleri de bulunmaktadır. Bir SSML dökümanı içindeki bileşenler, XML yapısının gereği de olduğundan çoğu zaman kolay anlaşılabilir ve kullanılabilirdirler. Bir SSML dökümanı otomatik olarak değiştirilip, oluşturulabileceği gibi, elle de düzenlenebilir. Biraz önce de bahsettiğim gibi SSML, platform bağımsız metin okuma işlemlerinin yapılmasına olanak sağlar. Okuma işlemlerini çok çeşitli şekillerde gerçekleştirebilir, okunan metnin istenilen yerlerinde vurgu, duraklama gibi işlemleri rahatça yapabilirsiniz. Aynı zamanda, makalemin ilerleyen kısımlarında da belirteceğim gibi bir SSML dökümanı içerisinde birden fazla farklı dillerde okuma işlemi gerçekleştirebilirsiniz.
Şimdi standart bir SSML dökümanının yapısının nasıl olduğunu inceleyelim. SSML de temelde bir XML dökümanıdır ve her XML dökümanı gibi SSML dökümanları da bir kullanılan XML dökümanının versiyonunu belirten bir XML ifadesi ile başlamalıdır. Ardından da opsiyonel olarak DOCTYPE tag’ı gelebilir:
<!DOCTYPE speak PUBLIC “-//W3C//DTD SYNTHESIS 1.0//EN”
“http://www.w3.org/TR/speech-synthesis/synthesis.dtd”>
<?xml version=”1.0″?> |
Bir SSML dökümanının yapısının nasıl olması gerektiğini gördükten sonra artık SSML dökümanında kullanılabilecek element ve attribute’ları incelemeye başlayabiliriz.
1- <speak>: Biraz önce de bahsettiğim gibi SSML dökümanındaki root element speak elementidir. Biraz önce bahsetmiş olduğum version, xmlns ve xml:lang gibi attribute’ları barındırır. Bunların dışında <audio>, <break>, <emphasis>, <lexicon>, <mark>, <meta>, <metadata>, <p>, <phoneme>, <prosody>, <say-as>, <sub>, <s> ve <voice> elementleri de <speak> elementi içinde kullanılabilir. Çok basit bir örnekte <speak> elementini kullarak ilk metnimizi okutalım:
<?xml version=”1.0″?> |
2- xml:lang: Biraz önce de bahsettiğim gibi xml:lang attribute’ı metnin hangi dilde okunmasını istiyorsak o dilde okunmasını sağlar. Bir metnin tamamına tek bir xml:lang attribute’ı tanımlanabileceği gibi, metnin farklı kısımlarına farklı xml:lang attribute’ları tanımlanarak farklı dilde yazılmış metinlerin ilgili dillerde okunmasını sağlayabilirsiniz. xml:lang’ın örnek bir kullanımı aşağıdaki gibidir:
<?xml version=”1.0″?> |
3- <lexicon>: Okunacak olan metnin telaffuz bilgilerinin tutulduğu dökümanın belirtildiği elementtir. Lexicon elementinin uri attribute’ı telaffuz bilgilerinin yolunu belirtir. type attribute’ı ise dökümanın medya tipini belirtir. lexicon elementi sadece speak elementi içinde kullanılabilir. Bir SSML dökümanında birden fazla lexicon elementi tanımlanabilir. Örnek kullanımı aşağıdaki gibidir:
<?xml version=”1.0″?> |
4- <p> ve <s> elementleri: <p> elementi paragraf, <s> elementi cümleyi belirtir. Kullanımları opsiyoneldir. <p> elementi <audio>, <break>, <emphasis>, <mark>, <phoneme>, <prosody>, <say-as>, <sub>, <s>, <voice> elementlerini ve metin içerebilir. <s> elementi de biraz önceki elementlerden kendisi hariç olanları ve metin içerebilir. Örnek kullanımı aşağıdaki gibidir:
<?xml version=”1.0″?> |
5- <phoneme>: Bu element okunacak olan metnin fonetik teleffuz bilgisinin tutulduğu elementtir. <phoneme> elementinin ph attribute’ı bu fonetik okunuş şeklini taşır. Bir diğer attribute olan alphabet attribute’ı ise fonetik alfabenin adını belirtir. <phoneme> elementi sadece metin içerebilir, attribute‘ı yoktur. <?xml version=”1.0″?> 7-
6- <sub>: Bu element içinde bulunan www, w3c gibi metinlerin açılışını alias attribute’ının içine yazdığımızda, metin okunurken alias attribute’ında yazan değer okunur. Örnek bir kullanımı aşağıdaki gibidir:
<speak version=”1.0″ xmlns=”http://www.w3.org/2001/10/synthesis“
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“
xsi:schemaLocation=”http://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis/synthesis.xsd“
xml:lang=”en-US”>
<sub alias=”Hyper Text Transfer Protocol”>http</sub>
</speak>
<?xml version=”1.0″?> |
8- <emphasis>: Bu element içinde yeralan metin vurgulu okunur. level attribute’ı vardır. Bu attribute strong, moderate, none, reduced değerlerini alır. level attribute’ının varsayılan değeri moderate’dır. Bu attribute’ın değeri normal veya moderate olduğunda metin vurgulanarak okunur. none değeri, metni okuyacak olan robotun metni vurgulama ihtimalini ortadan kaldırmak istenirse kullanılır. reduced değeri ile düşük seviyede vurgulama yapılır.
<?xml version=”1.0″?> |
9- <break>: <break> elementini okunan metinde duraklama yapılmasını istediğimiz yerlerde kullanabiliriz. Bu elementin iki adet attribute’ı vardır. Bunlardan birincisi strength attribute’ıdır. strength ile yapılacak duraklamanın şiddetini belirleriz. none, x-weak, weak, medium, strong ve x-strong değerlerini alır. Default değeri medium’dur. <break> elementinin diğer bir attribute’ı da time’dır. Metnin ilgili kısmında yapılacak olan duraklamanın saniye veya milisaniye cinsinden değerini belirleyebiliriz.
<?xml version=”1.0″?> |
10- <audio>: Metin okunurken metnin belirli yerlerinde bir ses dosyasının çalınmasını sağlar. Bunun için tek attribute’ı olan src attribute’ının değerini ses dosyasının lokasyonu ve dosyanın adı şeklinde set etmek gerekir.
<?xml version=”1.0″?> |
Bir SSML metninde kullanabileceğiniz belli başlı elementler ve bu elementlerin attribute’larından bahsettim. SSML kullanımı ve SSML metinlerini okutabileceğiniz bir örneği daha önce yazmış olduğum makalemden bulabilirsiniz.
Işıl Orhanel





























English
Türkçe