Açıklama
Sentezlenmiş metin okuma (TTS) çalmak için chrome.tts
API'yi kullanın. Ayrıca, uzantıların konuşma motoru uygulamasına izin veren ilgili ttsEngine
API'sine de bakın.
İzinler
tts
Genel Bakış
Chrome, Windows (SAPI 5 kullanan), Mac OS X ve ChromeOS'te konuşma için yerel destek sunar. işletim sistemi tarafından sağlanan konuşma sentezi özellikleridir. Tüm platformlarda kullanıcı Kendilerini alternatif konuşma motorları olarak kaydeden uzantılar yükleme
Konuşma oluşturuluyor
Konuşmak için uzantınızdan speak()
adlı kişiyi arayın. Örneğin:
chrome.tts.speak('Hello, world.');
Konuşmayı hemen durdurmak için stop()
numaralı telefonu aramanız yeterlidir:
chrome.tts.stop();
Konuşmanın hızı, perdesi ve daha fazla. Örneğin:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Ayrıca dili belirtmek de iyi bir fikirdir. Böylece, o dili destekleyen bir sentezleyici (ve yerel lehçe) seçildiğinden emin olun.
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ı keser ve hemen konuşur. Alıcı:
bir çağrının kesintiye neden olup olmadığını belirlemek istiyorsanız isSpeaking()
numaralı telefonu arayabilirsiniz. Ayrıca,
bu ifadenin, tekrar gelen bir ifadenin kuyruğuna eklenmesi için enqueue
devam eden konuşma sona erdiğinde de söylenebilir.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
Tüm seçeneklerle ilgili kapsamlı açıklamaları aşağıdaki tts.speak
bölümünde bulabilirsiniz. Tüm konuşmalar değil
tüm seçenekleri destekler.
Hataları yakalamak ve speak()
öğesini doğru şekilde çağırdığınızdan emin olmak için şu özelliklere sahip bir geri çağırma işlevi iletin:
hiçbir bağımsız değişken kabul etmez. Geri aramada runtime.lastError
kontrol edin ve herhangi bir bilgi olup olmadığına bakın.
hatalar.
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 döner. Belgenin geri çağırma, TTS API kullanımınızdaki söz dizimi hataları konusunda sizi uyarmaktır, olası tüm olası durumları yakalamak için değildir konuşma sentezleme ve çıkışında oluşabilecek hataları ifade eder. Bu hataları yakalamak için aşağıda açıklandığı gibi bir etkinlik işleyici kullanmanız gerekir.
Etkinlikleri dinleme
Sentezlenmiş konuşmanın durumu hakkında daha gerçek zamanlı bilgi almak için şurada bir etkinlik işleyiciye iletin:
speak()
için seçenekler şunlardır:
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 etkinlik bir etkinlik türü içerir. Bu etkinlik, söz konusu konuşmanın ve hata etkinlikleri için isteğe bağlı bir hata mesajı gösterilir. Etkinlik türleri şunlardı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.'interrupted'
: Bu telaffuz,speak()
veyastop()
numaralı telefona yapılan başka bir çağrıyla kesintiye uğradı ve bitmeyebilir.'cancelled'
: Bu ifade sıraya alındı, ancakspeak()
veyastop()
ve hiç konuşmaya başlamadım.'error'
: Motora özel bir hata oluştu ve bu söylenen sesli okunamıyor. Kontrol et Ayrıntılı bilgi içinevent.errorMessage
.
Dört etkinlik türü ('end'
, 'interrupted'
, 'cancelled'
ve 'error'
) nihaidir. Şu tarihten sonra:
etkinliklerden biri alındığında, bu konuşma artık okunmaz ve bundan yeni bir etkinlik gelmez.
alınacağını da belirtir.
Bazı sesler tüm etkinlik türlerini desteklemeyebilir, bazı sesler ise hiç etkinlik göndermeyebilir. Şu durumda:
belirli etkinlikleri göndermediği sürece bir ses kullanmak istemiyorsanız
Seçenekler nesnesinin requiredEventTypes
üyesi olun veya uyan bir ses seçmek için getVoices()
kısayolunu kullanın
ve gereksinimlerinizi karşılayın. Her ikisi de aşağıda açıklanmıştır.
SSML işaretlemesi
Bu API'de kullanılan söylemler, Konuşma Sentezi Biçimlendirme Dili kullanılarak işaretleme içerebilir.
(SSML) ile uyumludur. SSML kullanıyorsanız speak()
öğesinin ilk bağımsız değişkeni,
XML üstbilgisi ve üst düzey <speak>
etiketi, doküman parçası değil.
Ö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 motorların desteklemedikleri SSML'leri yoksayması ve yine de temel metni söylemesi gerekir.
Ses seçme
Varsayılan olarak Chrome, ses kayıtlarına göre, söylemek istediğiniz her ifade için en uygun sesi seçer. dilini girin. Çoğu Windows, Mac OS X ve ChromeOS sisteminde işletim sisteminin tüm metinleri en az bir dilde okuyabilmesi gerekir. Bazı kullanıcılar işletim sistemlerinden ve uygulamaya konan konuşma motorlarından diğer Chrome uzantıları tarafından yapıldığını varsayalım. Bu gibi durumlarda, uygun içeriği seçmek için özel kod veya kullanıcıya seçenekler listesi sunmak için kullanılır.
Tüm seslerin listesini almak için getVoices()
çağrısını yapın ve
Bağımsız değişkeni olarak TtsVoice
nesne:
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
"start"
"end"
"kelime"
"sentence"
"marker"
"kesintili"
"cancelled"
"error"
"pause"
"resume"
TtsEvent
TTS motorundan, bir ifadenin durumunu ileten etkinlik.
Özellikler
-
charIndex
sayı isteğe bağlı
İfadedeki geçerli karakterin dizini. Kelime etkinliklerinde etkinlik bir kelimenin sonunda ve bir sonraki kelimenin başlangıcından önce tetiklenir.
charIndex
, metinde, söylenecek sonraki kelimenin başında bir noktayı temsil eder. -
errorMessage
dize isteğe bağlı
Etkinlik türü
error
ise hata açıklaması. -
uzunluk
sayı isteğe bağlı
Chrome 74 ve sonraki sürümler 'nı inceleyin.İfadenin sonraki bölümünün uzunluğu. Örneğin, bir
word
etkinliğinde bu, daha sonra söylenecek kelimenin uzunluğudur. Konuşma motoru tarafından ayarlanmazsa -1 olarak ayarlanır. -
tür
Tür, konuşma başlar başlamaz
start
, bir kelime sınırına ulaşıldığındaword
, bir cümle sınırına ulaşıldığındasentence
, bir SSML işaret öğesine ulaşıldığındamarker
, ifadenin sonuna ulaşıldığındaend
, söylenen sonuna ulaşmadan durdurulduğunda veya kesildiğindeinterrupted
, hiç sentezlenmeden sıradan kaldırıldığındacancelled
veya başka herhangi bir hata meydana geldiğindeerror
olabilir. Konuşma duraklatıldığında, belirli bir ifade ortada duraklatılırsapause
etkinliği ve bir söylem konuşmayı devam ettiriyorsaresume
etkinliği tetiklenir. İfadeler arasında konuşma duraklatılırsa duraklatma ve devam ettirme etkinliklerinin etkinleşmeyebileceğ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 devam ediyorsa bu ifadeyi sıraya alır. False (yanlış) değerine ayarlanırsa (varsayılan), mevcut konuşmayı keser ve bu yeni ifadeyi söylemeden önce konuşma sırasını temizler.
-
extensionId
dize isteğe bağlı
Biliniyorsa, kullanılacak konuşma motorunun uzantı kimliği.
-
gender
VoiceGender isteğe bağlı
Chrome 77'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, bir 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. 0,1'in altındaki ve 10,0'ın üzerindeki değerlere kesinlikle izin verilmez. Ancak birçok ses minimum ve maksimum hızları daha da sınırlandırır. Örneğin, 3,0'dan büyük bir değer belirtseniz bile belirli bir ses, gerçekte 3 kat daha hızlı konuşmayabilir.
-
requiredEventTypes
string[] isteğe bağlı
Sesin desteklemesi gereken TTS etkinlik türleri.
-
voiceName
dize isteğe bağlı
Sentez için kullanılacak sesin adı. Boşsa mevcut seslerden herhangi birini kullanır.
-
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.
-
onEvent
geçersiz isteğe bağlı
Bu işlev, söylenenlerin söylenmesi sürecinde meydana gelen olaylarla birlikte çağrılır.
onEvent
işlevi aşağıdaki gibi görünür:(event: TtsEvent) => {...}
-
etkinlik
Metin okuma motorunda, bu ifadenin durumunu gösteren güncelleme etkinliği.
-
TtsVoice
Konuşma sentezi için kullanılabilen sesin açıklaması.
Özellikler
-
eventTypes
EventType[] isteğe bağlı
Bu sesin gönderebileceği tüm geri çağırma etkinliği türleri.
-
extensionId
dize isteğe bağlı
Bu sesi sağlayan uzantının kimliği.
-
gender
VoiceGender isteğe bağlı
Chrome 70'ten bu yana desteği sonlandırıldıCinsiyet kullanımdan kaldırılmıştır ve yoksayılacaktır.
Bu sesin cinsiyeti.
-
lang
dize isteğe bağlı
Bu sesin desteklediği dil (language-region biçiminde). Örnekler: "en", "en-US", "en-GB", "zh-CN".
-
uzaktan kumanda
boole isteğe bağlı
Doğru değerine ayarlanırsa sentez motoru uzak bir ağ kaynağıdır. Gecikme daha yüksek olabilir ve bant genişliği maliyetlerine neden olabilir.
-
voiceName
dize isteğe bağlı
Sesin adı.
VoiceGender
Cinsiyet kullanımdan kaldırılmıştır ve yok sayılır.
Enum
"erkek"
"kadın"
Yöntemler
getVoices()
chrome.tts.getVoices(
callback?: function,
)
Mevcut tüm seslerin bir dizisini alır.
Parametreler
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(voices: TtsVoice[]) => void
-
sesler
TtsVoice[]
Konuşma sentezi için mevcut sesleri temsil eden
tts.TtsVoice
nesneleri dizisi.
-
İadeler
-
Promise<TtsVoice[]>
Chrome 101 ve sonraki sürümler 'nı inceleyin.Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
Motorun o anda konuşup konuşmadığını kontrol eder. Mac OS X'te, konuşma Chrome tarafından başlatılmamış olsa bile, sistem konuşma motoru her konuştuğunda sonuç doğrudur.
Parametreler
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(speaking: boolean) => void
-
konuşmak
boolean
Konuşuyorsa doğru, değilse yanlış değerini alır.
-
İadeler
-
Promise<boolean>
Chrome 101 ve sonraki sürümler 'nı inceleyin.Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.
pause()
chrome.tts.pause()
Potansiyel olarak bir cümlenin ortasında konuşma sentezini duraklatır. Devam ettirme veya durdurma çağrısı yapıldığında konuşmanın duraklatılması sona erer.
resume()
chrome.tts.resume()
Konuşma duraklatıldıysa konuşmaya kaldığı yerden devam eder.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
Metin okuma motoru, metinleri okur.
Parametreler
-
söylenen
dize
Konuşacak metin (düz metin veya tam, iyi biçimlendirilmiş bir SSML dokümanı). SSML'yi desteklemeyen konuşma motorları, etiketleri kaldırır ve metni okur. Metin en fazla 32.768 karakter uzunluğunda olabilir.
-
seçenekler
TtsOptions isteğe bağlı
Konuşma seçenekleri.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Taahhüt<void>
Chrome 101 ve sonraki sürümler 'nı inceleyin.Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.
stop()
chrome.tts.stop()
Devam eden konuşmayı durdurur ve beklemedeki ifade sırasını temizler. Ayrıca, konuşma duraklatılmışsa bir sonraki çağrıda konuşmanın duraklatması 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