Deskripsi
Gunakan chrome.ttsEngine API untuk menerapkan mesin text-to-speech(TTS) menggunakan ekstensi. Jika terdaftar menggunakan API ini, ekstensi Anda akan menerima peristiwa yang berisi ucapan yang akan diucapkan dan parameter lainnya saat ekstensi atau Aplikasi Chrome menggunakan tts API untuk menghasilkan ucapan. Ekstensi Anda kemudian dapat menggunakan teknologi web apa pun yang tersedia untuk menyintesis dan menghasilkan ucapan, serta mengirim peristiwa kembali ke fungsi panggilan untuk melaporkan status.
Izin
ttsEngineKonsep dan penggunaan
Ekstensi dapat mendaftarkan dirinya sebagai mesin ucapan. Dengan demikian, fungsi ini dapat menangkap beberapa atau semua panggilan
ke fungsi seperti tts.speak() dan tts.stop() serta memberikan implementasi alternatif.
Ekstensi bebas menggunakan teknologi web apa pun yang tersedia untuk memberikan ucapan, termasuk streaming audio
dari server, audio HTML5. Ekstensi bahkan dapat melakukan hal yang berbeda
dengan ucapan, seperti menampilkan teks tertutup di pop-up atau mengirimkannya sebagai pesan log ke
server jarak jauh.
Untuk menerapkan mesin TTS, ekstensi harus mendeklarasikan izin "ttsEngine", lalu mendeklarasikan semua suara yang disediakan dalam manifes ekstensi, seperti ini:
{
  "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
  }
}
Ekstensi dapat menentukan jumlah suara berapa pun.
Parameter voice_name wajib ada. Nama harus cukup deskriptif sehingga dapat mengidentifikasi
nama suara dan mesin yang digunakan. Jika dua ekstensi mendaftarkan suara
dengan nama yang sama, klien dapat menentukan ID ekstensi yang akan melakukan sintesis.
Parameter lang bersifat opsional, tetapi sangat direkomendasikan. Hampir selalu, suara dapat menyintesis
ucapan dalam satu bahasa saja. Jika mendukung lebih dari satu bahasa, mesin dapat dengan mudah
mendaftarkan suara terpisah untuk setiap bahasa. Dalam situasi yang jarang terjadi saat satu suara dapat
menangani lebih dari satu bahasa, cara termudah adalah dengan mencantumkan dua suara terpisah dan menanganinya menggunakan
logika yang sama secara internal. Namun, jika Anda ingin membuat suara yang akan menangani ucapan dalam bahasa
apa pun, hapus parameter lang dari manifes ekstensi Anda.
Terakhir, parameter event_types diperlukan jika mesin dapat mengirim peristiwa untuk memperbarui klien
tentang progres sintesis ucapan. Setidaknya, sebaiknya dukung jenis peristiwa 'end' untuk menunjukkan
saat ucapan selesai. Jika tidak, Chrome tidak dapat menjadwalkan ucapan yang diantrekan.
Setelah dimuat, ekstensi dapat mengganti daftar suara yang dideklarasikan dengan memanggil
chrome.ttsEngine.updateVoices. (Perhatikan bahwa parameter yang digunakan dalam panggilan terprogram ke
updateVoices menggunakan camel case: misalnya, voiceName, tidak seperti file manifes yang menggunakan
voice_name.)
Kemungkinan jenis peristiwa yang dapat Anda kirim sesuai dengan jenis peristiwa yang diterima metode speak():
- 'start': Mesin telah mulai mengucapkan ucapan.
- 'word': Batas kata tercapai. Gunakan- event.charIndexuntuk menentukan posisi ucapan saat ini.
- 'sentence': Batas kalimat tercapai. Gunakan- event.charIndexuntuk menentukan posisi ucapan saat ini.
- 'marker': Penanda SSML telah dicapai. Gunakan- event.charIndexuntuk menentukan posisi ucapan saat ini.
- 'end': Mesin telah selesai mengucapkan ucapan.
- 'error': Terjadi error khusus mesin dan ucapan ini tidak dapat diucapkan. Teruskan informasi selengkapnya di- event.errorMessage.
Peristiwa 'interrupted' dan 'cancelled' tidak dikirim oleh mesin ucapan; peristiwa tersebut dihasilkan secara otomatis oleh Chrome.
Klien text-to-speech dapat mendapatkan informasi suara dari manifes ekstensi Anda dengan memanggil
tts.getVoices, dengan asumsi Anda telah mendaftarkan pemroses peristiwa ucapan seperti yang dijelaskan di bawah.
Menangani peristiwa ucapan
Untuk menghasilkan ucapan atas permintaan klien, ekstensi Anda harus mendaftarkan pemroses untuk
onSpeak dan onStop, seperti ini:
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);
Keputusan untuk mengirim permintaan ucapan tertentu ke ekstensi atau tidak hanya didasarkan pada
apakah ekstensi mendukung parameter suara tertentu dalam manifesnya dan telah mendaftarkan
pemroses untuk onSpeak dan onStop. Dengan kata lain, tidak ada cara bagi ekstensi untuk menerima
permintaan ucapan dan memutuskan secara dinamis apakah akan menanganinya atau tidak.
Jenis
AudioBuffer
Parameter yang berisi buffer audio dan data terkait.
Properti
- 
    audioBufferArrayBuffer Buffer audio dari mesin text-to-speech. Panjangnya harus sama persis dengan audioStreamOptions.bufferSize dan dienkode sebagai mono, di audioStreamOptions.sampleRate, dan sebagai pcm linear, float bertanda 32-bit, yaitu jenis Float32Array dalam JavaScript. 
