chrome.ttsEngine

Açıklama

Uzantı kullanarak bir metin okuma(TTS) motoru uygulamak için chrome.ttsEngine API'sini kullanın. Uzantınız bu API'yi kullanarak kaydedilirse herhangi bir uzantı veya Chrome uygulaması konuşma oluşturmak için tts API'yi kullandığında, söylenen sözleri ve diğer parametreleri içeren etkinlikleri alır. Ardından uzantınız, konuşmayı sentezlemek, çıkarmak ve durumu bildirmek üzere etkinlikleri çağırma işlevine geri göndermek için mevcut web teknolojilerini kullanabilir.

İzinler

ttsEngine

Kavramlar ve kullanım

Bir uzantı, kendisini konuşma motoru olarak kaydettirebilir. Böylece, tts.speak() ve tts.stop() gibi işlevlere yapılan çağrıların bir kısmını veya tamamını engelleyebilir ve alternatif bir uygulama sağlayabilir. Uzantılar, sunucudan ses akışı, HTML5 ses de dahil olmak üzere konuşma sağlamak için mevcut web teknolojilerini ücretsiz olarak kullanabilir. Bir uzantı, söylenenlerle farklı bir şey bile yapabilir. Örneğin, bir pop-up'ta altyazıları görüntülemek veya bunları uzak bir sunucuya günlük mesajı olarak göndermek gibi.

Bir TTS motorunu uygulamak için uzantının, "ttsEngine" iznini ve ardından, sağladığı tüm sesleri, uzantı manifestinde aşağıdaki gibi bildirmesi 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 zorunludur. Ad, sesin adını ve kullanılan motoru tanımlayacak kadar açıklayıcı olmalıdır. Çok düşük bir ihtimal de olsa iki uzantının aynı ada sahip sesleri kaydetmesi durumunda istemci, sentezi yapması gereken uzantının kimliğini belirtebilir.

lang parametresi isteğe bağlıdır, ancak kesinlikle önerilir. Neredeyse her zaman, bir ses tek bir dilde konuşmayı sentezleyebilir. Bir motor birden fazla dili desteklediğinde, her dil için kolayca ayrı bir ses kaydedebilir. Tek bir sesin birden fazla dili işleyebildiği nadir durumlarda, iki ayrı sesi listelemek ve bunları dahili olarak aynı mantığı kullanarak yönetmek en kolayıdır. Ancak herhangi bir dildeki ifadeleri işleyecek bir ses oluşturmak isterseniz uzantınızın manifest dosyasında lang parametresini hariç tutun.

Son olarak, motor, istemciyi konuşma sentezinin ilerleme durumu hakkında güncellemek için etkinlikler gönderebiliyorsa event_types parametresi gereklidir. En azından, konuşmanın ne zaman bittiğini belirtmek için '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 yöntemini çağırarak bildirilen sesler listesini değiştirebilir. (updateVoices için yapılan programatik çağrıda kullanılan parametrelerin büyük/küçük harf durumunda olduğunu unutmayın: ör. voiceName dosyasını kullanın.)voice_name

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

  • 'start': Motor söyleneni söylemeye başladı.
  • 'word': Bir kelime sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex işlevini kullanın.
  • 'sentence': Cümle sınırına ulaşıldı. Geçerli konuşma konumunu belirlemek için event.charIndex değerini kullanın.
  • 'marker': Bir SSML işaretçisine ulaşıldı. Mevcut konuşma konumunu belirlemek için event.charIndex işlevini kullanın.
  • 'end': Motor söyleneni söylemeyi bitirmiştir.
  • 'error': Motora özel bir hata oluştuğu için bu ifade sesli okunamıyor. event.errorMessage üzerinden daha fazla bilgi aktarın.

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

Aşağıda açıklanan konuşma etkinliği işleyicileri kaydettiğinizi varsayarsak metin okuma istemcileri, tts.getVoices çağrısı yaparak uzantınızın manifest dosyasından ses bilgilerini alabilir.

Konuşma etkinliklerini işleme

İstemcilerin isteği üzerine konuşma oluşturmak amacıyla uzantınız aşağıdaki gibi hem onSpeak hem de onStop için işleyiciler kaydetmelidir:

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ği kararı yalnızca uzantının manifest dosyasında belirtilen ses parametrelerini destekleyip desteklemediğine ve onSpeak ile onStop için dinleyicilere sahip olup olmamasına bağlıdır. Başka bir deyişle, bir uzantının konuşma isteği alması ve bunu ele alıp almayacağına dinamik olarak karar vermesi mümkün değildir.

