chrome.tts

Açıklama

Sentezlenmiş metin okumayı (TTS) oynatmak için chrome.tts API'yi kullanın. Bir uzantının konuşma motoru uygulamasına olanak tanıyan ilgili ttsEngine API'sini de inceleyin.

Chrome bu özelliği Windows (SAPI 5 kullanarak), Mac OS X ve ChromeOS'te işletim sisteminin sağladığı konuşma sentezi özelliklerini kullanarak sunar. Kullanıcılar tüm platformlarda kendilerini alternatif konuşma motorları olarak kaydeden uzantıları yükleyebilir.

İzinler

tts

Kavramlar ve kullanım

Konuşma oluştur

Konuşmak için uzantınızdan speak() numaralı telefonu arayın. Örneğin:

chrome.tts.speak('Hello, world.');

Konuşmayı hemen durdurmak için stop() numaralı telefonu aramanız yeterli:

chrome.tts.stop();

Konuşma hızı, ses perdesi gibi çeşitli konuşma özelliklerini kontrol eden seçenekler sağlayabilirsiniz. Örneğin:

chrome.tts.speak('Hello, world.', {'rate': 2.0});

Ayrıca, dili belirtmek iyi bir fikirdir. Böylece, bu dili (ve varsa bölgesel lehçeyi) destekleyen bir sentezleyici seçilebilir.

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

Varsayılan olarak, speak() için yapılan her çağrı devam eden konuşmayı kesintiye uğratır ve hemen konuşur. Aramanın herhangi bir işlemi kesintiye uğratıp uğratmadığını belirlemek için isSpeaking() numaralı telefonu arayabilirsiniz. Ayrıca bu ifadenin, mevcut telaffuz bittiğinde söylenecek bir ifade sırasına eklenmesini sağlamak için enqueue seçeneğini kullanabilirsiniz.

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

Tüm seçeneklerin tam açıklamasını tts.speak() sayfasında bulabilirsiniz. Tüm konuşma motorları tüm seçenekleri desteklemez.

Hataları yakalamak ve speak() işlevini doğru şekilde çağırdığınızdan emin olmak için bağımsız değişken almayan bir geri çağırma işlevi iletin. Herhangi bir hata olup olmadığını görmek için geri çağırmanın içinde runtime.lastError bölümünü kontrol edin.

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

Geri çağırma, motor konuşma oluşturmaya başlamadan hemen önce geri gelir. Geri çağırmanın amacı, konuşma sentezleme ve çıkışı sürecinde ortaya çıkabilecek tüm olası hataları yakalamak için değil, TTS API'yi kullanımınızdaki söz dizimi hataları konusunda sizi uyarmaktır. Bu hataları da yakalamak için bir sonraki bölümde açıklanan etkinlik işleyiciyi kullanmanız gerekir.

Etkinlikleri dinleme

Sentezlenmiş konuşmanın durumu hakkında daha fazla gerçek zamanlı bilgi almak için speak() öğesine seçeneklerde şunun gibi bir etkinlik işleyici iletin:

chrome.tts.speak(
  utterance,
  {
    onEvent: function(event) {
      console.log('Event ' + event.type + ' at position ' + event.charIndex);
      if (event.type == 'error') {
        console.log('Error: ' + event.errorMessage);
      }
    }
  },
  callback
);

Her etkinlikte bir etkinlik türü, söylene göre geçerli konuşmanın karakter dizini ve hata etkinlikleri için isteğe bağlı bir hata mesajı bulunur. Etkinlik türleri şunlardır:

  • 'start': Motor söyleneni söylemeye başladı.
  • 'word': Bir kelime sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex işlevini kullanın.
  • 'sentence': Cümle sınırına ulaşıldı. Geçerli konuşma konumunu belirlemek için event.charIndex değerini kullanın.
  • 'marker': Bir SSML işaretçisine ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex işlevini kullanın.
  • 'end': Motor söyleneni söylemeyi bitirmiştir.
  • 'interrupted': Bu ifade, speak() veya stop() numarasına yapılan başka bir arama nedeniyle yarıda kesildi ve tamamlanmadı.
  • 'cancelled': Bu ifade sıraya alındı, ancak daha sonra speak() veya stop() numarasına yapılan başka bir arama tarafından iptal edildi ve hiç konuşmaya başlanmadı.
  • 'error': Motora özel bir hata oluştuğu için bu ifade sesli okunamıyor. Ayrıntılı bilgi için event.errorMessage adresini kontrol edin.