- 
    charIndexnumber opsional Indeks karakter yang terkait dengan buffering audio ini. 
- 
    isLastBufferboolean opsional Benar jika buffering audio ini adalah yang terakhir untuk teks yang diucapkan. 
AudioStreamOptions
Berisi format streaming audio yang diharapkan akan dihasilkan oleh mesin.
Properti
- 
    bufferSizeangka Jumlah sampel dalam buffering audio. 
- 
    sampleRateangka Frekuensi sampel yang diharapkan dalam buffering audio. 
LanguageInstallStatus
Status penginstalan suara.
Enum
"notInstalled" 
 
"installing" 
 
"installed" 
 
"failed" 
 
LanguageStatus
Status penginstalan bahasa.
Properti
- 
    errorstring opsional Detail tentang kegagalan penginstalan. Dapat diisi secara opsional jika bahasa gagal diinstal. 
- 
    installStatusStatus penginstalan. 
- 
    langstring String bahasa dalam bentuk kode bahasa-kode wilayah, dengan wilayah dapat dihilangkan. Contohnya adalah en, en-AU, zh-CH. 
LanguageUninstallOptions
Opsi untuk meng-uninstal bahasa tertentu.
Properti
- 
    uninstallImmediatelyboolean Benar jika klien TTS ingin bahasa segera di-uninstal. Mesin dapat memilih apakah akan meng-uninstal bahasa atau tidak, berdasarkan parameter ini dan informasi pemohon. Jika salah, aplikasi dapat menggunakan kriteria lain, seperti penggunaan terbaru, untuk menentukan kapan harus meng-uninstal. 
SpeakOptions
Opsi yang ditentukan ke metode tts.speak().
Properti
- 
    genderVoiceGender opsional Tidak digunakan lagi sejak Chrome 92Gender tidak digunakan lagi dan akan diabaikan. Gender suara untuk ucapan sintesis. 
- 
    langstring opsional Bahasa yang akan digunakan untuk sintesis, dalam bentuk language-region. Contoh: 'en', 'en-US', 'en-GB', 'zh-CN'. 
- 
    pitchnumber opsional Nada bicara antara 0 dan 2 inklusif, dengan 0 adalah terendah dan 2 adalah tertinggi. 1,0 sesuai dengan nada default suara ini. 
- 
    lajunumber opsional Kecepatan berbicara 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 ini dijamin antara 0,1 dan 10,0, inklusif. Jika suara tidak mendukung rentang kecepatan penuh ini, jangan tampilkan error. Sebagai gantinya, pangkas kecepatan ke rentang yang didukung suara. 
- 
    voiceNamestring opsional Nama suara yang akan digunakan untuk sintesis. 
- 
    volumenumber opsional Volume ucapan antara 0 dan 1 inklusif, dengan 0 terendah dan 1 tertinggi, dengan default 1,0. 
TtsClient
ID untuk klien yang meminta status.
Properti
- 
    idstring Klien membuat permintaan pengelolaan bahasa. Untuk ekstensi, ini adalah ID ekstensi unik. Untuk fitur Chrome, ini adalah nama fitur yang dapat dibaca manusia. 
