chrome.tts

Açıklama

Sentezlenmiş metin okuma (TTS) çalmak için chrome.tts API'yi kullanın. Ayrıca, uzantıların konuşma motoru uygulamasına izin veren ilgili ttsEngine API'sine de bakın.

İzinler

tts

Genel Bakış

Chrome, Windows (SAPI 5 kullanan), Mac OS X ve ChromeOS'te konuşma için yerel destek sunar. işletim sistemi tarafından sağlanan konuşma sentezi özellikleridir. Tüm platformlarda kullanıcı Kendilerini alternatif konuşma motorları olarak kaydeden uzantılar yükleme

Konuşma oluşturuluyor

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

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

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

chrome.tts.stop();

Konuşmanın hızı, perdesi ve daha fazla. Örneğin:

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

Ayrıca dili belirtmek de iyi bir fikirdir. Böylece, o dili destekleyen bir sentezleyici (ve yerel lehçe) seçildiğinden emin olun.

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ı keser ve hemen konuşur. Alıcı: bir çağrının kesintiye neden olup olmadığını belirlemek istiyorsanız isSpeaking() numaralı telefonu arayabilirsiniz. Ayrıca, bu ifadenin, tekrar gelen bir ifadenin kuyruğuna eklenmesi için enqueue devam eden konuşma sona erdiğinde de söylenebilir.

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

Tüm seçeneklerle ilgili kapsamlı açıklamaları aşağıdaki tts.speak bölümünde bulabilirsiniz. Tüm konuşmalar değil tüm seçenekleri destekler.

Hataları yakalamak ve speak() öğesini doğru şekilde çağırdığınızdan emin olmak için şu özelliklere sahip bir geri çağırma işlevi iletin: hiçbir bağımsız değişken kabul etmez. Geri aramada runtime.lastError kontrol edin ve herhangi bir bilgi olup olmadığına bakın. hatalar.

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 döner. Belgenin geri çağırma, TTS API kullanımınızdaki söz dizimi hataları konusunda sizi uyarmaktır, olası tüm olası durumları yakalamak için değildir konuşma sentezleme ve çıkışında oluşabilecek hataları ifade eder. Bu hataları yakalamak için aşağıda açıklandığı gibi bir etkinlik işleyici kullanmanız gerekir.

Etkinlikleri dinleme

Sentezlenmiş konuşmanın durumu hakkında daha gerçek zamanlı bilgi almak için şurada bir etkinlik işleyiciye iletin: speak() için seçenekler şunlardır:

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 etkinlik bir etkinlik türü içerir. Bu etkinlik, söz konusu konuşmanın ve hata etkinlikleri için isteğe bağlı bir hata mesajı gösterilir. Etkinlik türleri şunlardır:

  • 'start': Motor, söyleneni söylemeye başladı.
  • 'word': Kelime sınırına ulaşıldı. Geçerli konuşmayı belirlemek için event.charIndex komutunu kullanın dokunun.
  • 'sentence': Cümle sınırına ulaşıldı. Mevcut anahtar kelimeleri belirlemek için event.charIndex konuşma konumu.
  • 'marker': Bir SSML işaretçisine ulaşıldı. Geçerli konuşmayı belirlemek için event.charIndex komutunu kullanın dokunun.
  • 'end': Motor, söyleneni söylemeyi bitirdi.
  • 'interrupted': Bu telaffuz, speak() veya stop() numaralı telefona yapılan başka bir çağrıyla kesintiye uğradı ve bitmeyebilir.
  • 'cancelled': Bu ifade sıraya alındı, ancak speak() veya stop() ve hiç konuşmaya başlamadım.
  • 'error': Motora özel bir hata oluştu ve bu söylenen sesli okunamıyor. Kontrol et Ayrıntılı bilgi için event.errorMessage.

Dört etkinlik türü ('end', 'interrupted', 'cancelled' ve 'error') nihaidir. Şu tarihten sonra: etkinliklerden biri alındığında, bu konuşma artık okunmaz ve bundan yeni bir etkinlik gelmez. alınacağını da belirtir.

