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'ye de göz atın.
İzinler
ttsGenel 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 motorları olarak kaydeden uzantılar yükleyebilir.
Konuşma oluşturuluyor
Konuşmak için uzantınızdan speak() tuşuna bası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 lehçe) seçilmesi için dili belirtmeniz de önerilir.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Varsayılan olarak, speak() ile yapılan her görüşme devam eden konuşmayı kesintiye uğratır ve hemen konuşmaya başlar. Bir aramanın herhangi bir şeyi kesintiye uğratıp uğratmayacağını belirlemek için isSpeaking() numaralı telefonu arayabilirsiniz. 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 tam açıklaması tts.speak bölümünde yer almaktadır. 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 öğesini kontrol ederek hata olup olmadığını görün.
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 kullanımınızdaki 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 anlık bilgi almak için seçeneklerde speak() öğesine bir etkinlik işleyicisi 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.charIndexsimgesini 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ı tamamladı.
- 'interrupted': Bu ifade,- speak()veya- stop()ile yapılan başka bir arama nedeniyle kesintiye uğradı ve tamamlanmadı.
- 'cancelled': Bu ifade sıraya alındı ancak daha sonra- speak()veya- stop()ile 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.errorMessageadresini 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şulmaz 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 ihtiyacınız olan etkinlikleri iletin veya getVoices() kullanarak gereksinimlerinizi karşılayan bir ses seçin. Her ikisi de aşağıda belgelenmiştir.
SSML işaretleme
Bu API'de kullanılan ifadeler, Konuşma Sentezi Biçimlendirme Dili (SSML) kullanılarak biçimlendirilmiş olabilir. 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ç desteklemez. Ancak tüm motorların, desteklemedikleri SSML'yi 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, 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 yararlanarak çeşitli seslere erişebilir. 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
Enum
"start" 
 
"end" 
 
"word" 
 
"sentence" 
 
"marker" 
 
"interrupted" 
 
"cancelled" 
 
"error" 
 
"pause" 
 
"resume" 
 
TtsEvent
TTS motorundan, bir ifadenin durumunu bildirmek için gönderilen etkinlik.
Özellikler
- 
    charIndexnumber isteğe bağlı İfadedeki geçerli 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.
- 
    errorMessagedize isteğe bağlı Etkinlik türü errorise hata açıklaması.
- 
    uzunluknumber isteğe bağlı Chrome 74 veya daha yeni bir sürümİfadenin sonraki bölümünün uzunluğu. Örneğin, wordetkinliğinde bu, bir sonraki okunacak kelimenin uzunluğudur. Konuşma motoru tarafından ayarlanmamışsa -1 olarak ayarlanır.
- 
    türTür, konuşma başladığı anda ( 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 sonuna ulaşılmadan 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ırsapauseetkinliği, ifade konuşmaya devam ederseresumeetkinliği tetiklenir. Konuşma, ifadeler arasında duraklatılırsa duraklatma ve devam ettirme etkinliklerinin tetiklenmeyebileceğini unutmayın.
TtsOptions
TTS motoru için konuşma seçenekleri.
Özellikler
- 
    desiredEventTypesstring[] isteğe bağlı Dinlemek istediğiniz TTS etkinlik türleri. Eksikse tüm etkinlik türleri gönderilebilir. 
- 
    enqueueboolean 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. 
- 
    extensionIddize isteğe bağlı Kullanılacak konuşma motorunun uzantı kimliği (biliniyorsa). 
- 
    genderVoiceGender 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. 
- 
    langdize isteğe bağlı Sentez için kullanılacak dil, dil-bölge biçiminde. Örnekler: "en", "en-US", "en-GB", "zh-CN". 
- 
    şarkı önerisinumber isteğe bağlı Konuşma perdesi 0 ile 2 arasında olmalıdır (0 en düşük, 2 en yüksek). 1,0 değeri, sesin varsayılan perdesine karşılık gelir. 
- 
    hıznumber isteğe bağlı Bu sesin varsayılan hızına göre konuşma hızı. Varsayılan hız 1.0'dır ve normalde dakikada yaklaşık 180-220 kelime okunur. 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'ı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. 
- 
    requiredEventTypesstring[] isteğe bağlı Sesin desteklemesi gereken TTS etkinlik türleri. 
- 
    voiceNamedize isteğe bağlı Sentez için kullanılacak sesin adı. Boşsa mevcut seslerden herhangi biri kullanılır. 
- 
    ses düzeyinumber isteğe bağlı Konuşma ses seviyesi 0 ile 1 arasında olmalıdır (0 en düşük, 1 en yüksek). Varsayılan değer 1, 0'dır. 
- 
    onEventvoid optional Bu işlev, ifadeyi söyleme sürecinde gerçekleşen etkinliklerle çağrılır. onEventişlevi şu şekilde görünür:(event: TtsEvent) => {...} - 
    etkinlikMetin 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
- 
    eventTypesEventType[] isteğe bağlı Bu sesin gönderebileceği tüm geri çağırma etkinlik türleri. 
- 
    extensionIddize isteğe bağlı Bu sesi sağlayan uzantının kimliği. 
- 
    genderVoiceGender 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. 
- 
    langdize isteğe bağlı Bu sesin desteklediği dil, dil-bölge biçiminde. Örnekler: "en", "en-US", "en-GB", "zh-CN". 
- 
    uzaktan kumandaboolean isteğe bağlı Doğruysa sentez motoru uzak bir ağ kaynağıdır. Daha yüksek gecikme süresi olabilir ve bant genişliği maliyetlerine neden olabilir. 
- 
    voiceNamedize isteğe bağlı Sesin adı. 
VoiceGender
Cinsiyet artık kullanılmıyor ve yoksayılıyor.
Enum
"male" 
 
"female" 
 
Yöntemler
getVoices()
chrome.tts.getVoices(
callback?: function,
): Promise<TtsVoice[]>
Kullanılabilir tüm seslerin dizisini alır.
Parametreler
- 
    callbackişlev isteğe bağlı callbackparametresi şu şekilde görünür:(voices: TtsVoice[]) => void - 
    seslerTtsVoice[] Konuşma sentezi için kullanılabilen sesleri temsil eden tts.TtsVoicenesneleri 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()
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
- 
    callbackişlev isteğe bağlı callbackparametresi şu şekilde görünür:(speaking: boolean) => void - 
    konuşmaboolean 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 (ifadenin ortasında duraklatabilir). Konuşmayı devam ettirmek veya durdurmak için yapılan çağrı, konuşmayı devam ettirir.
resume()
chrome.tts.resume(): void
Konuşma duraklatılmışsa kaldığı yerden devam eder.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
): Promise<void>
Metin okuma motoru kullanarak metinleri okur.
Parametreler
- 
    ifadedize Seslendirilecek metin (düz metin veya eksiksiz ve 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çeneklerTtsOptions isteğe bağlı Konuşma seçenekleri. 
- 
    callbackişlev isteğe bağlı callbackparametresi şu şekilde görünür:() => void 
İadeler
- 
            Promise<void> Chrome 101+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
Devam etmekte olan konuşmaları durdurur ve bekleyen ifadelerin sırasını temizler. Ayrıca, konuşma duraklatılmışsa artık bir sonraki konuşma çağrısı için duraklatma kaldırılacak.
Etkinlikler
onVoicesChanged
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
- 
    callbackişlev callbackparametresi şu şekilde görünür:() => void