chrome.ttsEngine

Açıklama

Bir uzantı kullanarak metin okuma(TTS) motoru uygulamak için chrome.ttsEngine API'yi kullanın. Uzantınız bu API'yi kullanarak kaydoluyorsa, herhangi bir uzantı veya Chrome uygulaması konuşma oluşturmak için tts API'yi kullandığında, söylenecek bir sözü ve diğer parametreleri içeren etkinlikler alır. Böylece uzantınız konuşmayı sentezlemek ve çıktısını almak için mevcut herhangi bir web teknolojisini kullanabilir ve durumu bildirmek için etkinlikleri çağrı işlevine geri gönderebilir.

İzinler

ttsEngine

Kavramlar ve kullanım

Bir uzantı kendini bir konuşma motoru olarak kaydedebilir. Bu durumda, aramaların bazılarına veya tamamına karşılık gelebilir tts.speak() ve tts.stop() gibi işlevlere ekleyin ve alternatif bir uygulama sağlayın. Uzantılar, konuşma sağlamak için mevcut web teknolojilerinin (ses akışı da dahil) kullanımı ücretsizdir HTML5 sesten yararlanırız. Bir uzantı farklı bir şey bile yapabilir altyazıyı pop-up'ta görüntüleyebilir veya bunları günlük mesajı olarak uzak bir sunucuya bile götürebilir.

Bir TTS motorunu uygulamak için bir uzantının "ttsEngine" beyan edin ve ardından uzantı manifest'inde sağladığı sesler aşağıdaki gibidir:

{
  "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 zorunludur. Ad, kimlik bilgisini tanımlamaya yetecek kadar açıklayıcı olmalıdır sesin ve kullanılan motorun adı. Çok düşük bir ihtimal de olsa iki uzantının ses kaydettiği durumlarda bir istemci, sentezlemeyi yapması gereken uzantının kimliğini belirtebilir.

lang parametresi isteğe bağlıdır ancak kesinlikle önerilir. Ses, neredeyse her zaman tek bir dilde konuşma imkanı sağlar. Bir motor birden fazla dili desteklediğinde her dil için ayrı bir ses kaydedebilirsiniz. Tek bir sesin duyulabileceği nadir durumlarda birden fazla dili kullanıyorsanız, iki ayrı ses listelemek ve bunları şirket içinde de aynı mantık geçerlidir. Ancak, herhangi bir videodaki söylenenleri işleyecek bir ses oluşturmak dil ayarını kullanıyorsanız lang parametresini uzantınızın manifest dosyasından hariç tutun.

Son olarak, motor, istemciyi güncellemek için etkinlik gönderebiliyorsa event_types parametresi gerekir konuşma sentezinin ilerleme durumu üzerinde. En azından, 'end' etkinlik türünün desteklenmesi, kesinlikle önerilir. Aksi takdirde, Chrome sıraya alınan ifadeleri planlayamaz.

Yüklendikten sonra uzantılar, şunu çağırarak bildirilen seslerin listesini değiştirebilir: chrome.ttsEngine.updateVoices (programatik çağrıda kullanılan parametrelerin updateVoices büyük/küçük harf düzenindedir: ör. voiceName, voice_name) dokunun.

Gönderebileceğiniz olası etkinlik türleri, speak() yönteminin etkinleştirildiği etkinlik türlerine karşılık gelir. alı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.
  • 'error': Motora özel bir hata oluştu ve bu söylenen sesli okunamıyor. Diğer kartları göster event.errorMessage içinde yer alan bilgiler.

'interrupted' ve 'cancelled' etkinlikleri konuşma motoru tarafından gönderilmez; oluşturuldukları için otomatik olarak Chrome tarafından sunulur.

Metin okuma istemcileri, telefon numarasını arayarak ses bilgilerini uzantınızın manifest dosyasından alabilir. tts.getVoices. Aşağıda açıklanan şekilde konuşma etkinliği işleyicileri kaydettiğiniz varsayılmıştır.

Konuşma etkinliklerini işleme

İstemcilerin isteği üzerine konuşma oluşturmak için uzantınız her ikisinde de dinleyicileri kaydetmelidir onSpeak ve onStop şöyle:

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 sadece şuna karar verilir: uzantının manifest dosyasında belirtilen ses parametrelerini destekleyip desteklemediğini ve onSpeak ve onStop dinleyicileri. Başka bir deyişle, bir ek süre teklifinde ve dinamik olarak karar verir.

Türler

AudioBuffer

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

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

Özellikler

  • audioBuffer

    ArrayBuffer

    Metin okuma motorundaki ses arabelleği. Tam uzunluktaki audioStreamOptions.bufferSize olmalı ve mono olarak, audioStreamOptions.sampleRate biçiminde ve doğrusal pcm, 32 bit imzalı kayan noktalı, JavaScript'teki float32Array türünde olarak kodlanmalıdır.

  • charIndex

    sayı isteğe bağlı

    Bu ses arabelleğiyle ilişkilendirilen karakter dizini.

  • isLastBuffer

    boole isteğe bağlı

    Bu ses arabelleği, söylenen metin için son sesse doğru değerini alır.

AudioStreamOptions

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

Bir motor tarafından oluşturulması beklenen ses yayını biçimini içerir.

Özellikler

  • bufferSize

    sayı

    Ses arabelleğindeki örnek sayısı.

  • sampleRate

    sayı

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

SpeakOptions

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

tts.speak() yöntemi için belirtilen seçenekler.

Özellikler

  • gender

    VoiceGender isteğe bağlı

    Chrome 92'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 bu 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. Bu değerin 0,1 ile 10,0 arasında (0,1 ve 10,0 dahil) olacağı garanti edilir. Bir ses bu fiyat aralığının tamamını desteklemediğinde 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

    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.

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 yoksayılacaktır.

Enum

"erkek"

"kadın"

Yöntemler

updateVoices()

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

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

Parametreler

  • sesler

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

Etkinlikler

onPause

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

İsteğe bağlı: Bir motor duraklatma etkinliğini destekliyorsa, bir devam ettirme etkinliği alana veya durdurma etkinliği alıncaya kadar söylenen geçerli ifadeyi duraklatması gerekir. Bir durdurma etkinliğinin, duraklatılmış durumu 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, geçerli ifadeyi (varsa) söylemeye devam etmek için devam ettirme etkinliğini de desteklemelidir. Bir durdurma etkinliğinin, duraklatılmış durumu 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() çağrısı yaptığında ve bu uzantının manifestindeki seslerden biri, options nesnesiyle eşleşen ilk kişi 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

    • söylenen

      dize

    • seçenekler
    • sendTtsEvent

      işlev

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

      (event: tts.TtsEvent) => void

      • etkinlik

        Metin okuma motorunda, bu ifadenin durumunu gösteren etkinlik.

onSpeakWithAudioStream

Chrome 92 ve sonraki sürümler 'nı inceleyin.
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Kullanıcı, tts.speak() çağrısı yaptığında ve bu uzantının manifestindeki seslerden biri, options nesnesiyle eşleşen ilk kişi olduğunda çağrılır. Chrome'un ses çalma hizmetleri sağlaması ve tts etkinliklerini gönderme işlemlerini yapması açısından 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

    • söylenen

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

      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 ile ilgili bir arama yapıldığında tetiklenir ve bu uzantı konuşmanın ortasında olabilir. Bir uzantı onStop için çağrı alır ve konuşma zaten durmuşsa hiçbir şey yapmamalıdır (hata vermez). Konuşma duraklatılmış durumdaysa bu, duraklatılmış durumu iptal eder.

Parametreler

  • geri çağırma

    işlev

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

    () => void