chrome.ttsEngine

Açıklama

Uzantı kullanarak metin okuma(TTS) motoru uygulamak için chrome.ttsEngine API'yi kullanın. Uzantılarınız bu API'yi kullanarak kaydedilirse herhangi bir uzantı veya Chrome uygulaması konuşma oluşturmak için tts API'sini kullandığında, seslendirilecek bir ifade ve diğer parametreleri içeren etkinlikler alır. Uzantı, konuşmayı sentezlemek ve yayınlamak için mevcut web teknolojilerinden herhangi birini kullanabilir ve durumu bildirmek için etkinlikleri çağıran işleve geri gönderebilir.

İzinler

ttsEngine

Kavramlar ve kullanım

Uzantılar kendilerini konuşma motoru olarak kaydedebilir. Bu sayede tts.speak() ve tts.stop() gibi işlevlere yapılan çağrıların bir kısmını veya tamamını durdurabilir ve alternatif bir uygulama sağlayabilir. Uzantılar, bir sunucudan ses akışı, HTML5 ses gibi konuşma sağlamak için mevcut tüm web teknolojilerini kullanabilir. Uzantılar, ifadelerle farklı işlemler de yapabilir (ör. altyazılar bir pop-up'ta gösterilebilir veya uzak bir sunucuya günlük mesajı olarak gönderilebilir).

Bir TTS motoru uygulamak için uzantıların "ttsEngine" iznini ve ardından sağladığı tüm sesleri uzantı manifestinde şu şekilde belirtmesi gerekir:

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}

Bir uzantı, herhangi bir sayıda ses belirtebilir.

voice_name parametresi gereklidir. Ad, sesin adını ve kullanılan motoru tanımlayacak kadar açıklayıcı olmalıdır. İki uzantının aynı ada sahip sesler kaydettiği olası bir durumda istemci, sentezi yapması gereken uzantının kimliğini belirtebilir.

lang parametresi isteğe bağlıdır ancak kullanılması önerilir. Sesler genellikle yalnızca tek bir dilde konuşma sentezleyebilir. Bir motor birden fazla dili desteklediğinde her dil için kolayca ayrı bir ses kaydedebilir. Tek bir sesin birden fazla dili işleyebileceği nadir durumlarda, en kolay yöntem iki ayrı ses listelemek ve bunları dahili olarak aynı mantıkla işlemektir. Ancak herhangi bir dilde ifadeyi işleyen bir ses oluşturmak istiyorsanız uzantınızın manifest dosyasından lang parametresini çıkarın.

Son olarak, motor konuşma sentezleme işleminin ilerleme durumuyla ilgili olarak istemciyi güncellemek için etkinlik gönderebiliyorsa event_types parametresi gereklidir. Konuşmanın ne zaman bittiğini belirtmek için en azından 'end' etkinlik türünün desteklenmesi önemle tavsiye edilir. Aksi takdirde Chrome, sıraya alınmış ifadeleri planlayamaz.

Yüklenen bir uzantı, chrome.ttsEngine.updateVoices çağrısı yaparak belirtilen seslerin listesini değiştirebilir. (updateVoices için programatik çağrıda kullanılan parametrelerin büyük/küçük harfe duyarlı olduğunu unutmayın: voiceName, voice_name kullanan manifest dosyasından farklıdır.)

Gönderebileceğiniz olası etkinlik türleri, speak() yönteminin aldığı etkinlik türlerine karşılık gelir:

  • 'start': Motor, ifadeyi okumaya başladı.
  • 'word': Kelime sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex değerini kullanın.
  • 'sentence': Cümle sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex simgesini kullanın.
  • 'marker': SSML işaretçisine ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex değerini kullanın.
  • 'end': Motor, ifadeyi okumayı tamamladı.
  • 'error': Motora özgü bir hata oluştu ve bu ifade okunamıyor. event.errorMessage adresinde daha fazla bilgi verin.

'interrupted' ve 'cancelled' etkinlikleri konuşma motoru tarafından gönderilmez, Chrome tarafından otomatik olarak oluşturulur.

Metni seslendirme istemcileri, konuşma etkinliği dinleyicilerini aşağıda açıklandığı şekilde kaydettiğiniz varsayılarak tts.getVoices çağrısı yaparak ses bilgilerini uzantınızın manifest dosyasından alabilir.

Konuşma etkinliklerini işleme

Müşterilerin isteği üzerine konuşma oluşturmak için uzantınızın hem onSpeak hem de onStop için dinleyicileri kaydetmesi gerekir.

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);

