chrome.tts

refresh date: 2026-09-25 robots: noindex

Açıklama

Sentezlenmiş metin okuma (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'yi de inceleyin.

İzinler

tts

Genel Bakış

Chrome, işletim sistemi tarafından sağlanan konuşma sentezi özelliklerini kullanarak Windows (SAPI 5 kullanılarak), Mac OS X ve ChromeOS'te konuşma için yerel destek sunar. Kullanıcı, tüm platformlarda kendilerini alternatif konuşma motoru olarak kaydeden uzantıları yükleyebilir.

Konuşma oluşturuluyor

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

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

Konuşmayı hemen durdurmak için stop()'ı arayın:

chrome.tts.stop();

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

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

Bu dili destekleyen bir sentezleyici (ve varsa bölgesel diyalekt) seçilmesi için dili belirtmeniz de önerilir.

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

Varsayılan olarak, speak() işlevine yapılan her çağrı, devam eden konuşmayı kesintiye uğratır ve hemen konuşur. Bir aramanın herhangi bir şeyi kesintiye uğratıp uğratmayacağını belirlemek için isSpeaking() işlevini çağırabilirsiniz. Ayrıca, bu ifadenin mevcut ifade tamamlandığında okunacak ifadeler 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 ayrıntılı 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 almayan bir geri çağırma işlevi iletin. Geri çağırma işlevinin içinde runtime.lastError işaretini kullanarak hata olup olmadığı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 üretmeye başlamadan hemen önce döndürülür. Geri aramanın amacı, TTS API'yi kullanırken söz dizimi hataları konusunda sizi uyarmaktır. Konuşma sentezleme ve çıkış sürecinde oluşabilecek tüm olası hataları yakalamak değildir. Bu hataları da yakalamak için aşağıda açıklanan etkinlik işleyiciyi kullanmanız gerekir.

Etkinlikleri dinleme

Sentezlenmiş konuşmanın durumu hakkında daha fazla bilgi almak için seçeneklerde speak() öğesine 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 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 okumaya başladı.
  • 'word': Kelime sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex öğesini kullanın.
  • 'sentence': Cümle sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex simgesini kullanın.
  • 'marker': Bir SSML işaretçisine ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex öğesini kullanın.
  • 'end': Motor, ifadeyi okumayı tamamlamıştır.
  • 'interrupted': Bu ifade, speak() veya stop()'a yapılan başka bir arama nedeniyle kesintiye uğradı ve tamamlanmadı.
  • 'cancelled': Bu ifade sıraya alındı ancak speak() veya stop()'a yapılan başka bir arama nedeniyle iptal edildi ve hiç konuşmaya başlamadı.
  • 'error': Motora özgü bir hata oluştu ve bu ifade okunamıyor. 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 ifade artık konuşmaz ve bu ifadeden yeni etkinlikler alınmaz.

Bazı sesler tüm etkinlik türlerini desteklemeyebilir ve bazı sesler hiç etkinlik göndermeyebilir. Belirli etkinlikleri göndermediği sürece bir ses kullanmak istemiyorsanız seçenekler nesnesinin requiredEventTypes üyesinde gerekli etkinlikleri iletin veya getVoices() kullanarak gereksinimlerinizi karşılayan bir ses seçin. Her ikisi de aşağıda belgelenmiştir.

SSML biçimlendirmesi

Bu API'de kullanılan ifadeler, Speech Synthesis Markup Language (SSML) kullanılarak işaretleme içerebilir. SSML kullanıyorsanız speak() işlevinin ilk bağımsız değişkeni, doküman parçası değil, XML üst bilgisi 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 okumaya devam etmesi gerekir.

Ses seçme

Varsayılan olarak Chrome, konuşmak 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, en az bir dildeki tüm metinleri okuyabilir. Ancak bazı kullanıcılar, işletim sistemlerinden ve diğer Chrome uzantıları tarafından uygulanan konuşma motorlarından yararlanarak çeşitli sesleri 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 nesneleri dizisini 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 veya daha yeni bir sürüm

Enum

"start"

"end"

"word"

"sentence"

"marker"

"interrupted"

"cancelled"

"error"

"duraklat"

"resume"

TtsEvent

TTS motorundan, bir ifadenin durumunu bildirmek için gönderilen etkinlik.

Özellikler

  • charIndex

    number isteğe bağlı

    Sözdeki mevcut karakterin dizini. Kelime etkinliklerinde etkinlik, bir kelimenin sonunda ve bir sonraki kelimenin başında tetiklenir. charIndex, metinde konuşulacak bir sonraki kelimenin başlangıcındaki noktayı temsil eder.

  • errorMessage

    dize isteğe bağlı

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

  • uzunluk

    number isteğe bağlı

    Chrome 74 ve sonraki sürümler

    İfadenin bir sonraki bölümünün uzunluğu. Örneğin, word etkinliğinde bu, bir sonraki okunacak kelimenin uzunluğudur. Konuşma motoru tarafından ayarlanmamışsa -1 olarak ayarlanır.

  • tür

    Tür, konuşma başladığında start, kelime sınırına ulaşıldığında word, cümle sınırına ulaşıldığında sentence, SSML işaret öğesine ulaşıldığında marker, ifadenin sonuna ulaşıldığında end, ifade sona ulaşmadan durdurulduğunda veya kesintiye uğradığında interrupted, sentezlenmeden önce kuyruktan kaldırıldığında cancelled ya da başka bir hata oluştuğunda error olabilir. Konuşma duraklatıldığında, belirli bir ifade ortada 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 veya daha yeni bir sürüm

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

    boolean isteğe bağlı

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

  • extensionId

    dize isteğe bağlı

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

  • gender

    VoiceGender isteğe bağlı

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

    Cinsiyet artık kullanılmıyor ve yoksayılacak.

    Sentezlenmiş konuşma için sesin cinsiyeti.

  • lang

    dize isteğe bağlı

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

  • şarkı önerisi

    number isteğe bağlı

    Konuşma perdesi 0 ile 2 arasında olmalıdır. 0 en düşük, 2 ise en yüksek perdedir. 1,0 değeri, sesin varsayılan perdesine karşılık gelir.

  • hız

    number isteğe bağlı

    Bu ses için varsayılan hıza göre konuşma hızı. Varsayılan hız 1.0'dır ve normalde dakikada yaklaşık 180-220 kelimeye karşılık gelir. 2,0 değeri iki kat hızlı, 0,5 değeri ise yarı hızlıdır. 0,1'in altındaki veya 10,0'ın üzerindeki değerlere kesinlikle izin verilmez ancak birçok ses, minimum ve maksimum oranları daha da kısıtlar. Örneğin, 3,0'dan büyük bir değer belirtmiş olsanız bile belirli bir ses, normal hızın 3 katından daha hızlı konuşmayabilir.

  • requiredEventTypes

    string[] isteğe bağlı

    Sesin desteklemesi gereken TTS etkinlik türleri.

  • voiceName

    dize isteğe bağlı

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

  • ses düzeyi

    number isteğe bağlı

    Konuşma ses seviyesi 0 ile 1 arasında olmalıdır (0 en düşük, 1 en yüksek değerdir ve varsayılan değer 1, 0'dır).

  • onEvent

    void optional

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

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

    (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 etkinlik türleri.

  • extensionId

    dize isteğe bağlı

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

  • gender

    VoiceGender isteğe bağlı

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

    Cinsiyet artık kullanılmıyor ve yoksayılacak.

    Bu sesin cinsiyeti.

  • lang

    dize isteğe bağlı

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

  • uzaktan kumanda

    boolean 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 oluşabilir.

  • voiceName

    dize isteğe bağlı

    Sesin adı.

VoiceGender

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

Cinsiyet artık kullanılmıyor ve yoksayılıyor.

Enum

"male"

"female"

Yöntemler

getVoices()

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

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

Parametreler

  • callback

    işlev 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+

    Promises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.

isSpeaking()

Promise
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 konuştuğu sürece sonuç doğru olur.

Parametreler

  • callback

    işlev isteğe bağlı

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

    (speaking: boolean) => void

    • konuşma

      boole

      Konuşuluyorsa doğru, aksi takdirde yanlış.

İadeler

  • Promise<boolean>

    Chrome 101+

    Promises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.

pause()

chrome.tts.pause(): void

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

resume()

chrome.tts.resume(): void

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

speak()

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

Metin okuma motoru kullanarak metinleri okur.

Parametreler

  • ifade

    dize

    Okunacak metin (düz metin veya tam ve iyi biçimlendirilmiş bir SSML belgesi). 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.

  • callback

    işlev isteğe bağlı

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

    () => void

İadeler

  • Promise<void>

    Chrome 101+

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

    Promises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.

stop()

chrome.tts.stop(): void

Mevcut konuşmaları durdurur ve bekleyen ifadelerin sırasını temizler. Ayrıca, konuşma duraklatılmışsa bir sonraki konuşma çağrısı 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ülen tts.TtsVoice listesi değiştiğinde çağrılır.

Parametreler

  • callback

    işlev

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

    () => void