Bazı sesler tüm etkinlik türlerini desteklemeyebilir, bazı sesler ise hiç etkinlik göndermeyebilir. Şu durumda: belirli etkinlikleri göndermediği sürece bir ses kullanmak istemiyorsanız Seçenekler nesnesinin requiredEventTypes üyesi olun veya uyan bir ses seçmek için getVoices() kısayolunu kullanın ve gereksinimlerinizi karşılayın. Her ikisi de aşağıda açıklanmıştır.

SSML işaretlemesi

Bu API'de kullanılan söylemler, Konuşma Sentezi Biçimlendirme Dili kullanılarak işaretleme içerebilir. (SSML) ile uyumludur. SSML kullanıyorsanız speak() öğesinin ilk bağımsız değişkeni, XML üstbilgisi ve üst düzey <speak> etiketi, doküman parçası değil.

Ö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 motorların desteklemedikleri SSML'leri yoksayması ve yine de temel metni söylemesi gerekir.

Ses seçme

Varsayılan olarak Chrome, ses kayıtlarına göre, söylemek istediğiniz her ifade için en uygun sesi seçer. dilini girin. Çoğu Windows, Mac OS X ve ChromeOS sisteminde işletim sisteminin tüm metinleri en az bir dilde okuyabilmesi gerekir. Bazı kullanıcılar işletim sistemlerinden ve uygulamaya konan konuşma motorlarından diğer Chrome uzantıları tarafından yapıldığını varsayalım. Bu gibi durumlarda, uygun içeriği seçmek için özel kod veya kullanıcıya seçenekler listesi sunmak için kullanılır.

Tüm seslerin listesini almak için getVoices() çağrısını yapın ve Bağımsız değişkeni olarak TtsVoice nesne:

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 'nı inceleyin.

Enum

"start"

"end"

"kelime"

"sentence"

"marker"

"kesintili"

"cancelled"

"error"

"pause"

"resume"

TtsEvent

TTS motorundan, bir ifadenin durumunu ileten etkinlik.

Özellikler

  • charIndex

    sayı isteğe bağlı

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

  • errorMessage

    dize isteğe bağlı

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

  • uzunluk

    sayı isteğe bağlı

    Chrome 74 ve sonraki sürümler 'nı inceleyin.

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

  • tür

    Tür, konuşma başlar başlamaz 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, söylenen sonuna ulaşmadan durdurulduğunda veya kesildiğinde interrupted, hiç sentezlenmeden sıradan kaldırıldığında cancelled veya başka herhangi bir hata meydana geldiğinde error olabilir. Konuşma duraklatıldığında, belirli bir ifade ortada duraklatılırsa pause etkinliği ve bir söylem konuşmayı devam ettiriyorsa resume etkinliği tetiklenir. İfadeler arasında konuşma duraklatılırsa duraklatma ve devam ettirme etkinliklerinin etkinleşmeyebileceğini unutmayın.

TtsOptions