Belirli bir konuşma isteğinin bir uzantıya gönderilip gönderilmeyeceğine karar verilirken yalnızca uzantının manifest dosyasında belirtilen ses parametrelerini destekleyip desteklemediğine ve onSpeak ile onStop için dinleyici kaydedip kaydetmediğine bakılır. Diğer bir deyişle, bir uzantının konuşma isteği almasının ve isteği işleme alıp almayacağına dinamik olarak karar vermesinin hiçbir yolu yoktur.

Türler

AudioBuffer

Chrome 92 ve üzeri sürümler

Ses arabelleği ve ilişkili veriler içeren parametreler.

Özellikler

  • audioBuffer

    ArrayBuffer

    Metin okuma motorundan gelen ses arabelleği. Tam olarak audioStreamOptions.bufferSize uzunluğunda olmalı ve audioStreamOptions.sampleRate değerinde mono, doğrusal pcm, 32 bit işaretli kayan nokta (ör. JavaScript'teki Float32Array türü) olarak kodlanmalıdır.

  • charIndex

    number isteğe bağlı

    Bu ses arabelleğiyle ilişkili karakter dizini.

  • isLastBuffer

    boole isteğe bağlı

    Bu ses arabelleği, konuşulan metnin sonuysa doğru değerini alır.

AudioStreamOptions

Chrome 92 ve üzeri sürümler

Bir motor tarafından üretilmesi beklenen ses akışı biçimini içerir.

Özellikler

  • bufferSize

    sayı

    Ses arabelleğindeki örneklem sayısı.

  • sampleRate

    sayı

    Ses arabelleğinde beklenen örnek hızı.

LanguageInstallStatus

Beklemede

Bir sesin yükleme durumu.

Enum

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

Beklemede

Dilin yükleme durumu.

Özellikler

  • hata

    dize isteğe bağlı

    Yükleme hatalarıyla ilgili ayrıntılar. Dil yüklenemediyse isteğe bağlı olarak doldurulur.

  • installStatus

    Yükleme durumu.

  • lang

    dize

    Dil kodu-bölge kodu biçiminde dil dizesi (bölge atlanabilir). Örnekler: en, en-AU, zh-CH.

LanguageUninstallOptions

Beklemede

Belirli bir dili kaldırma seçenekleri.

Özellikler

  • uninstallImmediately

    boolean

    TTS istemcisi dilin hemen kaldırılmasını istiyorsa doğru değerini alır. Motor, bu parametreye ve istek sahibi bilgilerine göre dilin kaldırılıp kaldırılmayacağını veya ne zaman kaldırılacağını seçebilir. Yanlış ise kaldırma zamanını belirlemek için son kullanım gibi başka ölçütler kullanılabilir.

SpeakOptions

Chrome 92 ve üzeri sürümler

tts.speak() yöntemine belirtilen seçenekler.

Özellikler

  • gender

    VoiceGender isteğe bağlı

    Chrome 92'den beri desteği sonlandırıldı

    Cinsiyet artık kullanılmıyor olup 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ı

    0 ile 2 arasında (0 en düşük, 2 en yüksek) konuşma tonu. 1,0 değeri, bu sese ait varsayılan perdeye karşılık gelir.

  • hız

    number isteğe bağlı

    Bu sesin varsayılan hızına göre konuşma hızı. Varsayılan hız 1, 0'dur (genellikle dakikada 180 ila 220 kelime). 2,0 iki kat, 0,5 ise yarı yarıya daha hızlıdır. Bu değerin 0,1 ile 10,0 arasında (bu değerler dahil) olacağı garanti edilir. Bir ses bu hız aralığının tamamını desteklemiyorsa hata döndürmeyin. Bunun yerine, hızı sesin desteklediği aralığa göre kırpın.

  • voiceName

    dize isteğe bağlı

    Sentez için kullanılacak sesin adı.

  • ses düzeyi

    number isteğe bağlı

    Konuşma sesi seviyesi. 0 ile 1 arasındadır (0 en düşük, 1 en yüksektir). Varsayılan değer 1, 0'dur.

TtsClient

Chrome 131 ve sonraki sürümler

Durum isteğinde bulunan istemcinin tanımlayıcısıdır.

Özellikler

  • id

    dize

    Dil yönetimi isteği gönderen istemci. Uzantıda bu, benzersiz uzantı kimliğidir. Chrome özellikleri için bu, özelliğin kullanıcılar tarafından okunabilen adıdır.

  • İstekte bulunan kullanıcının türü.

TtsClientSource

Chrome 131 ve sonraki sürümler

İstekte bulunan kullanıcının türü.

Enum

"chromefeature"

"extension"

VoiceGender

Chrome 54 ve sonraki sürümler Chrome 70'den beri kullanımdan kaldırıldı

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

Enum

"male"

"female"

Yöntemler

updateLanguage()

Beklemede
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)

