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çinevent.charIndex
komutunu kullanın dokunun.'sentence'
: Cümle sınırına ulaşıldı. Mevcut anahtar kelimeleri belirlemek içinevent.charIndex
konuşma konumu.'marker'
: Bir SSML işaretçisine ulaşıldı. Geçerli konuşmayı belirlemek içinevent.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österevent.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
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
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
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
Cinsiyet kullanımdan kaldırılmıştır ve yoksayılacaktır.
Enum
"erkek"
"kadın"
Yöntemler
updateVoices()
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
TtsVoice[]
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.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