refresh date: 2026-09-25 robots: noindex
Deskripsi
Gunakan chrome.tts API untuk memutar text-to-speech (TTS) yang disintesis. Lihat juga ttsEngine API terkait, yang memungkinkan ekstensi mengimplementasikan mesin ucapan.
Izin
ttsRingkasan
Chrome memberikan dukungan native untuk ucapan di Windows (menggunakan SAPI 5), Mac OS X, dan ChromeOS, menggunakan kemampuan sintesis ucapan yang disediakan oleh sistem operasi. Di semua platform, pengguna dapat menginstal ekstensi yang mendaftarkan dirinya sebagai mesin ucapan alternatif.
Membuat ucapan
Panggil speak() dari ekstensi Anda untuk berbicara. Contoh:
chrome.tts.speak('Hello, world.');
Untuk segera berhenti berbicara, cukup panggil stop():
chrome.tts.stop();
Anda dapat memberikan opsi yang mengontrol berbagai properti ucapan, seperti kecepatan, nada, dan lainnya. Contoh:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Sebaiknya tentukan juga bahasa sehingga synthesizer yang mendukung bahasa tersebut (dan dialek regional, jika ada) dipilih.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Secara default, setiap panggilan ke speak() akan menginterupsi ucapan yang sedang berlangsung dan langsung berbicara. Untuk
menentukan apakah panggilan akan mengganggu sesuatu, Anda dapat memanggil isSpeaking(). Selain itu, Anda
dapat menggunakan opsi enqueue untuk menambahkan ucapan ini ke antrean ucapan yang akan
diucapkan setelah ucapan saat ini selesai.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
Deskripsi lengkap semua opsi dapat ditemukan di tts.speak di bawah. Tidak semua mesin
ucapan akan mendukung semua opsi.
Untuk menangkap error dan memastikan Anda memanggil speak() dengan benar, teruskan fungsi callback yang tidak menggunakan argumen. Di dalam callback, periksa runtime.lastError untuk melihat apakah ada error.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
Callback akan langsung ditampilkan, sebelum mesin mulai menghasilkan ucapan. Tujuan callback adalah untuk memberi tahu Anda tentang error sintaksis dalam penggunaan TTS API, bukan untuk menangkap semua kemungkinan error yang mungkin terjadi dalam proses sintesis dan output ucapan. Untuk menangkap error ini juga, Anda harus menggunakan pemroses peristiwa, yang dijelaskan di bawah.
Memproses peristiwa
Untuk mendapatkan informasi real-time selengkapnya tentang status ucapan yang disintesis, teruskan pemroses peristiwa di
opsi ke speak(), seperti ini:
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
);
Setiap peristiwa mencakup jenis peristiwa, indeks karakter ucapan saat ini yang terkait dengan ujaran, dan untuk peristiwa error, pesan error opsional. Jenis peristiwanya adalah:
'start': Mesin telah mulai mengucapkan ucapan.'word': Batas kata tercapai. Gunakanevent.charIndexuntuk menentukan posisi ucapan saat ini.'sentence': Batas kalimat tercapai. Gunakanevent.charIndexuntuk menentukan posisi ucapan saat ini.'marker': Penanda SSML tercapai. Gunakanevent.charIndexuntuk menentukan posisi ucapan saat ini.'end': Mesin telah selesai mengucapkan ucapan.'interrupted': Ucapan ini terganggu oleh panggilan lain kespeak()ataustop()dan tidak selesai.'cancelled': Ucapan ini dimasukkan ke dalam antrean, tetapi kemudian dibatalkan oleh panggilan lain kespeak()ataustop()dan tidak pernah mulai diucapkan sama sekali.'error': Terjadi error khusus mesin dan ucapan ini tidak dapat diucapkan. Lihatevent.errorMessageuntuk mengetahui detailnya.
Empat jenis peristiwa—'end', 'interrupted', 'cancelled', dan 'error'—bersifat final. Setelah
salah satu peristiwa tersebut diterima, ucapan ini tidak akan lagi diucapkan dan tidak ada peristiwa baru dari
ucapan ini yang akan diterima.
Beberapa suara mungkin tidak mendukung semua jenis peristiwa, dan beberapa suara mungkin tidak mengirim peristiwa sama sekali. Jika Anda
tidak ingin menggunakan suara kecuali jika suara tersebut mengirimkan peristiwa tertentu, teruskan peristiwa yang Anda perlukan di
anggota requiredEventTypes dari objek opsi, atau gunakan getVoices() untuk memilih suara yang memenuhi
persyaratan Anda. Keduanya didokumentasikan di bawah.
Markup SSML
Frasa yang digunakan dalam API ini dapat menyertakan markup menggunakan Speech Synthesis Markup Language
(SSML). Jika Anda menggunakan SSML, argumen pertama untuk speak() harus berupa dokumen SSML lengkap dengan
header XML dan tag <speak> level teratas, bukan fragmen dokumen.
Contoh:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
Tidak semua mesin ucapan akan mendukung semua tag SSML, dan beberapa mungkin tidak mendukung SSML sama sekali, tetapi semua mesin harus mengabaikan SSML yang tidak didukung dan tetap mengucapkan teks yang mendasarinya.
Memilih suara
Secara default, Chrome memilih suara yang paling sesuai untuk setiap ucapan yang ingin Anda ucapkan, berdasarkan bahasa. Di sebagian besar sistem Windows, Mac OS X, dan ChromeOS, sintesis ucapan yang disediakan oleh sistem operasi seharusnya dapat mengucapkan teks apa pun dalam setidaknya satu bahasa. Namun, beberapa pengguna mungkin memiliki berbagai suara yang tersedia, dari sistem operasi mereka dan dari mesin ucapan yang diterapkan oleh ekstensi Chrome lainnya. Dalam kasus tersebut, Anda dapat menerapkan kode kustom untuk memilih suara yang sesuai, atau untuk menampilkan daftar pilihan kepada pengguna.
Untuk mendapatkan daftar semua suara, panggil getVoices() dan teruskan fungsi yang menerima array objek TtsVoice sebagai argumennya:
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);
}
}
);
Jenis
EventType
Enum
"start"
"end"
"word"
"sentence"
"marker"
"interrupted"
"cancelled"
"error"
"pause"
"resume"
TtsEvent
Peristiwa dari mesin TTS untuk mengomunikasikan status ucapan.
Properti
-
charIndex
number opsional
Indeks karakter saat ini dalam ucapan. Untuk peristiwa kata, peristiwa diaktifkan di akhir satu kata dan sebelum awal kata berikutnya.
charIndexmewakili titik dalam teks di awal kata berikutnya yang akan diucapkan. -
errorMessage
string opsional
Deskripsi error, jika jenis peristiwa adalah
error. -
panjang
number opsional
Chrome 74+Panjang bagian ucapan berikutnya. Misalnya, dalam peristiwa
word, ini adalah panjang kata yang akan diucapkan berikutnya. Nilainya akan ditetapkan ke -1 jika tidak ditetapkan oleh mesin ucapan. -
jenis
Jenisnya dapat berupa
startsegera setelah ucapan dimulai,wordsaat batas kata tercapai,sentencesaat batas kalimat tercapai,markersaat elemen tanda SSML tercapai,endsaat akhir ucapan tercapai,interruptedsaat ucapan dihentikan atau terganggu sebelum mencapai akhir,cancelledsaat ucapan dihapus dari antrean sebelum disintesis, atauerrorsaat terjadi error lainnya. Saat menjeda ucapan, peristiwapauseakan diaktifkan jika ucapan tertentu dijeda di tengah, danresumejika ucapan melanjutkan ucapan. Perhatikan bahwa peristiwa jeda dan lanjutkan mungkin tidak diaktifkan jika ucapan dijeda di antara ucapan.
TtsOptions
Opsi ucapan untuk mesin TTS.
Properti
-
desiredEventTypes
string[] opsional
Jenis peristiwa TTS yang ingin Anda dengarkan. Jika tidak ada, semua jenis peristiwa dapat dikirim.
-
enqueue
boolean opsional
Jika benar, masukkan ucapan ini ke dalam antrean jika TTS sudah berjalan. Jika salah (default), akan mengganggu ucapan saat ini dan mengosongkan antrean ucapan sebelum mengucapkan ucapan baru ini.
-
extensionId
string opsional
ID ekstensi mesin ucapan yang akan digunakan, jika diketahui.
-
gender
VoiceGender opsional
Tidak digunakan lagi sejak Chrome 77Gender tidak digunakan lagi dan akan diabaikan.
Gender suara untuk ucapan yang disintesis.
-
lang
string opsional
Bahasa yang akan digunakan untuk sintesis, dalam bentuk bahasa-wilayah. Contoh: 'en', 'en-US', 'en-GB', 'zh-CN'.
-
pitch
number opsional
Tinggi nada bicara antara 0 dan 2 inklusif, dengan 0 sebagai yang terendah dan 2 sebagai yang tertinggi. 1,0 sesuai dengan nada default suara.
-
laju
number opsional
Kecepatan bicara relatif terhadap kecepatan default untuk suara ini. 1,0 adalah kecepatan default, biasanya sekitar 180 hingga 220 kata per menit. 2,0 adalah dua kali lebih cepat, dan 0,5 adalah setengahnya. Nilai di bawah 0,1 atau di atas 10,0 dilarang keras, tetapi banyak suara akan membatasi kecepatan minimum dan maksimum lebih lanjut—misalnya, suara tertentu mungkin tidak benar-benar berbicara lebih cepat dari 3 kali normal meskipun Anda menentukan nilai yang lebih besar dari 3,0.
-
requiredEventTypes
string[] opsional
Jenis peristiwa TTS yang harus didukung oleh suara.
-
voiceName
string opsional
Nama suara yang akan digunakan untuk sintesis. Jika kosong, gunakan suara yang tersedia.
-
volume
number opsional
Volume ucapan antara 0 dan 1 inklusif, dengan 0 sebagai yang terendah dan 1 sebagai yang tertinggi, dengan default 1,0.
-
onEvent
void optional
Fungsi ini dipanggil dengan peristiwa yang terjadi dalam proses pengucapan ujaran.
Fungsi
onEventterlihat seperti:(event: TtsEvent) => {...}
-
event
Peristiwa update dari mesin text-to-speech yang menunjukkan status ucapan ini.
-
TtsVoice
Deskripsi suara yang tersedia untuk sintesis ucapan.
Properti
-
eventTypes
EventType[] opsional
Semua jenis peristiwa callback yang dapat dikirim oleh suara ini.
-
extensionId
string opsional
ID ekstensi yang menyediakan suara ini.
-
gender
VoiceGender opsional
Tidak digunakan lagi sejak Chrome 70Gender tidak digunakan lagi dan akan diabaikan.
Gender suara ini.
-
lang
string opsional
Bahasa yang didukung suara ini, dalam bentuk bahasa-wilayah. Contoh: 'en', 'en-US', 'en-GB', 'zh-CN'.
-
remote
boolean opsional
Jika benar (true), mesin sintesis adalah resource jaringan jarak jauh. Latensinya mungkin lebih tinggi dan dapat dikenai biaya bandwidth.
-
voiceName
string opsional
Nama suara.
VoiceGender
Gender tidak digunakan lagi dan diabaikan.
Enum
"male"
"female"
Metode
getVoices()
chrome.tts.getVoices(
callback?: function,
): Promise<TtsVoice[]>
Mendapatkan array dari semua suara yang tersedia.
Parameter
-
callback
fungsi opsional
Parameter
callbackterlihat seperti:(voices: TtsVoice[]) => void
-
suara
TtsVoice[]
Array objek
tts.TtsVoiceyang mewakili suara yang tersedia untuk sintesis ucapan.
-
Hasil
-
Promise<TtsVoice[]>
Chrome 101+Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain harus menggunakan callback.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
): Promise<boolean>
Memeriksa apakah mesin sedang berbicara. Di Mac OS X, hasilnya benar setiap kali mesin ucapan sistem berbicara, meskipun ucapan tersebut tidak dimulai oleh Chrome.
Parameter
-
callback
fungsi opsional
Parameter
callbackterlihat seperti:(speaking: boolean) => void
-
speaking
boolean
Benar jika berbicara, salah jika tidak.
-
Hasil
-
Promise<boolean>
Chrome 101+Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain harus menggunakan callback.
pause()
chrome.tts.pause(): void
Menjeda sintesis ucapan, yang berpotensi terjadi di tengah ucapan. Panggilan untuk melanjutkan atau menghentikan akan membatalkan jeda ucapan.
resume()
chrome.tts.resume(): void
Jika ucapan dijeda, melanjutkan ucapan dari bagian terakhir yang diucapkan.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
): Promise<void>
Mengucapkan teks menggunakan mesin text-to-speech.
Parameter
-
utterance
string
Teks yang akan diucapkan, baik teks biasa maupun dokumen SSML yang lengkap dan terbentuk dengan baik. Mesin ucapan yang tidak mendukung SSML akan menghapus tag dan mengucapkan teks. Panjang maksimum teks adalah 32.768 karakter.
-
opsi
TtsOptions opsional
Opsi ucapan.
-
callback
fungsi opsional
Parameter
callbackterlihat seperti:() => void
Hasil
-
Promise<void>
Chrome 101+Menyelesaikan langsung, sebelum ucapan selesai. Jika terjadi error, promise akan ditolak. Gunakan options.onEvent untuk mendapatkan masukan yang lebih mendetail.
Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain harus menggunakan callback.
stop()
chrome.tts.stop(): void
Menghentikan ucapan saat ini dan menghapus antrean ucapan yang tertunda. Selain itu, jika ucapan dijeda, ucapan tersebut kini akan dilanjutkan untuk panggilan berikutnya.
Acara
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Dipanggil saat daftar tts.TtsVoice yang akan ditampilkan oleh getVoices telah berubah.
Parameter
-
callback
fungsi
Parameter
callbackterlihat seperti:() => void