Bir dil yükleme denemesi yapıldığında ve bir dilin yüklenmesi kaldırıldığında bir motor tarafından çağrılır. Müşteriden gelen bir durum isteği yanıtı olarak da çağrılır. Bir ses yüklendiğinde veya kaldırıldığında motor, sesi kaydetmek için ttsEngine.updateVoices'ı da çağırmalıdır.

Parametreler

updateVoices()

Chrome 66 ve sonraki sürümler
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

Bir motor tarafından ses listesi güncellenmek için çağrılır. Bu liste, bu uzantının manifest dosyasında beyan edilen tüm sesleri geçersiz kılar.

Parametreler

  • sesler

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

Etkinlikler

onInstallLanguageRequest

Chrome 131 ve sonraki sürümler
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Bir TTS istemcisi yeni bir dil yükleme isteğinde bulunduğunda tetiklenir. Motor, dili indirip yüklemeyi denemeli ve sonucu ttsEngine.updateLanguage ile çağırmalıdır. İşlem başarılı olduğunda motor, yeni kullanıma sunulan sesleri kaydetmek için ttsEngine.updateVoices'ı da çağırmalıdır.

Parametreler

  • geri çağırma

    işlev

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

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

Beklemede
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Bir TTS istemcisi bir dilin yükleme durumunu istediğinde tetiklenir.

Parametreler

  • geri çağırma

    işlev

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

    (requestor: TtsClient, lang: string) => void

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

İsteğe bağlı: Bir motor duraklatma etkinliğini destekliyorsa devam ettirme veya durdurma etkinliği alana kadar, o an söylenmekte olan ifadeyi (varsa) duraklatmalıdır. Durdurma etkinliğinin, duraklatılmış durumunu da temizlemesi gerektiğini unutmayın.

Parametreler

  • geri çağırma

    işlev

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

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

İsteğe bağlı: Bir motor duraklatma etkinliğini destekliyorsa mevcut ifadeyi (varsa) konuşmaya devam etmek için devam ettirme etkinliğini de desteklemelidir. Durdurma etkinliğinin, duraklatılmış durumunu da temizlemesi gerektiğini unutmayın.

Parametreler

  • geri çağırma

    işlev

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

    () => void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

Kullanıcı tts.speak() işlevini çağrdığında ve bu uzantının manifest dosyasında bulunan seslerden biri, options nesnesi ile eşleşen ilk ses olduğunda çağrılır.

Parametreler

  • geri çağırma

    işlev

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

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • ifade

      dize

    • seçenekler
    • sendTtsEvent

      işlev

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

      (event: tts.TtsEvent) => void

      • etkinlik

        Metin okuma motorundan gelen ve bu ifadenin durumunu belirten etkinlik.

onSpeakWithAudioStream

Chrome 92 ve üzeri sürümler
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Kullanıcı tts.speak() işlevini çağrdığında ve bu uzantının manifest dosyasında bulunan seslerden biri, options nesnesi ile eşleşen ilk ses olduğunda çağrılır. Chrome'un ses oynatma hizmetleri sağlaması ve tts etkinliklerini dağıtması nedeniyle ttsEngine.onSpeak'ten farklıdır.

Parametreler

  • geri çağırma

    işlev

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

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • ifade

      dize

    • seçenekler
    • audioStreamOptions
    • sendTtsAudio

      işlev

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

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Ses arabelleği ve ilişkili veriler içeren parametreler.

    • sendError

      işlev

      Chrome 94 ve sonraki sürümler

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

      (errorMessage?: string) => void

      • errorMessage

        dize isteğe bağlı

        Hatayı açıklayan bir dize.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

tts.stop işlevine çağrı yapıldığında ve bu uzantı konuşmanın ortasındayken tetiklenir. Bir uzantı, onStop çağrısı alırsa ve konuşma zaten durdurulmuşsa hiçbir işlem yapmamalıdır (hata oluşturmamalıdır). Konuşma duraklatılmış durumdaysa bu işlem duraklatılmış durumu iptal eder.

Parametreler

  • geri çağırma

    işlev

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

    () => void

onUninstallLanguageRequest

Beklemede
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Bir TTS istemcisi bir dile artık ihtiyaç olmadığını belirttiğinde tetiklenir.

Parametreler