Açıklama
Sentezlenmiş metin okumayı (TTS) oynatmak için chrome.tts
API'yi kullanın. Bir uzantının konuşma motoru uygulamasına olanak tanıyan ilgili ttsEngine
API'sini de inceleyin.
Chrome bu özelliği Windows (SAPI 5 kullanarak), Mac OS X ve ChromeOS'te işletim sisteminin sağladığı konuşma sentezi özelliklerini kullanarak sunar. Kullanıcılar tüm platformlarda kendilerini alternatif konuşma motorları olarak kaydeden uzantıları yükleyebilir.
İzinler
tts
Kavramlar ve kullanım
Konuşma oluştur
Konuşmak için uzantınızdan speak()
numaralı telefonu arayın. Örneğin:
chrome.tts.speak('Hello, world.');
Konuşmayı hemen durdurmak için stop()
numaralı telefonu aramanız yeterli:
chrome.tts.stop();
Konuşma hızı, ses perdesi gibi çeşitli konuşma özelliklerini kontrol eden seçenekler sağlayabilirsiniz. Örneğin:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Ayrıca, dili belirtmek iyi bir fikirdir. Böylece, bu dili (ve varsa bölgesel lehçeyi) destekleyen bir sentezleyici seçilebilir.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Varsayılan olarak, speak()
için yapılan her çağrı devam eden konuşmayı kesintiye uğratır ve hemen konuşur. Aramanın herhangi bir işlemi kesintiye uğratıp uğratmadığını belirlemek için isSpeaking()
numaralı telefonu arayabilirsiniz. Ayrıca bu ifadenin, mevcut telaffuz bittiğinde söylenecek bir ifade sırasına eklenmesini sağlamak için enqueue
seçeneğini kullanabilirsiniz.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
Tüm seçeneklerin tam açıklamasını tts.speak()
sayfasında bulabilirsiniz. Tüm konuşma motorları tüm seçenekleri desteklemez.
Hataları yakalamak ve speak()
işlevini doğru şekilde çağırdığınızdan emin olmak için bağımsız değişken almayan bir geri çağırma işlevi iletin. Herhangi bir hata olup olmadığını görmek için geri çağırmanın içinde runtime.lastError
bölümünü kontrol edin.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
Geri çağırma, motor konuşma oluşturmaya başlamadan hemen önce geri gelir. Geri çağırmanın amacı, konuşma sentezleme ve çıkışı sürecinde ortaya çıkabilecek tüm olası hataları yakalamak için değil, TTS API'yi kullanımınızdaki söz dizimi hataları konusunda sizi uyarmaktır. Bu hataları da yakalamak için bir sonraki bölümde açıklanan etkinlik işleyiciyi kullanmanız gerekir.
Etkinlikleri dinleme
Sentezlenmiş konuşmanın durumu hakkında daha fazla gerçek zamanlı bilgi almak için speak()
öğesine seçeneklerde şunun gibi bir etkinlik işleyici iletin:
chrome.tts.speak(
utterance,
{
onEvent: function(event) {
console.log('Event ' + event.type + ' at position ' + event.charIndex);
if (event.type == 'error') {
console.log('Error: ' + event.errorMessage);
}
}
},
callback
);
Her etkinlikte bir etkinlik türü, söylene göre geçerli konuşmanın karakter dizini ve hata etkinlikleri için isteğe bağlı bir hata mesajı bulunur. Etkinlik türleri şunlardır:
'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.'interrupted'
: Bu ifade,speak()
veyastop()
numarasına yapılan başka bir arama nedeniyle yarıda kesildi ve tamamlanmadı.'cancelled'
: Bu ifade sıraya alındı, ancak daha sonraspeak()
veyastop()
numarasına yapılan başka bir arama tarafından iptal edildi ve hiç konuşmaya başlanmadı.'error'
: Motora özel bir hata oluştuğu için bu ifade sesli okunamıyor. Ayrıntılı bilgi içinevent.errorMessage
adresini kontrol edin.
Etkinlik türlerinden dördü ('end'
, 'interrupted'
, 'cancelled'
ve 'error'
) nihaidir. Bu etkinliklerden biri alındıktan sonra, bu ifade artık konuşmaz ve bu ifadeden yeni etkinlik alınmaz.
Bazı sesler tüm etkinlik türlerini desteklemeyebilir, bazı sesler de hiç etkinlik göndermeyebilir. Belirli etkinlikleri göndermediği sürece bir sesi kullanmak istemiyorsanız seçenekler nesnesinin requiredEventTypes
üyesinde istediğiniz etkinlikleri iletin veya gereksinimlerinizi karşılayan bir ses seçmek için getVoices()
işlevini kullanın. Her ikisi de aşağıda açıklanmıştır.
SSML işaretlemesi
Bu API'de kullanılan ifadeler, Konuşma Sentezi Biçimlendirme Dili (SSML) kullanılan işaretlemeyi içerebilir. SSML kullanıyorsanız speak()
için ilk bağımsız değişken, bir belge parçası değil, XML başlığı ve üst düzey <speak>
etiketi içeren tam bir SSML belgesi olmalıdır.
Örneğin:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
Tüm konuşma motorları tüm SSML etiketlerini desteklemez ve bazıları SSML'yi hiç desteklemeyebilir. Ancak tüm motorların, desteklemedikleri SSML'yi yoksayıp alttaki metni konuşmaya devam etmesi gerekir.
Ses seçin
Varsayılan olarak Chrome, dile bağlı olarak söylemek istediğiniz her ifade için en uygun sesi seçer. Çoğu Windows, Mac OS X ve ChromeOS sisteminde, işletim sistemi tarafından sağlanan konuşma sentezi en az bir dildeki herhangi bir metni söyleyebilmelidir. Ancak bazı kullanıcılar, işletim sistemlerinden ve diğer Chrome uzantıları tarafından uygulanan konuşma motorlarından çeşitli seslere sahip olabilir. Bu gibi durumlarda, uygun sesi seçmek veya kullanıcıya bir seçenek listesi sunmak için özel kod uygulayabilirsiniz.
Tüm seslerin listesini almak için getVoices()
yöntemini çağırın ve bağımsız değişkeni olarak TtsVoice
nesne dizisi alan bir işlev iletin:
chrome.tts.getVoices(
function(voices) {
for (var i = 0; i < voices.length; i++) {
console.log('Voice ' + i + ':');
console.log(' name: ' + voices[i].voiceName);
console.log(' lang: ' + voices[i].lang);
console.log(' extension id: ' + voices[i].extensionId);
console.log(' event types: ' + voices[i].eventTypes);
}
}
);
Türler
EventType
Enum
"end"
"word"
"sentence"
"interrupted"
"cancelled"
"error"
"pause"
TtsEvent
Bir ifadenin durumunu bildirmek için TTS motorundan gelen etkinlik.
Özellikler
-
charIndex
numara isteğe bağlı
İfadedeki geçerli karakterin dizini. Kelime etkinliklerinde ise etkinlik bir kelimenin sonunda, sonraki kelimenin başlangıcından önce tetiklenir.
charIndex
, metinde söylenecek bir sonraki kelimenin başındaki bir noktayı temsil eder. -
errorMessage
string isteğe bağlı
Etkinlik türü
error
ise hata açıklaması. -
length
numara isteğe bağlı
Chrome 74 ve sonraki sürümlerSöylemin sonraki bölümünün uzunluğu. Örneğin, bir
word
etkinliğinde bu, bir sonra konuşulacak kelimenin uzunluğudur. Konuşma motoru tarafından ayarlanmazsa -1 olarak ayarlanır. -
tür
Tür, konuşma başlar başlamaz
start
, kelime sınırına ulaşıldığındaword
, cümle sınırına ulaşıldığındasentence
, bir SSML işaret öğesine ulaşıldığındamarker
, ifadenin sonuna ulaşıldığındaend
, ifade sona ermeden durdurulduğunda veya kesildiğindeinterrupted
, henüz sentezlenmeden önce sıradan kaldırıldığındacancelled
veya başka bir hata oluştuğundaerror
olabilir. Konuşma duraklatıldığında, belirli bir ifade ortasında duraklatıldığındapause
etkinliği tetiklenir ve bir söyleniş devam ettirilirseresume
tetiklenir. Konuşma, söylenenler arasında duraklatılırsa duraklatma ve devam ettirme etkinliklerinin tetiklenmeyebileceğini unutmayın.
TtsOptions
TTS motoru için konuşma seçenekleri.
Özellikler
-
desiredEventTypes
string[] isteğe bağlı
Dinlemek istediğiniz TTS etkinlik türleri. Eksikse tüm etkinlik türleri gönderilebilir.
-
sıraya almak
boole isteğe bağlı
True (doğru) değerine ayarlanırsa, TTS zaten devam ediyorsa bu söyleneni sıraya alır. False (yanlış) değerine ayarlanırsa (varsayılan), geçerli konuşmayı keser ve bu yeni ifadeyi söylemeden önce konuşma sırasını temizler.
-
extensionId
string isteğe bağlı
Biliniyorsa kullanılacak konuşma motorunun uzantı kimliği.
-
gender
VoiceGender isteğe bağlı
Chrome 77'den 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 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. 0,1'in altındaki veya 10.0'ın üzerindeki değerlere kesinlikle izin verilmez ancak birçok seste minimum ve maksimum hızlar daha da kısıtlanır. Örneğin, 3,0'dan büyük bir değer belirtseniz bile belirli bir ses normalin 3 katından daha hızlı konuşmayabilir.
-
requiredEventTypes
string[] isteğe bağlı
Sesin desteklemesi gereken TTS etkinlik türleri.
-
voiceName
string isteğe bağlı
Sentez için kullanılacak sesin adı. Boşsa mevcut seslerden birini kullanır.
-
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.
-
onEvent
void isteğe bağlı
Bu işlev, söylenen söylenme sürecinde gerçekleşen olaylarla çağrılır.
onEvent
işlevi şu şekilde görünür:(event: TtsEvent) => {...}
-
event
Metin okuma motorundan gelen bu ifadenin durumunu gösteren güncelleme etkinliği.
-
TtsVoice
Konuşma sentezi için kullanılabilen bir sesin açıklaması.
Özellikler
-
eventTypes
EventType[] isteğe bağlı
Bu sesin gönderebildiği tüm geri arama etkinliği türleri.
-
extensionId
string isteğe bağlı
Bu sesi sağlayan uzantının kimliği.
-
gender
VoiceGender isteğe bağlı
Chrome 70'ten itibaren kullanımdan kaldırıldıCinsiyet desteği sonlandırılmış olup yoksayılacaktır.
Bu sesin cinsiyeti.
-
lang
string isteğe bağlı
Bu sesin desteklediği dil (dil-bölge biçiminde). Örnekler: "en", "en-US", "en-GB", "zh-CN".
-
uzaktan
boole isteğe bağlı
Değer true ise sentez motoru uzak bir ağ kaynağıdır. Daha yüksek gecikme olabilir ve bant genişliği maliyetleri söz konusu olabilir.
-
voiceName
string isteğe bağlı
Sesin adı.
VoiceGender
Cinsiyet desteği sonlandırıldı ve cinsiyet yoksayıldı.
Enum
Yöntemler
getVoices()
chrome.tts.getVoices(
callback?: function,
)
Kullanılabilir tüm seslerin bir dizisini alır.
Parametreler
-
geri çağırma
Functions (isteğe bağlı)
callback
parametresi şu şekilde görünür:(voices: TtsVoice[]) => void
-
sesler
TtsVoice[]
Konuşma sentezi için kullanılabilir sesleri temsil eden
tts.TtsVoice
nesne dizisi.
-
İlerlemeler
-
Promise<TtsVoice[]>
Chrome 101 ve sonraki sürümlerVaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırmalar sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
Motorun şu anda konuşmakta olup olmadığını kontrol eder. Mac OS X'te, konuşma Chrome tarafından başlatılmamış olsa bile, sistem konuşma motoru konuşurken sonuç doğrudur.
Parametreler
-
geri çağırma
Functions (isteğe bağlı)
callback
parametresi şu şekilde görünür:(speaking: boolean) => void
-
konuşmak
boolean
Konuşuyorsanız doğru, aksi takdirde yanlış.
-
İlerlemeler
-
Promise<boolean>
Chrome 101 ve sonraki sürümlerVaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırmalar sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.
pause()
chrome.tts.pause()
Bir ifadenin ortasındayken konuşma sentezini duraklatır. Devam ettirme veya durdurma çağrısı, konuşmanın duraklatılmasını kaldırır.
resume()
chrome.tts.resume()
Konuşma duraklatıldıysa kaldığı yerden devam eder.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
Metin okuma motoru kullanarak metni okur.
Parametreler
-
söylem
dize
Söylenecek metin; düz metin veya eksiksiz, iyi biçimlendirilmiş bir SSML dokümanı. SSML'yi desteklemeyen konuşma motorları, etiketleri kaldırır ve metni okur. Metnin maksimum uzunluğu 32.768 karakterdir.
-
seçenekler
TtsOptions isteğe bağlı
Konuşma seçenekleri.
-
geri çağırma
Functions (isteğe bağlı)
callback
parametresi şu şekilde görünür:() => void
İlerlemeler
-
Promise<void>
Chrome 101 ve sonraki sürümlerVaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırmalar sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.
stop()
chrome.tts.stop()
Geçerli konuşmayı durdurur ve bekleyen ifadelerin sırasını temizler. Ayrıca, konuşma duraklatıldıysa bir sonraki çağrı için duraklatma kaldırılır.
Etkinlikler
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
getVoices tarafından döndürülecek tts.TtsVoice
listesi değiştiğinde çağrılır.
Parametreler
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:() => void