chrome.tts

Deskripsi

Gunakan chrome.tts API untuk memutar text-to-speech (TTS) yang disintesis. Lihat juga API ttsEngine terkait, yang memungkinkan ekstensi menerapkan mesin ucapan.

Chrome menyediakan kemampuan ini 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 diri sebagai mesin ucapan alternatif.

Izin

tts

Konsep dan penggunaan

Membuat ucapan

Panggil speak() dari ekstensi Anda untuk berbicara. Contoh:

chrome.tts.speak('Hello, world.'); 

Untuk menghentikan ucapan dengan segera, 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 agar 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 mengganggu 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 menyebabkan ucapan ini ditambahkan ke antrean ucapan yang akan diucapkan saat ucapan saat ini telah 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 bagian tts.speak(). Tidak semua mesin ucapan akan mendukung semua opsi.

Untuk menangkap error dan memastikan Anda memanggil speak() dengan benar, teruskan fungsi callback yang tidak memerlukan 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 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 perlu menggunakan pemroses peristiwa, yang dijelaskan di bagian berikutnya.

Memproses peristiwa

Untuk mendapatkan informasi real-time lainnya tentang status ucapan yang disintesis, teruskan pemroses peristiwa dalam 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 relatif terhadap ucapan, dan untuk peristiwa error, pesan error opsional. Jenis peristiwanya adalah:

  • 'start': Mesin telah mulai mengucapkan ucapan.
  • 'word': Batas kata telah tercapai. Gunakan event.charIndex untuk menentukan posisi ucapan saat ini.
  • 'sentence': Batas kalimat telah tercapai. Gunakan event.charIndex untuk menentukan posisi ucapan saat ini.
  • 'marker': Penanda SSML telah tercapai. Gunakan event.charIndex untuk menentukan posisi ucapan saat ini.
  • 'end': Mesin telah selesai mengucapkan ucapan.
  • 'interrupted': Ucapan ini terganggu oleh panggilan lain ke speak() atau stop() dan tidak selesai.
  • 'cancelled': Ucapan ini dimasukkan dalam antrean, tetapi kemudian dibatalkan oleh panggilan lain ke speak() atau stop() dan tidak pernah mulai diucapkan sama sekali.
  • 'error': Terjadi error khusus mesin dan ucapan ini tidak dapat diucapkan. Lihat event.errorMessage untuk 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 mengirimkan peristiwa sama sekali. Jika Anda tidak ingin menggunakan suara kecuali jika suara tersebut mengirim peristiwa tertentu, teruskan peristiwa yang Anda perlukan di anggota requiredEventTypes objek opsi, atau gunakan getVoices() untuk memilih suara yang memenuhi persyaratan Anda. Keduanya dijelaskan di bagian berikut.

Markup SSML

Ucapan yang digunakan dalam API ini dapat mencakup markup menggunakan Bahasa Markup Sintesis Ucapan (SSML). Jika Anda menggunakan SSML, argumen pertama ke speak() harus berupa dokumen SSML lengkap dengan header XML dan tag <speak> tingkat 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 diwajibkan untuk mengabaikan SSML yang tidak didukung dan tetap mengucapkan teks yang mendasarinya.

Pilih 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 harus dapat mengucapkan teks apa pun dalam setidaknya satu bahasa. Namun, beberapa pengguna mungkin memiliki berbagai pilihan 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 menyajikan 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

Chrome 54+

Enum

"start"

"end"

"word"

"sentence"

"marker"

"terganggu"

"dibatalkan"

"error"

"pause"

"resume"

TtsEvent

Peristiwa dari mesin TTS untuk mengomunikasikan status ucapan.

Properti

  • charIndex

    nomor opsional

    Indeks karakter saat ini dalam ucapan. Untuk peristiwa kata, peristiwa diaktifkan di akhir satu kata dan sebelum awal kata berikutnya. charIndex merepresentasikan titik dalam teks di awal kata berikutnya yang akan diucapkan.

  • errorMessage

    string opsional

    Deskripsi error, jika jenis peristiwa adalah error.

  • panjang

    nomor opsional

    Chrome 74+

    Panjang bagian ucapan berikutnya. Misalnya, dalam peristiwa word, ini adalah panjang kata yang akan diucapkan berikutnya. Nilai ini akan ditetapkan ke -1 jika tidak ditetapkan oleh mesin ucapan.

  • jenis

    Jenisnya dapat berupa start segera setelah ucapan dimulai, word saat batas kata tercapai, sentence saat batas kalimat tercapai, marker saat elemen tanda SSML tercapai, end saat akhir ucapan tercapai, interrupted saat ucapan dihentikan atau terganggu sebelum mencapai akhir, cancelled saat dihapus dari antrean sebelum disintesis, atau error saat terjadi error lainnya. Saat menjeda ucapan, peristiwa pause akan diaktifkan jika ucapan tertentu dijeda di tengah, dan resume jika ucapan dilanjutkan. Perhatikan bahwa peristiwa jeda dan lanjutkan mungkin tidak dipicu jika ucapan dijeda di antara ucapan.