- 
    sourceJenis pemohon. 
TtsClientSource
Jenis pemohon.
Enum
"chromefeature" 
 
"extension" 
 
VoiceGender
Gender tidak digunakan lagi dan akan diabaikan.
Enum
"male" 
 
"perempuan" 
 
Metode
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
Dipanggil oleh mesin saat penginstalan bahasa dicoba, dan saat bahasa di-uninstal. Juga dipanggil sebagai respons terhadap permintaan status dari klien. Saat suara diinstal atau di-uninstal, mesin juga harus memanggil ttsEngine.updateVoices untuk mendaftarkan suara.
Parameter
- 
    statusStatus penginstalan bahasa. 
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
Dipanggil oleh mesin untuk memperbarui daftar suaranya. Daftar ini akan mengganti suara apa pun yang dideklarasikan dalam manifes ekstensi ini.
Parameter
- 
    suaraTtsVoice[] Array objek tts.TtsVoiceyang mewakili suara yang tersedia untuk sintesis ucapan.
Acara
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
Diaktifkan saat klien TTS meminta untuk menginstal bahasa baru. Mesin harus mencoba mendownload dan menginstal bahasa, serta memanggil ttsEngine.updateLanguage dengan hasilnya. Jika berhasil, mesin juga harus memanggil ttsEngine.updateVoices untuk mendaftarkan suara yang baru tersedia.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:(requestor: TtsClient, lang: string) => void - 
    pemohon
- 
    langstring 
 
- 
    
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Diaktifkan saat klien TTS meminta status penginstalan bahasa.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:(requestor: TtsClient, lang: string) => void - 
    pemohon
- 
    langstring 
 
- 
    
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Opsional: jika mesin mendukung peristiwa jeda, mesin harus menjeda ucapan saat ini yang diucapkan, jika ada, hingga menerima peristiwa lanjutkan atau peristiwa berhenti. Perhatikan bahwa peristiwa berhenti juga harus menghapus status dijeda.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:() => void 
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
Opsional: jika mesin mendukung peristiwa jeda, mesin juga harus mendukung peristiwa lanjutkan, untuk terus mengucapkan ucapan saat ini, jika ada. Perhatikan bahwa peristiwa berhenti juga harus menghapus status dijeda.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:() => void 
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
Dipanggil saat pengguna melakukan panggilan ke tts.speak() dan salah satu suara dari manifes ekstensi ini adalah yang pertama kali cocok dengan objek opsi.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void - 
    ucapanstring 
- 
    opsi
- 
    sendTtsEventfungsi Parameter sendTtsEventterlihat seperti:(event: tts.TtsEvent) => void - 
    peristiwaPeristiwa dari mesin text-to-speech yang menunjukkan status ucapan ini. 
 
- 
    
 
- 
    
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
Dipanggil saat pengguna melakukan panggilan ke tts.speak() dan salah satu suara dari manifes ekstensi ini adalah yang pertama kali cocok dengan objek opsi. Berbeda dengan ttsEngine.onSpeak karena Chrome menyediakan layanan pemutaran audio dan menangani pengiriman peristiwa tts.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void - 
    ucapanstring 
- 
    opsi
- 
    audioStreamOptions
- 
    sendTtsAudiofungsi Parameter sendTtsAudioterlihat seperti:(audioBufferParams: AudioBuffer) => void - 
    audioBufferParamsParameter yang berisi buffer audio dan data terkait. 
 
- 
    
- 
    sendErrorfungsi Chrome 94+Parameter sendErrorterlihat seperti:(errorMessage?: string) => void - 
    errorMessagestring opsional String yang menjelaskan error. 
 
- 
    
 
- 
    
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
Diaktifkan saat panggilan dilakukan ke tts.stop dan ekstensi ini mungkin sedang berbicara. Jika ekstensi menerima panggilan ke onStop dan ucapan sudah dihentikan, ekstensi tidak akan melakukan apa pun (tidak menimbulkan error). Jika ucapan dalam status dijeda, tindakan ini akan membatalkan status dijeda.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:() => void 
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Diaktifkan saat klien TTS menunjukkan bahwa bahasa tidak lagi diperlukan.
Parameter
- 
    callbackfungsi Parameter callbackterlihat seperti:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void - 
    pemohon
- 
    langstring 
- 
    uninstallOptions
 
-