Chrome 77 ve sonraki sürümler 'nı inceleyin.

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 devam ediyorsa bu ifadeyi sıraya alır. False (yanlış) değerine ayarlanırsa (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ı

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

  • gender

    VoiceGender isteğe bağlı

    Chrome 77'den bu yana desteği sonlandırıldı

    Cinsiyet kullanımdan kaldırılmıştır ve yoksayılacaktır.

    Sentezlenmiş konuşmada sesin cinsiyeti.

  • lang

    dize isteğe bağlı

    Sentez için kullanılacak dil; language-region biçiminde. Örnekler: "en", "en-US", "en-GB", "zh-CN".

  • şarkı önerisi

    sayı isteğe bağlı

    0 en düşük, 2 en yüksek olmak üzere 0 ile 2 (dahil) arasındaki konuşma ses perdesi. 1.0, bir sesin varsayılan perdesine karşılık gelir.

  • hız

    sayı 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 yaklaşık 180 ila 220 kelimedir. 2,0 iki kat, 0,5 ise yarısı kadar hızlıdır. 0,1'in altındaki ve 10,0'ın üzerindeki değerlere kesinlikle izin verilmez. Ancak birçok ses minimum ve maksimum hızları daha da sınırlandırır. Örneğin, 3,0'dan büyük bir değer belirtseniz bile belirli bir ses, gerçekte 3 kat 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 birini kullanır.

  • ses düzeyi

    sayı isteğe bağlı

    Konuşma ses düzeyi 0 ile 1 (bu değerler dahil) arasındadır. 0 en düşük, 1 ise en yüksek konuşma ses düzeyidir. Varsayılan değer 1, 0'dır.

  • onEvent

    geçersiz isteğe bağlı

    Bu işlev, söylenenlerin söylenmesi sürecinde meydana gelen olaylarla birlikte çağrılır.

    onEvent işlevi aşağıdaki gibi görünür:

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

    • etkinlik

      Metin okuma motorunda, bu ifadenin durumunu gösteren güncelleme etkinliği.

TtsVoice

Konuşma sentezi için kullanılabilen 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

    dize isteğe bağlı

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

  • gender

    VoiceGender isteğe bağlı

    Chrome 70'ten bu yana desteği sonlandırıldı

    Cinsiyet kullanımdan kaldırılmıştır ve yoksayılacaktır.

    Bu sesin cinsiyeti.

  • lang

    dize isteğe bağlı

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

  • uzaktan kumanda

    boole isteğe bağlı

    Doğru değerine ayarlanırsa sentez motoru uzak bir ağ kaynağıdır. Gecikme daha yüksek olabilir ve bant genişliği maliyetlerine neden olabilir.

  • voiceName

    dize isteğe bağlı

    Sesin adı.

VoiceGender

Chrome 54 ve sonraki sürümler Chrome 70'ten bu yana desteği sonlandırıldı

Cinsiyet kullanımdan kaldırılmıştır ve yok sayılır.

Enum

"erkek"

"kadın"

Yöntemler

getVoices()

Söz 'nı inceleyin.
chrome.tts.getVoices(
  callback?: function,
)

Mevcut tüm seslerin bir dizisini alır.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

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

    (voices: TtsVoice[]) => void

    • sesler

      Konuşma sentezi için mevcut sesleri temsil eden tts.TtsVoice nesneleri dizisi.

İadeler

  • Promise&lt;TtsVoice[]&gt;

    Chrome 101 ve sonraki sürümler 'nı inceleyin.

    Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.

isSpeaking()

Söz 'nı inceleyin.
chrome.tts.isSpeaking(
  callback?: function,
)

Motorun o 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

  • geri çağırma

    işlev isteğe bağlı

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

    (speaking: boolean) => void

    • konuşmak

      boolean

      Konuşuyorsa doğru, değilse yanlış değerini alır.

İadeler

  • Promise&lt;boolean&gt;

    Chrome 101 ve sonraki sürümler 'nı inceleyin.

    Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.

pause()

chrome.tts.pause()

Potansiyel olarak bir cümlenin ortasında konuşma sentezini duraklatır. Devam ettirme veya durdurma çağrısı yapıldığında konuşmanın duraklatılması sona erer.

resume()

chrome.tts.resume()

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

speak()

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

Metin okuma motoru, metinleri okur.

Parametreler

  • söylenen

    dize

    Konuşacak metin (düz metin veya tam, iyi biçimlendirilmiş bir SSML dokümanı). SSML'yi desteklemeyen konuşma motorları, etiketleri kaldırır ve metni okur. Metin en fazla 32.768 karakter uzunluğunda olabilir.

  • seçenekler

    TtsOptions isteğe bağlı

    Konuşma seçenekleri.

  • geri çağırma

    işlev isteğe bağlı

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

    () => void

İadeler

  • Taahhüt<void>

    Chrome 101 ve sonraki sürümler 'nı inceleyin.

    Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.

stop()

chrome.tts.stop()

Devam eden konuşmayı durdurur ve beklemedeki ifade sırasını temizler. Ayrıca, konuşma duraklatılmışsa bir sonraki çağrıda konuşmanın duraklatması kaldırılır.

Etkinlikler

onVoicesChanged

Chrome 124 ve sonraki sürümler 'nı inceleyin.
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