Etkinlik türlerinden dördü ('end', 'interrupted', 'cancelled' ve 'error') nihaidir. Bu etkinliklerden biri alındıktan sonra, bu ifade artık konuşmaz ve bu ifadeden yeni etkinlik alınmaz.

Bazı sesler tüm etkinlik türlerini desteklemeyebilir, bazı sesler de hiç etkinlik göndermeyebilir. Belirli etkinlikleri göndermediği sürece bir sesi kullanmak istemiyorsanız seçenekler nesnesinin requiredEventTypes üyesinde istediğiniz etkinlikleri iletin veya gereksinimlerinizi karşılayan bir ses seçmek için getVoices() işlevini kullanın. Her ikisi de aşağıda açıklanmıştır.

SSML işaretlemesi

Bu API'de kullanılan ifadeler, Konuşma Sentezi Biçimlendirme Dili (SSML) kullanılan işaretlemeyi içerebilir. SSML kullanıyorsanız speak() için ilk bağımsız değişken, bir belge parçası değil, XML başlığı ve üst düzey <speak> etiketi içeren tam bir SSML belgesi olmalıdır.

Örneğin:

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

Tüm konuşma motorları tüm SSML etiketlerini desteklemez ve bazıları SSML'yi hiç desteklemeyebilir. Ancak tüm motorların, desteklemedikleri SSML'yi yoksayıp alttaki metni konuşmaya devam etmesi gerekir.

Ses seçin

Varsayılan olarak Chrome, dile bağlı olarak söylemek istediğiniz her ifade için en uygun sesi seçer. Çoğu Windows, Mac OS X ve ChromeOS sisteminde, işletim sistemi tarafından sağlanan konuşma sentezi en az bir dildeki herhangi bir metni söyleyebilmelidir. Ancak bazı kullanıcılar, işletim sistemlerinden ve diğer Chrome uzantıları tarafından uygulanan konuşma motorlarından çeşitli seslere sahip olabilir. Bu gibi durumlarda, uygun sesi seçmek veya kullanıcıya bir seçenek listesi sunmak için özel kod uygulayabilirsiniz.

Tüm seslerin listesini almak için getVoices() yöntemini çağırın ve bağımsız değişkeni olarak TtsVoice nesne dizisi alan bir işlev iletin:

chrome.tts.getVoices(
  function(voices) {
    for (var i = 0; i < voices.length; i++) {
      console.log('Voice ' + i + ':');
      console.log('  name: ' + voices[i].voiceName);
      console.log('  lang: ' + voices[i].lang);
      console.log('  extension id: ' + voices[i].extensionId);
      console.log('  event types: ' + voices[i].eventTypes);
    }
  }
);

Türler

EventType

Chrome 54 ve sonraki sürümler

Enum

"end"

"word"

"sentence"

"interrupted"

"cancelled"

"error"

"pause"

TtsEvent

Bir ifadenin durumunu bildirmek için TTS motorundan gelen etkinlik.

