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çinevent.charIndex
işlevini kullanın.'sentence'
: Cümle sınırına ulaşıldı. Geçerli konuşma konumunu belirlemek içinevent.charIndex
değerini kullanın.'marker'
: Bir SSML işaretçisine ulaşıldı. Mevcut konuşma konumunu belirlemek içinevent.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
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
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
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
Cinsiyet desteği sonlandırılmış olup yoksayılacaktır.
Enum
Yöntemler
updateVoices()
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
TtsVoice[]
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.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ümlersendError
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