Açıklama
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. 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. Böylece, tts.speak()
ve tts.stop()
gibi işlevlere yapılan çağrıların bazılarına veya tümüne müdahale edebilir ve alternatif bir uygulama sunabilir.
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ının aksine.)
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çinevent.charIndex
değerini kullanın.'sentence'
: Cümle sınırına ulaşıldı. Mevcut konuşma konumunu belirlemek içinevent.charIndex
simgesini kullanın.'marker'
: SSML işaretçisine ulaşıldı. Mevcut konuşma konumunu belirlemek içinevent.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. Başka bir deyişle, bir uzantının konuşma isteği alması ve bunu işleyip işleme almayacağına dinamik olarak karar vermesi mümkün değildir.
Türler
AudioBuffer
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, söylenen metin için son sesse doğru değerini alır.
AudioStreamOptions
Bir motor tarafından oluşturulması beklenen ses yayını biçimini içerir.
Özellikler
-
bufferSize
sayı
Ses arabelleğindeki örneklem sayısı.
-
sampleRate
sayı
Ses arabelleğinde beklenen örnek hızı.
LanguageInstallStatus
Bir sesin yükleme durumu.
Enum
"notInstalled"
"installing"
"installed"
"failed"
LanguageStatus
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çimindeki dil dizesi, bölgenin atlanabilir. Örnekler: en, en-AU, zh-CH.
SpeakOptions
tts.speak() yöntemi için 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
sayı isteğe bağlı
0 ile 2 arasında (0 en düşük, 2 en yüksek) konuşma tonu. 1,0 bu sesin varsayılan perdesine 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
sayı isteğe bağlı
0 ile 1 (bu değerler dahil) arasında konuşma ses düzeyi. 0 en düşük, 1 ise en yüksek konuşma ses düzeyidir. Varsayılan değer 1, 0'dır.
TtsClient
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.
-
source
İstekte bulunan kullanıcının türü.
TtsClientSource
İstekte bulunan kullanıcının türü.
Enum
"chromefeature"
"uzantı"
VoiceGender
Cinsiyet artık kullanılmıyor olup yoksayılacak.
Enum
"male"
"female"
Yöntemler
updateLanguage()
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
-
durum
Dilin yükleme durumu.
updateVoices()
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
TtsVoice[]
Konuşma sentezi için kullanılabilen sesleri temsil eden
tts.TtsVoice
nesneleri dizisi.
Etkinlikler
onInstallLanguageRequest
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 sonuç olarak ttsEngine.updateLanguage öğesini çağırı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
-
talep eden
-
lang
dize
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
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
-
talep eden
-
lang
dize
-
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 alana kadar söylenen geçerli söylenmeyi 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. 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
-
söylenen
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.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 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
-
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ümlersendError
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 ç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