Özellikler

  • charIndex

    numara isteğe bağlı

    İfadedeki geçerli karakterin dizini. Kelime etkinliklerinde ise etkinlik bir kelimenin sonunda, sonraki kelimenin başlangıcından önce tetiklenir. charIndex, metinde söylenecek bir sonraki kelimenin başındaki bir noktayı temsil eder.

  • errorMessage

    string isteğe bağlı

    Etkinlik türü error ise hata açıklaması.

  • length

    numara isteğe bağlı

    Chrome 74 ve sonraki sürümler

    Söylemin sonraki bölümünün uzunluğu. Örneğin, bir word etkinliğinde bu, bir sonra konuşulacak kelimenin uzunluğudur. Konuşma motoru tarafından ayarlanmazsa -1 olarak ayarlanır.

  • tür

    Tür, konuşma başlar başlamaz start, kelime sınırına ulaşıldığında word, cümle sınırına ulaşıldığında sentence, bir SSML işaret öğesine ulaşıldığında marker, ifadenin sonuna ulaşıldığında end, ifade sona ermeden durdurulduğunda veya kesildiğinde interrupted, henüz sentezlenmeden önce sıradan kaldırıldığında cancelled veya başka bir hata oluştuğunda error olabilir. Konuşma duraklatıldığında, belirli bir ifade ortasında duraklatıldığında pause etkinliği tetiklenir ve bir söyleniş devam ettirilirse resume tetiklenir. Konuşma, söylenenler arasında duraklatılırsa duraklatma ve devam ettirme etkinliklerinin tetiklenmeyebileceğini unutmayın.

TtsOptions

Chrome 77 ve sonraki sürümler

TTS motoru için konuşma seçenekleri.

Özellikler

  • desiredEventTypes

    string[] isteğe bağlı

    Dinlemek istediğiniz TTS etkinlik türleri. Eksikse tüm etkinlik türleri gönderilebilir.

  • sıraya almak

    boole isteğe bağlı

    True (doğru) değerine ayarlanırsa, TTS zaten devam ediyorsa bu söyleneni sıraya alır. False (yanlış) değerine ayarlanırsa (varsayılan), geçerli konuşmayı keser ve bu yeni ifadeyi söylemeden önce konuşma sırasını temizler.

  • extensionId

    string isteğe bağlı

    Biliniyorsa kullanılacak konuşma motorunun uzantı kimliği.

  • gender

    VoiceGender isteğe bağlı

    Chrome 77'den itibaren kullanımdan kaldırıldı

    Cinsiyet desteği sonlandırılmış olup yoksayılacaktır.

    Sentezlenmiş konuşma için sesin cinsiyeti.

  • lang

    string isteğe bağlı

    Sentez için dil-bölge biçiminde kullanılacak dil. Örnekler: "en", "en-US", "en-GB", "zh-CN".

  • atış

    numara isteğe bağlı

    0 ile 2 (0) en düşük, 2 en yüksek olacak şekilde konuşma ses perdesi (0 ile 2 dahil) 1,0 sesin varsayılan perdesine karşılık gelir.

  • hız

    numara isteğe bağlı

    Bu sesin varsayılan hızına göre konuşma hızı. 1, 0 varsayılan hızdır ve normalde dakikada 180 ila 220 kelime civarındadır. 2,0 iki kat daha hızlı, 0,5 ise yarı hızdır. 0,1'in altındaki veya 10.0'ın üzerindeki değerlere kesinlikle izin verilmez ancak birçok seste minimum ve maksimum hızlar daha da kısıtlanır. Örneğin, 3,0'dan büyük bir değer belirtseniz bile belirli bir ses normalin 3 katından daha hızlı konuşmayabilir.

  • requiredEventTypes

    string[] isteğe bağlı

    Sesin desteklemesi gereken TTS etkinlik türleri.

  • voiceName

    string isteğe bağlı

    Sentez için kullanılacak sesin adı. Boşsa mevcut seslerden birini kullanır.

  • ses düzeyi

    numara isteğe bağlı

    Konuşma ses seviyesi 0 ile 1 (bu değerler dahil) arasında, 0 en düşük, 1 en yüksek olacak şekilde varsayılan 1,0'dır.

  • onEvent

    void isteğe bağlı

    Bu işlev, söylenen söylenme sürecinde gerçekleşen olaylarla çağrılır.

    onEvent işlevi şu şekilde görünür:

    (event: TtsEvent)=> {...}

    • event

      Metin okuma motorundan gelen bu ifadenin durumunu gösteren güncelleme etkinliği.

TtsVoice

Konuşma sentezi için kullanılabilen bir sesin açıklaması.

