chrome.tts

refresh date: 2026-09-25 robots: noindex

Açıklama

Sentezlenmiş metin okuma (TTS) sesini çalmak için chrome.tts API'yi kullanın. Uzantıların konuşma motoru uygulamasını sağlayan ilgili ttsEngine API'sini de inceleyin.

İzinler

tts

Genel Bakış

Chrome, işletim sisteminin sağladığı konuşma sentezi özelliklerini kullanarak Windows (SAPI 5 kullanarak), Mac OS X ve ChromeOS'te konuşma için yerel destek sağlar. Tüm platformlarda kullanıcı, kendilerini alternatif konuşma motorları olarak kaydeden uzantılar yükleyebilir.

Konuşma oluşturuluyor

Konuşmak için dahili numaranızdan speak() numarasını arayın. Örneğin:

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

Konuşmayı hemen durdurmak için stop() demeniz yeterli:

chrome.tts.stop();

Konuşmanın hızı ve ses perdesi gibi çeşitli özelliklerini kontrol eden seçenekler sunabilirsiniz. Örneğin:

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

Ayrıca, bu dili (ve varsa bölgesel lehçeyi) destekleyen bir sentezleyicinin seçilmesi için dili belirtmek de iyi bir fikirdir.

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şmaları keser ve hemen konuşmaya başlar. Aramanın herhangi bir şeyi kesintiye uğratıp uğratmayacağını belirlemek için isSpeaking() yöntemini çağırabilirsiniz. Ayrıca, bu ifadenin, mevcut ifade bittiğinde söylenecek ifadeler sırasına eklenmesi 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ı aşağıdaki tts.speak bölümünde 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 içermeyen bir geri çağırma işlevi iletin. Geri çağırma işlevinde, hata olup olmadığını görmek için runtime.lastError değerini 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 döndürülür. Geri çağırma işlevinin amacı, TTS API kullanımınızdaki söz dizimi hataları konusunda sizi uyarmaktır. Konuşma sentezleme ve çıkış oluşturma sürecinde ortaya çıkabilecek tüm olası hataları yakalamak değildir. Bu hataları da yakalamak için aşağıda açıklanan etkinlik işleyiciyi kullanmanız gerekir.

Etkinlikler dinleniyor

Sentezlenen konuşmanın durumu hakkında daha fazla anlık bilgi almak için seçeneklerde speak() yöntemine bir etkinlik işleyici iletin. Örneğin:

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ü, mevcut konuşmanın ifadeye göre karakter dizini ve hata etkinlikleri için isteğe bağlı bir hata mesajı bulunur. Etkinlik türleri şunlardır:

  • 'start': Motor, ifadeyi seslendirmeye başladı.
  • 'word': Kelime sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex kullanın.
  • 'sentence': Cümle sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex kullanın.
  • 'marker': Bir SSML işaretçisine ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex kullanın.
  • 'end': Motor, ifadeyi seslendirmeyi tamamladı.
  • 'interrupted': Bu ifade, speak() veya stop() için yapılan başka bir çağrı tarafından kesintiye uğradı ve tamamlanmadı.
  • 'cancelled': Bu ifade sıraya alındı ancak daha sonra speak() veya stop() için yapılan başka bir çağrı tarafından iptal edildi ve hiç konuşmaya başlamadı.
  • 'error': Motora özgü bir hata oluştu ve bu ifade seslendirilemiyor. Ayrıntılar için event.errorMessage sayfasını ziyaret edin.

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

Bazı sesler tüm etkinlik türlerini desteklemeyebilir ve bazı sesler hiç etkinlik göndermeyebilir. Belirli etkinlikleri göndermeyen bir sesi kullanmak istemiyorsanız seçenekler nesnesinin requiredEventTypes üyesinde gerekli etkinlikleri iletin veya gereksinimlerinizi karşılayan bir ses seçmek için getVoices() kullanın. Her iki yöntem 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ılarak biçimlendirme içerebilir. SSML kullanıyorsanız speak() için ilk bağımsız değişken, bir doküman parçası değil, XML üstbilgisi ve üst düzey <speak> etiketi içeren eksiksiz bir SSML dokümanı 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'leri yoksayması ve temel metni seslendirmesi gerekir.

Ses seçme

Varsayılan olarak Chrome, söylemek istediğiniz her ifade için dile göre en uygun sesi seçer. Çoğu Windows, Mac OS X ve ChromeOS sisteminde, işletim sistemi tarafından sağlanan konuşma sentezi, herhangi bir metni en az bir dilde okuyabilir. Ancak bazı kullanıcılar, işletim sistemlerinden ve diğer Chrome uzantıları tarafından uygulanan konuşma motorlarından çeşitli sesler kullanabilir. 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() işlevini çağırın ve bağımsız değişken olarak TtsVoice nesnelerinden oluşan bir dizi 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+

Enum

"start"

"end"

"word"

"sentence"

"marker"

"interrupted"

"cancelled"

"error"

"pause"

"resume"

TtsEvent

TTS motorundan gelen ve bir ifadenin durumunu bildiren etkinlik.

Özellikler

  • charIndex

    number isteğe bağlı

    Sözdeki mevcut karakterin dizini. Kelime etkinliklerinde etkinlik, bir kelimenin sonunda ve bir 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 hatanın açıklaması.

  • uzunluk

    number isteğe bağlı

    Chrome 74 ve sonraki sürümler

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

  • tür

    Tür, konuşma başladığında start, bir kelime sınırına ulaşıldığında word, bir 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 ulaşmadan önce durdurulduğunda veya kesintiye uğradığında interrupted, 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ılırsa pause etkinliği, ifade konuşmaya devam ederse resume etkinliği tetiklenir. Konuşma, ifadeler arasında duraklatılırsa duraklatma ve devam ettirme etkinliklerinin tetiklenmeyebileceğini unutmayın.