TtsOptions

Chrome 77+

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 (true), mengantrekan ucapan ini jika TTS sudah berlangsung. Jika salah (default), akan mengganggu ucapan saat ini dan menghapus 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 77

    Gender 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

    nomor opsional

    Nada bicara antara 0 dan 2 inklusif, dengan 0 adalah yang terendah dan 2 adalah yang tertinggi. 1.0 sesuai dengan nada suara default.

  • laju

    nomor 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 dua kali lebih cepat, dan 0.5 setengah kali lebih cepat. Nilai di bawah 0,1 atau di atas 10,0 tidak diizinkan, tetapi banyak suara akan membatasi kecepatan minimum dan maksimum lebih lanjut—misalnya, suara tertentu mungkin tidak benar-benar berbicara lebih cepat dari 3 kali kecepatan normal meskipun Anda menentukan nilai yang lebih besar dari 3,0.

  • requiredEventTypes

    string[] opsional

    Jenis peristiwa TTS yang harus didukung suara.

  • voiceName

    string opsional

    Nama suara yang akan digunakan untuk sintesis. Jika kosong, akan menggunakan suara yang tersedia.

  • volume

    nomor opsional

    Volume ucapan antara 0 dan 1 inklusif, dengan 0 adalah yang terendah dan 1 adalah yang tertinggi, dengan nilai default 1,0.

  • onEvent

    void opsional

    Fungsi ini dipanggil dengan peristiwa yang terjadi dalam proses pengucapan.

    Fungsi onEvent akan terlihat seperti:

    (event: TtsEvent) => {...}

    • peristiwa

      Peristiwa pembaruan 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 dikirimkan oleh suara ini.

  • extensionId

    string opsional

    ID ekstensi yang menyediakan suara ini.

  • gender

    VoiceGender opsional

    Tidak digunakan lagi sejak Chrome 70

    Gender 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. Hal ini dapat menyebabkan latensi yang lebih tinggi dan biaya bandwidth.

  • voiceName

    string opsional

    Nama suara.

VoiceGender

Chrome 54+ Tidak digunakan lagi sejak Chrome 70

Gender tidak digunakan lagi dan diabaikan.

Enum

"male"

"female"

Metode

getVoices()

chrome.tts.getVoices(): Promise<TtsVoice[]>

Mendapatkan array semua suara yang tersedia.

Hasil

isSpeaking()

chrome.tts.isSpeaking(): Promise<boolean>

Memeriksa apakah mesin saat ini sedang berbicara. Di Mac OS X, hasilnya benar (true) setiap kali mesin ucapan sistem berbicara, meskipun ucapan tidak dimulai oleh Chrome.

Hasil

  • Promise<boolean>

    Chrome 101+

pause()

chrome.tts.pause(): void

Menjeda sintesis ucapan, mungkin di tengah ucapan. Panggilan untuk melanjutkan atau menghentikan akan membatalkan jeda ucapan.

resume()

chrome.tts.resume(): void

Jika ucapan dijeda, akan dilanjutkan dari bagian terakhir yang diucapkan.

speak()

chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
)
: Promise<void>

Mengucapkan teks menggunakan mesin text-to-speech.

Parameter

  • ucapan

    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.

Hasil

  • Promise<void>

    Chrome 101+

stop()

chrome.tts.stop(): void

Menghentikan ucapan saat ini dan menghapus antrean ucapan yang tertunda. Selain itu, jika ucapan dijeda, ucapan akan dilanjutkan untuk panggilan berikutnya ke ucapan.

Acara

onVoicesChanged

Chrome 124+
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Dipanggil saat daftar tts.TtsVoice yang akan ditampilkan oleh getVoices telah berubah.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

    () => void