Özellikler

  • eventTypes

    EventType[] isteğe bağlı

    Bu sesin gönderebildiği tüm geri arama etkinliği türleri.

  • extensionId

    string isteğe bağlı

    Bu sesi sağlayan uzantının kimliği.

  • gender

    VoiceGender isteğe bağlı

    Chrome 70'ten itibaren kullanımdan kaldırıldı

    Cinsiyet desteği sonlandırılmış olup yoksayılacaktır.

    Bu sesin cinsiyeti.

  • lang

    string isteğe bağlı

    Bu sesin desteklediği dil (dil-bölge biçiminde). Örnekler: "en", "en-US", "en-GB", "zh-CN".

  • uzaktan

    boole isteğe bağlı

    Değer true ise sentez motoru uzak bir ağ kaynağıdır. Daha yüksek gecikme olabilir ve bant genişliği maliyetleri söz konusu olabilir.

  • voiceName

    string isteğe bağlı

    Sesin adı.

VoiceGender

Chrome 54 ve sonraki sürümler Chrome 70'ten itibaren kullanımdan kaldırıldı

Cinsiyet desteği sonlandırıldı ve cinsiyet yoksayıldı.

Enum

Yöntemler

getVoices()

Söz
chrome.tts.getVoices(
  callback?: function,
)

Kullanılabilir tüm seslerin bir dizisini alır.

Parametreler

  • geri çağırma

    Functions (isteğe bağlı)

    callback parametresi şu şekilde görünür:

    (voices: TtsVoice[])=>void

    • sesler

      Konuşma sentezi için kullanılabilir sesleri temsil eden tts.TtsVoice nesne dizisi.

İlerlemeler

  • Promise<TtsVoice[]>

    Chrome 101 ve sonraki sürümler

    Vaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırmalar sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.

isSpeaking()

Söz
chrome.tts.isSpeaking(
  callback?: function,
)

Motorun şu anda konuşmakta olup olmadığını kontrol eder. Mac OS X'te, konuşma Chrome tarafından başlatılmamış olsa bile, sistem konuşma motoru konuşurken sonuç doğrudur.

Parametreler

  • geri çağırma

    Functions (isteğe bağlı)

    callback parametresi şu şekilde görünür:

    (speaking: boolean)=>void

    • konuşmak

      boolean

      Konuşuyorsanız doğru, aksi takdirde yanlış.

İlerlemeler

  • Promise<boolean>

    Chrome 101 ve sonraki sürümler

    Vaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırmalar sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.

pause()

chrome.tts.pause()

Bir ifadenin ortasındayken konuşma sentezini duraklatır. Devam ettirme veya durdurma çağrısı, konuşmanın duraklatılmasını kaldırır.

resume()

chrome.tts.resume()

Konuşma duraklatıldıysa kaldığı yerden devam eder.

speak()

Söz
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)

Metin okuma motoru kullanarak metni okur.

Parametreler

  • söylem

    dize

    Söylenecek metin; düz metin veya eksiksiz, iyi biçimlendirilmiş bir SSML dokümanı. SSML'yi desteklemeyen konuşma motorları, etiketleri kaldırır ve metni okur. Metnin maksimum uzunluğu 32.768 karakterdir.

  • seçenekler

    TtsOptions isteğe bağlı

    Konuşma seçenekleri.

  • geri çağırma

    Functions (isteğe bağlı)

    callback parametresi şu şekilde görünür:

    ()=>void

İlerlemeler

  • Promise<void>

    Chrome 101 ve sonraki sürümler

    Vaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırmalar sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.

stop()

chrome.tts.stop()

Geçerli konuşmayı durdurur ve bekleyen ifadelerin sırasını temizler. Ayrıca, konuşma duraklatıldıysa bir sonraki çağrı için duraklatma kaldırılır.

Etkinlikler

onVoicesChanged

Chrome 124 ve sonraki sürümler
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

getVoices tarafından döndürülecek tts.TtsVoice listesi değiştiğinde çağrılır.

Parametreler

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    ()=>void