TtsOptions

Chrome 77+

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.

  • enqueue

    boole isteğe bağlı

    Doğru ise TTS zaten devam ediyorsa bu ifadeyi sıraya alır. Yanlış ise (varsayılan) mevcut konuşmayı keser ve bu yeni ifadeyi söylemeden önce konuşma sırasını temizler.

  • extensionId

    string isteğe bağlı

    Kullanılacak konuşma motorunun uzantı kimliği (biliniyorsa).

  • gender

    VoiceGender isteğe bağlı

    Chrome 77'den itibaren desteği sonlandırıldı

    Cinsiyet özelliği kullanımdan kaldırılmıştır ve yok sayılacaktır.

    Sentezlenmiş konuşma için sesin cinsiyeti.

  • lang

    string isteğe bağlı

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

  • şarkı önerisi

    number isteğe bağlı

    0 ile 2 arasında (0 ve 2 dahil) konuşma perdesi. 0 en düşük, 2 en yüksek perdeyi temsil eder. 1,0, sesin varsayılan perdesine karşılık gelir.

  • hız

    number 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 genellikle dakikada yaklaşık 180 ila 220 kelimedir. 2,0 iki kat daha hızlı, 0,5 ise yarı yarıya daha yavaştır. 0,1'in altındaki veya 10,0'un üzerindeki değerlere kesinlikle izin verilmez ancak birçok ses, minimum ve maksimum oranları daha da kısıtlar. Örneğin, belirli bir ses, 3,0'dan büyük bir değer belirtmiş olsanız bile normalden 3 kat 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ş bırakılırsa mevcut seslerden herhangi biri kullanılır.

  • ses düzeyi

    number isteğe bağlı

    Konuşma ses seviyesi 0 ile 1 arasında (0 ve 1 dahil) bir değerdir. 0 en düşük, 1 en yüksek ses seviyesini temsil eder. Varsayılan değer 1, 0'dır.

  • onEvent

    void isteğe bağlı

    Bu işlev, sözlü ifadenin söylenmesi sürecinde gerçekleşen etkinliklerle çağrılır.

    onEvent işlevi şu şekildedir:

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

    • etkinlik

      Metin okuma motorundan gelen ve bu ifadenin durumunu belirten 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önderebileceği tüm geri çağırma 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 desteği sonlandırıldı

    Cinsiyet özelliği kullanımdan kaldırılmıştır ve yok sayılacaktır.

    Bu sesin cinsiyeti.

  • lang

    string isteğe bağlı

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

  • uzaktan kumanda

    boole isteğe bağlı

    Doğruysa sentez motoru uzak bir ağ kaynağıdır. Gecikme süresi daha uzun olabilir ve bant genişliği maliyetleri ortaya çıkabilir.

  • voiceName

    string isteğe bağlı

    Sesin adı.

VoiceGender

Chrome 54 ve sonraki sürümler Chrome 70'ten itibaren desteği sonlandırılmıştır

Cinsiyet desteği sonlandırılmıştır ve yoksayılır.

Enum

"male"

"female"

Yöntemler

getVoices()

Taahhüt
chrome.tts.getVoices(
  callback?: function,
)
: Promise<TtsVoice[]>

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

Parametreler

  • callback

    function isteğe bağlı

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

    (voices: TtsVoice[]) => void

    • sesler

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

İadeler

  • Promise<TtsVoice[]>

    Chrome 101+

    Promise'ler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırma işlevlerini kullanması gerekir.

isSpeaking()

Taahhüt
chrome.tts.isSpeaking(
  callback?: function,
)
: Promise<boolean>

Motorun şu anda konuşup konuşmadığını kontrol eder. Mac OS X'te, konuşma Chrome tarafından başlatılmamış olsa bile sistem konuşma motoru her konuştuğunda sonuç doğrudur.

Parametreler

  • callback

    function isteğe bağlı

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

    (speaking: boolean) => void

    • konuşma

      boole

      Konuşma varsa doğru, yoksa yanlış değerini döndürür.

İadeler

  • Promise<boolean>

    Chrome 101+

    Promise'ler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırma işlevlerini kullanması gerekir.

pause()

chrome.tts.pause(): void

Konuşma sentezini duraklatır (muhtemelen bir ifadenin ortasında). Devam ettirme veya durdurma çağrısı, konuşmayı duraklatır.

resume()

chrome.tts.resume(): void

Konuşma duraklatılmışsa kaldığı yerden devam eder.

speak()

Taahhüt
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)
: Promise<void>

Metin okuma motoru kullanarak metni okur.

Parametreler

  • utterance

    dize

    Seslendirilecek metin (düz metin veya eksiksiz, doğru biçimlendirilmiş bir SSML belgesi). SSML'yi desteklemeyen konuşma motorları, etiketleri kaldırır ve metni seslendirir. Metnin maksimum uzunluğu 32.768 karakterdir.

  • seçenekler

    TtsOptions isteğe bağlı

    Konuşma seçenekleri.

  • callback

    function isteğe bağlı

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

    () => void

İadeler

  • Promise<void>

    Chrome 101+

    Konuşma bitmeden hemen çözümlenir. Hata oluşursa promise reddedilir. Daha ayrıntılı geri bildirim almak için options.onEvent'i kullanın.

    Promise'ler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırma işlevlerini kullanması gerekir.

stop()

chrome.tts.stop(): void

Mevcut konuşmaları durdurur ve bekleyen tüm ifadelerin sırasını temizler. Ayrıca, konuşma duraklatıldıysa bir sonraki konuşma çağrısı için devam ettirilir.

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

  • callback

    işlev

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

    () => void