Deskripsi
Gunakan chrome.ttsEngine API untuk mengimplementasikan mesin text-to-speech(TTS) menggunakan ekstensi. Jika ekstensi Anda mendaftar menggunakan API ini, ekstensi 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 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 melakukannya, ia dapat mencegat beberapa atau semua panggilan
ke fungsi seperti tts.speak() dan tts.stop() serta memberikan penerapan alternatif.
Ekstensi bebas menggunakan teknologi web yang tersedia untuk menyediakan ucapan, termasuk streaming audio dari server, audio HTML5. Ekstensi bahkan dapat melakukan sesuatu yang berbeda dengan ucapan, seperti menampilkan teks tertutup dalam 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 sejumlah suara.
Parameter voice_name wajib diisi. Nama harus cukup deskriptif sehingga mengidentifikasi nama suara dan mesin yang digunakan. Jika dua ekstensi mendaftarkan suara dengan nama yang sama, klien dapat menentukan ID ekstensi yang harus melakukan sintesis.
Parameter lang bersifat opsional, tetapi sangat direkomendasikan. Hampir selalu, suara dapat menyintesiskan ucapan hanya dalam satu bahasa. Jika mendukung lebih dari satu bahasa, mesin dapat dengan mudah
mendaftarkan suara yang berbeda untuk setiap bahasa. Dalam keadaan langka ketika satu suara dapat menangani lebih dari satu bahasa, cara termudah adalah 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, jangan sertakan parameter lang dari manifes ekstensi Anda.
Terakhir, parameter event_types diperlukan jika mesin dapat mengirim peristiwa untuk memperbarui klien
tentang progres sintesis ucapan. Setidaknya, mendukung jenis peristiwa 'end' untuk menunjukkan
kapan ucapan selesai sangat direkomendasikan, 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.)
Jenis peristiwa yang dapat Anda kirimkan sesuai dengan jenis peristiwa yang diterima metode speak():
'start': Mesin telah mulai mengucapkan ucapan.'word': Batas kata telah tercapai. Gunakanevent.charIndexuntuk menentukan posisi ucapan saat ini.'sentence': Batas kalimat telah tercapai. Gunakanevent.charIndexuntuk menentukan posisi ucapan saat ini.'marker': Penanda SSML telah tercapai. Gunakanevent.charIndexuntuk menentukan posisi ucapan saat ini.'end': Mesin telah selesai mengucapkan kata.'error': Terjadi error khusus mesin dan ucapan ini tidak dapat diucapkan. Sampaikan informasi selengkapnya dievent.errorMessage.
Peristiwa 'interrupted' dan 'cancelled' tidak dikirim oleh mesin ucapan; peristiwa tersebut dibuat secara otomatis oleh Chrome.
Klien text-to-speech dapat memperoleh 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 atau tidak mengirim permintaan ucapan tertentu ke ekstensi hanya didasarkan pada
apakah ekstensi mendukung parameter suara tertentu dalam manifesnya dan telah mendaftarkan
pendengar untuk onSpeak dan onStop. Dengan kata lain, tidak ada cara bagi ekstensi untuk menerima permintaan ucapan dan memutuskan secara dinamis apakah akan menanganinya.
Jenis
AudioBuffer
Parameter yang berisi buffer audio dan data terkait.
Properti
-
audioBuffer
ArrayBuffer
Buffer audio dari mesin text-to-speech. Panjangnya harus sama persis dengan audioStreamOptions.bufferSize dan dienkode sebagai mono, pada audioStreamOptions.sampleRate, dan sebagai PCM linear, float 32-bit bertanda, yaitu jenis Float32Array di JavaScript.
-
charIndex
nomor opsional
Indeks karakter yang terkait dengan buffer audio ini.
-
isLastBuffer
boolean opsional
Benar jika buffer audio ini adalah yang terakhir untuk teks yang sedang diucapkan.
AudioStreamOptions
Berisi format streaming audio yang diharapkan dihasilkan oleh mesin.
Properti
-
bufferSize
angka
Jumlah sampel dalam buffer audio.
-
sampleRate
angka
Frekuensi sampel yang diharapkan dalam buffer audio.
LanguageInstallStatus
Status penginstalan suara.
Enum
"notInstalled"
"menginstal"
"terinstal"
"gagal"
LanguageStatus
Status penginstalan bahasa.
Properti
-
error
string opsional
Detail tentang kegagalan penginstalan. Diisi secara opsional jika bahasa gagal diinstal.
-
installStatus
Status penginstalan.
-
lang
string
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
-
uninstallImmediately
boolean
Benar jika klien TTS ingin bahasa segera dihapus. Mesin dapat memilih apakah atau kapan bahasa akan di-uninstal, berdasarkan parameter ini dan informasi pemohon. Jika salah (false), aplikasi dapat menggunakan kriteria lain, seperti penggunaan terbaru, untuk menentukan kapan harus meng-uninstal.
SpeakOptions
Opsi yang ditentukan untuk metode tts.speak().
Properti
-
gender
VoiceGender opsional
Tidak digunakan lagi sejak Chrome 92Gender 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 default suara ini.
-
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 adalah dua kali lebih cepat, dan 0,5 adalah setengahnya. Nilai ini dijamin antara 0,1 dan 10,0, inklusif. Jika suara tidak mendukung rentang kecepatan penuh ini, jangan menampilkan error. Sebagai gantinya, klip kecepatan ke rentang yang didukung suara.
-
voiceName
string opsional
Nama suara yang akan digunakan untuk sintesis.
-
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.
TtsClient
ID untuk klien yang meminta status.
Properti
-
id
string
Klien membuat permintaan pengelolaan bahasa. Untuk ekstensi, ini adalah ID ekstensi unik. Untuk fitur Chrome, ini adalah nama fitur yang dapat dibaca manusia.
-
source
Jenis pemohon.
TtsClientSource
Jenis pemohon.
Enum
"chromefeature"
"ekstensi"
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
-
status
Status penginstalan bahasa.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
Dipanggil oleh mesin untuk memperbarui daftar suaranya. Daftar ini menggantikan semua suara yang dideklarasikan dalam manifes ekstensi ini.
Parameter
-
suara
TtsVoice[]
Array objek
tts.TtsVoiceyang merepresentasikan 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
-
callback
fungsi
Parameter
callbackterlihat seperti:(requestor: TtsClient, lang: string) => void
-
pemohon
-
lang
string
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Diaktifkan saat klien TTS meminta status penginstalan bahasa.
Parameter
-
callback
fungsi
Parameter
callbackterlihat seperti:(requestor: TtsClient, lang: string) => void
-
pemohon
-
lang
string
-
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Opsional: jika mesin mendukung peristiwa jeda, mesin harus menjeda ucapan saat ini yang sedang diucapkan, jika ada, hingga menerima peristiwa lanjutkan atau peristiwa berhenti. Perhatikan bahwa peristiwa berhenti juga harus menghapus status dijeda.
Parameter
-
callback
fungsi
Parameter
callbackterlihat seperti:() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
Opsional: jika mesin mendukung peristiwa jeda, mesin juga harus mendukung peristiwa lanjutkan, untuk melanjutkan pengucapan ucapan saat ini, jika ada. Perhatikan bahwa peristiwa berhenti juga harus menghapus status dijeda.
Parameter
-
callback
fungsi
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 cocok dengan objek opsi.
Parameter
-
callback
fungsi
Parameter
callbackterlihat seperti:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
ucapan
string
-
opsi
-
sendTtsEvent
fungsi
Parameter
sendTtsEventterlihat seperti:(event: tts.TtsEvent) => void
-
event
Peristiwa 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 cocok dengan objek opsi. Berbeda dengan ttsEngine.onSpeak karena Chrome menyediakan layanan pemutaran audio dan menangani pengiriman peristiwa tts.
Parameter
-
callback
fungsi
Parameter
callbackterlihat seperti:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
ucapan
string
-
opsi
-
audioStreamOptions
-
sendTtsAudio
fungsi
Parameter
sendTtsAudioterlihat seperti:(audioBufferParams: AudioBuffer) => void
-
audioBufferParams
Parameter yang berisi buffer audio dan data terkait.
-
-
sendError
fungsi
Chrome 94+Parameter
sendErrorterlihat seperti:(errorMessage?: string) => void
-
errorMessage
string 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 boleh melakukan apa pun (tidak memunculkan error). Jika ucapan dalam status dijeda, status dijeda ini harus dibatalkan.
Parameter
-
callback
fungsi
Parameter
callbackterlihat seperti:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Diaktifkan saat klien TTS menunjukkan bahwa bahasa tidak lagi diperlukan.
Parameter
-
callback
fungsi
Parameter
callbackterlihat seperti:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
pemohon
-
lang
string
-
uninstallOptions
-