refresh date: 2026-09-25 robots: noindex
คำอธิบาย
ใช้ chrome.ttsEngine API เพื่อติดตั้งใช้งานเครื่องมืออ่านออกเสียงข้อความ(TTS) โดยใช้ส่วนขยาย หากส่วนขยายลงทะเบียนโดยใช้ API นี้ ส่วนขยายจะได้รับเหตุการณ์ที่มีข้อความที่จะพูดและพารามิเตอร์อื่นๆ เมื่อส่วนขยายหรือแอป Chrome ใช้ tts API เพื่อสร้างคำพูด จากนั้นส่วนขยายจะใช้เทคโนโลยีเว็บที่มีอยู่เพื่อสังเคราะห์และส่งออกคำพูด รวมถึงส่งเหตุการณ์กลับไปยังฟังก์ชันการเรียกเพื่อรายงานสถานะ
สิทธิ์
ttsEngineภาพรวม
ส่วนขยายสามารถลงทะเบียนตัวเองเป็น Speech Engine ได้ การทำเช่นนี้จะช่วยดักจับการเรียกฟังก์ชันบางส่วนหรือทั้งหมด เช่น tts.speak และ tts.stop และให้การใช้งานทางเลือก
ส่วนขยายสามารถใช้เทคโนโลยีเว็บที่มีอยู่เพื่อให้บริการเสียงพูดได้โดยไม่มีค่าใช้จ่าย ซึ่งรวมถึงการสตรีมเสียงจากเซิร์ฟเวอร์และเสียง HTML5
ส่วนขยายอาจทำสิ่งต่างๆ กับคำพูดได้ด้วย เช่น แสดงคำบรรยายแทนเสียงในหน้าต่างป๊อปอัปหรือส่งเป็นข้อความบันทึกไปยังเซิร์ฟเวอร์ระยะไกล
ไฟล์ Manifest
หากต้องการใช้เอ็นจิน TTS ส่วนขยายต้องประกาศสิทธิ์ "ttsEngine" จากนั้นประกาศเสียงทั้งหมด ที่ส่วนขยายมีในไฟล์ Manifest ของส่วนขยาย ดังนี้
{
"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
}
}
ส่วนขยายสามารถระบุจำนวนเสียงได้
ต้องระบุพารามิเตอร์ voice_name ชื่อควรสื่อความหมายมากพอที่จะระบุ
ชื่อของเสียงและเครื่องมือที่ใช้ ในกรณีที่เกิดขึ้นไม่บ่อยนัก หากส่วนขยาย 2 รายการลงทะเบียนเสียงที่มีชื่อเดียวกัน ไคลเอ็นต์จะระบุรหัสของส่วนขยายที่ควรทำการสังเคราะห์ได้
พารามิเตอร์ lang ไม่บังคับ แต่ขอแนะนําให้ใช้ โดยส่วนใหญ่แล้ว เสียงจะสังเคราะห์
คำพูดได้ในภาษาเดียวเท่านั้น เมื่อเครื่องยนต์รองรับมากกว่า 1 ภาษา ก็จะลงทะเบียนเสียงแยกต่างหากสำหรับแต่ละภาษาได้ง่ายๆ
ในกรณีที่พบได้ยากซึ่งเสียงเดียวสามารถ
รองรับได้มากกว่า 1 ภาษา การระบุเสียง 2 เสียงแยกกันและจัดการโดยใช้
ตรรกะเดียวกันภายในจะเป็นวิธีที่ง่ายที่สุด อย่างไรก็ตาม หากต้องการสร้างเสียงที่จะจัดการคำพูดในภาษาใดก็ได้ ให้เว้นพารามิเตอร์ lang ไว้ในไฟล์ Manifest ของส่วนขยาย
สุดท้ายนี้ ต้องระบุพารามิเตอร์ event_types หากเครื่องมือส่งเหตุการณ์เพื่ออัปเดตความคืบหน้าของการสังเคราะห์เสียงให้ไคลเอ็นต์ได้
ขอแนะนำให้รองรับประเภทเหตุการณ์ 'end' อย่างน้อยเพื่อระบุ
เมื่อพูดจบแล้ว ไม่เช่นนั้น Chrome จะกำหนดเวลาการออกเสียงที่อยู่ในคิวไม่ได้
เมื่อโหลดแล้ว ส่วนขยายจะแทนที่รายการเสียงที่ประกาศได้โดยการเรียกใช้
chrome.ttsEngine.updateVoices (โปรดทราบว่าพารามิเตอร์ที่ใช้ในการเรียกแบบเป็นโปรแกรมไปยัง
updateVoices จะอยู่ในรูปแบบ Camel Case เช่น voiceName ซึ่งแตกต่างจากไฟล์ Manifest ที่ใช้
voice_name)
ประเภทเหตุการณ์ที่คุณส่งได้จะสอดคล้องกับประเภทเหตุการณ์ที่เมธอด speak()
ได้รับ ดังนี้
'start': เครื่องยนต์เริ่มพูดข้อความแล้ว'word': ถึงขอบเขตของคำแล้ว ใช้event.charIndexเพื่อกำหนดตำแหน่งคำพูดปัจจุบัน'sentence': ถึงขอบเขตประโยคแล้ว ใช้event.charIndexเพื่อระบุตำแหน่งปัจจุบัน ของคำพูด'marker': มีการเข้าถึงเครื่องหมาย SSML ใช้event.charIndexเพื่อกำหนดตำแหน่งคำพูดปัจจุบัน'end': เครื่องยนต์พูดคำพูดจบแล้ว'error': เกิดข้อผิดพลาดเฉพาะเครื่องมือและพูดคำนี้ไม่ได้ ส่งข้อมูลเพิ่มเติมในevent.errorMessage
เครื่องมือ Speech จะไม่ส่งเหตุการณ์ 'interrupted' และ 'cancelled' แต่ Chrome จะสร้างเหตุการณ์เหล่านี้โดยอัตโนมัติ
ไคลเอ็นต์ข้อความเป็นเสียงพูดจะรับข้อมูลเสียงจากไฟล์ Manifest ของส่วนขยายได้โดยการเรียกใช้ tts.getVoices โดยสมมติว่าคุณได้ลงทะเบียนเครื่องมือฟังเหตุการณ์การพูดตามที่อธิบายไว้ด้านล่าง
การจัดการเหตุการณ์การพูด
หากต้องการสร้างคำพูดตามคำขอของลูกค้า ส่วนขยายของคุณต้องลงทะเบียน Listener สำหรับทั้ง
onSpeak และ onStop ดังนี้
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);
การตัดสินใจว่าจะส่งคำขอการพูดที่ระบุไปยังส่วนขยายหรือไม่นั้นขึ้นอยู่กับว่าส่วนขยายรองรับพารามิเตอร์เสียงที่ระบุในไฟล์ Manifest และได้ลงทะเบียน Listener สำหรับ onSpeak และ onStop หรือไม่ กล่าวอีกนัยหนึ่งก็คือไม่มีวิธีใดที่ส่วนขยายจะรับคำขอเสียงและตัดสินใจแบบไดนามิกว่าจะจัดการคำขอนั้นหรือไม่
ประเภท
AudioBuffer
พารามิเตอร์ที่มีบัฟเฟอร์เสียงและข้อมูลที่เกี่ยวข้อง
พร็อพเพอร์ตี้
-
audioBuffer
ArrayBuffer
บัฟเฟอร์เสียงจากเครื่องมืออ่านออกเสียงข้อความ โดยควรมีความยาวเท่ากับ audioStreamOptions.bufferSize และเข้ารหัสเป็นโมโนที่ audioStreamOptions.sampleRate และเป็น pcm เชิงเส้น, 32 บิตแบบมีเครื่องหมายลอย เช่น ประเภท Float32Array ใน JavaScript
-
charIndex
หมายเลข ไม่บังคับ
ดัชนีอักขระที่เชื่อมโยงกับบัฟเฟอร์เสียงนี้
-
isLastBuffer
บูลีน ไม่บังคับ
เป็นจริงหากบัฟเฟอร์เสียงนี้เป็นบัฟเฟอร์สุดท้ายสำหรับข้อความที่กำลังพูด
AudioStreamOptions
มีรูปแบบสตรีมเสียงที่คาดว่าเครื่องมือจะสร้างขึ้น
พร็อพเพอร์ตี้
-
bufferSize
ตัวเลข
จำนวนตัวอย่างภายในบัฟเฟอร์เสียง
-
sampleRate
ตัวเลข
อัตราการสุ่มตัวอย่างที่คาดไว้ในบัฟเฟอร์เสียง
LanguageInstallStatus
สถานะการติดตั้งเสียง
ค่าแจกแจง
"notInstalled"
"กำลังติดตั้ง"
"ติดตั้งแล้ว"
"ล้มเหลว"
LanguageStatus
สถานะการติดตั้งของภาษา
พร็อพเพอร์ตี้
-
ข้อผิดพลาด
สตริง ไม่บังคับ
รายละเอียดเกี่ยวกับการติดตั้งที่ไม่สำเร็จ ระบุหรือไม่ก็ได้หากติดตั้งภาษาไม่สำเร็จ
-
installStatus
สถานะการติดตั้ง
-
lang
สตริง
สตริงภาษาในรูปแบบรหัสภาษา-รหัสภูมิภาค โดยอาจละเว้นภูมิภาคได้ ตัวอย่างเช่น en, en-AU, zh-CH
LanguageUninstallOptions
ตัวเลือกสำหรับการถอนการติดตั้งภาษาที่ต้องการ
พร็อพเพอร์ตี้
-
uninstallImmediately
บูลีน
เป็นจริงหากไคลเอ็นต์ TTS ต้องการถอนการติดตั้งภาษาทันที เครื่องมืออาจเลือกได้ว่าจะถอนการติดตั้งภาษาเมื่อใด โดยอิงตามพารามิเตอร์นี้และข้อมูลของผู้ขอ หากเป็นเท็จ ระบบอาจใช้เกณฑ์อื่นๆ เช่น การใช้งานล่าสุด เพื่อพิจารณาเวลาถอนการติดตั้ง
SpeakOptions
ตัวเลือกที่ระบุให้กับเมธอด tts.speak()
พร็อพเพอร์ตี้
-
gender
VoiceGender ไม่บังคับ
เลิกใช้งานตั้งแต่ Chrome 92ระบบเลิกใช้งานเพศแล้วและจะไม่สนใจ
เพศของเสียงสำหรับการพูดที่สังเคราะห์
-
lang
สตริง ไม่บังคับ
ภาษาที่จะใช้สำหรับการสังเคราะห์ในรูปแบบ language-region ตัวอย่าง: "en", "en-US", "en-GB", "zh-CN"
-
พิช
หมายเลข ไม่บังคับ
ระดับเสียงพูดอยู่ระหว่าง 0 ถึง 2 โดย 0 คือระดับเสียงต่ำสุดและ 2 คือระดับเสียงสูงสุด 1.0 สอดคล้องกับระดับเสียงเริ่มต้นของเสียงนี้
-
อัตรา
หมายเลข ไม่บังคับ
อัตราการพูดที่สัมพันธ์กับอัตราเริ่มต้นสำหรับเสียงนี้ 1.0 คืออัตราเริ่มต้น ซึ่งโดยปกติจะอยู่ที่ประมาณ 180-220 คำต่อนาที 2.0 คือเร็วขึ้น 2 เท่า และ 0.5 คือช้าลงครึ่งหนึ่ง รับประกันว่าค่านี้จะอยู่ระหว่าง 0.1 ถึง 10.0 (รวม) เมื่อเสียงไม่รองรับช่วงอัตรานี้ทั้งหมด อย่าแสดงข้อผิดพลาด แต่ให้ตัดอัตราดังกล่าวให้อยู่ในช่วงที่เสียงรองรับ
-
voiceName
สตริง ไม่บังคับ
ชื่อของเสียงที่จะใช้สำหรับการสังเคราะห์
-
ระดับเสียง
หมายเลข ไม่บังคับ
ระดับเสียงพูดระหว่าง 0 ถึง 1 โดย 0 คือระดับต่ำสุดและ 1 คือระดับสูงสุด โดยค่าเริ่มต้นคือ 1.0
TtsClient
ตัวระบุสำหรับไคลเอ็นต์ที่ขอสถานะ
พร็อพเพอร์ตี้
-
id
สตริง
ไคลเอ็นต์ที่ส่งคำขอการจัดการภาษา สำหรับส่วนขยาย นี่คือรหัสส่วนขยายที่ไม่ซ้ำกัน สำหรับฟีเจอร์ของ Chrome นี่คือชื่อฟีเจอร์ที่มนุษย์อ่านได้
-
source
ประเภทผู้ขอ
TtsClientSource
ประเภทผู้ขอ
ค่าแจกแจง
"chromefeature"
"ส่วนขยาย"
VoiceGender
ระบบเลิกใช้งานเพศแล้วและจะไม่สนใจ
ค่าแจกแจง
"ชาย"
"หญิง"
เมธอด
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
เรียกใช้โดยเครื่องมือเมื่อพยายามติดตั้งภาษาและเมื่อถอนการติดตั้งภาษา เรียกใช้เพื่อตอบสนองต่อคำขอสถานะจากไคลเอ็นต์ด้วย เมื่อมีการติดตั้งหรือถอนการติดตั้งเสียง เครื่องมือควรเรียกใช้ ttsEngine.updateVoices เพื่อลงทะเบียนเสียงด้วย
พารามิเตอร์
-
สถานะ
สถานะการติดตั้งของภาษา
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
เรียกใช้โดยเครื่องมือเพื่ออัปเดตรายการเสียง รายการนี้จะลบล้างเสียงใดๆ ที่ประกาศไว้ในไฟล์ Manifest ของส่วนขยายนี้
พารามิเตอร์
-
เสียง
TtsVoice[]
อาร์เรย์ของออบเจ็กต์
tts.TtsVoiceที่แสดงเสียงที่พร้อมใช้งานสำหรับการสังเคราะห์เสียงพูด
กิจกรรม
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
ทริกเกอร์เมื่อไคลเอ็นต์ TTS ขอติดตั้งภาษาใหม่ เครื่องมือควรพยายามดาวน์โหลดและติดตั้งภาษา แล้วเรียกใช้ ttsEngine.updateLanguage พร้อมผลลัพธ์ เมื่อสำเร็จแล้ว เครื่องมือควรเรียกใช้ ttsEngine.updateVoices เพื่อลงทะเบียนเสียงที่พร้อมใช้งานใหม่ด้วย
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้(requestor: TtsClient, lang: string) => void
-
ผู้ขอ
-
lang
สตริง
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
ทริกเกอร์เมื่อไคลเอ็นต์ TTS ขอสถานะการติดตั้งของภาษา
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้(requestor: TtsClient, lang: string) => void
-
ผู้ขอ
-
lang
สตริง
-
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
ไม่บังคับ: หากเครื่องมือรองรับเหตุการณ์หยุดชั่วคราว เครื่องมือควรหยุดการพูดข้อความปัจจุบันชั่วคราว (หากมี) จนกว่าจะได้รับเหตุการณ์กลับมาทำงานต่อหรือเหตุการณ์หยุด โปรดทราบว่าเหตุการณ์หยุดควรล้างสถานะหยุดชั่วคราวด้วย
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
ไม่บังคับ: หากเอนจินรองรับเหตุการณ์หยุดชั่วคราว ก็ควรจะรองรับเหตุการณ์เล่นต่อด้วย เพื่อพูดข้อความปัจจุบันต่อไป หากมี โปรดทราบว่าเหตุการณ์หยุดควรล้างสถานะหยุดชั่วคราวด้วย
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้() => void
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
เรียกใช้เมื่อผู้ใช้โทรหา tts.speak() และเสียงใดเสียงหนึ่งจากไฟล์ Manifest ของส่วนขยายนี้เป็นเสียงแรกที่ตรงกับออบเจ็กต์ตัวเลือก
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
คำพูด
สตริง
-
ตัวเลือก
-
sendTtsEvent
ฟังก์ชัน
พารามิเตอร์
sendTtsEventมีลักษณะดังนี้(event: tts.TtsEvent) => void
-
เหตุการณ์
เหตุการณ์จากเครื่องมืออ่านออกเสียงข้อความที่ระบุสถานะของคำพูดนี้
-
-
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
เรียกใช้เมื่อผู้ใช้โทรหา tts.speak() และเสียงใดเสียงหนึ่งจากไฟล์ Manifest ของส่วนขยายนี้เป็นเสียงแรกที่ตรงกับออบเจ็กต์ตัวเลือก แตกต่างจาก ttsEngine.onSpeak ตรงที่ Chrome ให้บริการการเล่นเสียงและจัดการการเรียกใช้เหตุการณ์ TTS
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
คำพูด
สตริง
-
ตัวเลือก
-
audioStreamOptions
-
sendTtsAudio
ฟังก์ชัน
พารามิเตอร์
sendTtsAudioมีลักษณะดังนี้(audioBufferParams: AudioBuffer) => void
-
audioBufferParams
พารามิเตอร์ที่มีบัฟเฟอร์เสียงและข้อมูลที่เกี่ยวข้อง
-
-
sendError
ฟังก์ชัน
Chrome 94 ขึ้นไปพารามิเตอร์
sendErrorมีลักษณะดังนี้(errorMessage?: string) => void
-
errorMessage
สตริง ไม่บังคับ
สตริงที่อธิบายข้อผิดพลาด
-
-
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
ทริกเกอร์เมื่อมีการเรียก tts.stop และส่วนขยายนี้อาจกำลังพูดอยู่ หากส่วนขยายได้รับการเรียกไปยัง onStop และหยุดการพูดไปแล้ว ก็ไม่ควรดำเนินการใดๆ (ไม่ควรทำให้เกิดข้อผิดพลาด) หากเสียงพูดอยู่ในสถานะหยุดชั่วคราว การดำเนินการนี้ควรยกเลิกสถานะหยุดชั่วคราว
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
ทริกเกอร์เมื่อไคลเอ็นต์ TTS ระบุว่าไม่จำเป็นต้องใช้ภาษาอีกต่อไป
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
ผู้ขอ
-
lang
สตริง
-
uninstallOptions
-