Türler

AudioBuffer

Chrome 92 ve sonraki sürümler

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

Özellikler

  • audioBuffer

    ArrayBuffer

    Metin okuma motorundan gelen ses arabelleği. Tam olarak audioStreamOptions.bufferSize uzunluğa sahip olmalı ve audioStreamOptions.sampleRate'de mono olarak, JavaScript'te ise 32 bit imzalı kayan noktalı pcm olarak (ör. Float32Array türü) kodlanmalıdır.

  • charIndex

    numara isteğe bağlı

    Bu ses arabelleğiyle ilişkilendirilen karakter dizini.

  • isLastBuffer

    boole isteğe bağlı

    Bu ses arabelleği konuşulan metin için son öğeyse doğru değerini alır.

AudioStreamOptions

Chrome 92 ve sonraki sürümler

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

Özellikler

  • bufferSize

    sayı

    Bir ses arabelleğindeki örnek sayısı.

  • sampleRate

    sayı

    Bir ses arabelleğinde beklenen örnek hızı.

SpeakOptions

Chrome 92 ve sonraki sürümler

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

Özellikler

  • gender

    VoiceGender isteğe bağlı

    Chrome 92 sürümünden itibaren kullanımdan kaldırıldı

    Cinsiyet desteği sonlandırılmış olup yoksayılacaktır.

    Sentezlenmiş konuşma için sesin cinsiyeti.

  • lang

    string isteğe bağlı

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

  • atış

    numara isteğe bağlı

    0 ile 2 (0) en düşük, 2 en yüksek olacak şekilde konuşma ses perdesi (0 ile 2 dahil) 1,0 bu sesin varsayılan perdesine karşılık gelir.

  • hız

    numara 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 180 ila 220 kelime civarındadır. 2,0 iki kat daha hızlı, 0,5 ise yarı hızdır. Bu değer 0,1 ile 10,0 arasında (0,1 ile 10,0 dahil) 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

    string isteğe bağlı

    Sentez için kullanılacak sesin adı.

  • ses düzeyi

    numara isteğe bağlı

    Konuşma ses seviyesi 0 ile 1 (bu değerler dahil) arasında, 0 en düşük, 1 en yüksek olacak şekilde varsayılan 1,0'dır.

VoiceGender

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

Cinsiyet desteği sonlandırılmış olup yoksayılacaktır.

Enum

Yöntemler

updateVoices()

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

Ses listesinin güncellenmesi için bir motor tarafından çağrıldı. Bu liste, bu uzantının manifest dosyasında belirtilen tüm sesleri geçersiz kılar.

Parametreler

  • sesler

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

Etkinlikler

onPause

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

İsteğe bağlı: Bir motor, duraklatma etkinliğini destekliyorsa, bir devam ettirilene veya etkinliği durdurana kadar, varsa söylenen söz konusu arama duraklatılmalıdır. Bir durdurma etkinliğinin, duraklatılmış durumu da sileceğ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 söyleneni söylemeye devam etmek için (varsa) devam ettirme etkinliğini de desteklemesi gerekir. Bir durdurma etkinliğinin, duraklatılmış durumu da sileceğ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() öğesine bir çağrı yaptığında ve bu uzantının manifest dosyasındaki 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öylem

      dize

    • seçenekler
    • sendTtsEvent

      işlev

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

      (event: tts.TtsEvent)=>void

      • event

        Bu ifadenin durumunu gösteren metin okuma motorundan gelen etkinlik.

onSpeakWithAudioStream

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

Kullanıcı tts.speak() öğesine bir çağrı yaptığında ve bu uzantının manifest dosyasındaki 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 yürütmesi 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öylem

      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 verileri 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

        string isteğe bağlı

        Hatayı açıklayan bir dize.

onStop

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

tts.stop'a bir arama yapıldığında ve bu uzantı konuşma sırasında olduğunda tetiklenir. Bir uzantı onStop'a çağrı alırsa ve konuşma durdurulmuşsa hiçbir şey yapmamalıdır (hata oluşturmamalıdır). Konuşma duraklatılmış durumdaysa, bu durumda duraklatılmış durum iptal edilecektir.

Parametreler

  • geri çağırma

    işlev

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

    ()=>void