refresh date: 2026-09-25 robots: noindex
คำอธิบาย
ใช้ chrome.tts API เพื่อเล่นการอ่านออกเสียงข้อความ (TTS) ที่สังเคราะห์ขึ้น ดู API ttsEngine ที่เกี่ยวข้องด้วย ซึ่งช่วยให้ส่วนขยายใช้เครื่องมือการอ่านออกเสียงข้อความได้
สิทธิ์
ttsภาพรวม
Chrome รองรับการอ่านออกเสียงข้อความใน Windows (โดยใช้ SAPI 5), Mac OS X และ ChromeOS โดยใช้ความสามารถในการสังเคราะห์เสียงพูดที่ระบบปฏิบัติการมีให้ ในทุกแพลตฟอร์ม ผู้ใช้สามารถติดตั้งส่วนขยายที่ลงทะเบียนเป็นเครื่องมืออ่านออกเสียงข้อความทางเลือกได้
กำลังสร้างเสียงพูด
โทรหา speak() จากส่วนขยายเพื่อพูดคุย เช่น
chrome.tts.speak('Hello, world.');
หากต้องการหยุดพูดทันที เพียงพูดว่า stop()
chrome.tts.stop();
คุณสามารถระบุตัวเลือกที่ควบคุมพร็อพเพอร์ตี้ต่างๆ ของคำพูดได้ เช่น อัตรา ระดับเสียงสูงต่ำ และอื่นๆ เช่น
chrome.tts.speak('Hello, world.', {'rate': 2.0});
นอกจากนี้ คุณควรระบุภาษาเพื่อให้ระบบเลือกโปรแกรมสังเคราะห์เสียงที่รองรับภาษานั้น (และภาษาถิ่น หากมี)
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
โดยค่าเริ่มต้น การเรียกใช้ speak() แต่ละครั้งจะขัดจังหวะคำพูดที่กำลังดำเนินอยู่และพูดทันที หากต้องการตรวจสอบว่าการโทรจะรบกวนอะไรหรือไม่ คุณสามารถโทรหา isSpeaking() นอกจากนี้ คุณยังใช้ตัวเลือก enqueue เพื่อเพิ่มคำพูดนี้ลงในคิวคำพูดที่จะพูดเมื่อคำพูดปัจจุบันจบลงได้ด้วย
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
ดูคำอธิบายทั้งหมดของตัวเลือกทั้งหมดได้ใน tts.speak ด้านล่าง เครื่องมือการอ่านออกเสียงบางอย่างอาจไม่รองรับตัวเลือกทั้งหมด
หากต้องการตรวจหาข้อผิดพลาดและตรวจสอบว่าคุณเรียกใช้ speak() อย่างถูกต้อง ให้ส่งฟังก์ชัน Callback ที่ไม่มีอาร์กิวเมนต์ ภายใน Callback ให้ตรวจสอบ runtime.lastError เพื่อดูว่ามีข้อผิดพลาดหรือไม่
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
Callback จะแสดงผลทันทีก่อนที่เครื่องมือจะเริ่มสร้างคำพูด วัตถุประสงค์ของ Callback คือการแจ้งเตือนคุณเกี่ยวกับข้อผิดพลาดทางไวยากรณ์ในการใช้ TTS API ไม่ใช่เพื่อตรวจจับข้อผิดพลาดที่เป็นไปได้ทั้งหมดที่อาจเกิดขึ้นในกระบวนการสังเคราะห์และแสดงผลคำพูด หากต้องการตรวจจับข้อผิดพลาดเหล่านี้ด้วย คุณต้องใช้ Listener เหตุการณ์ตามที่อธิบายไว้ด้านล่าง
กำลังฟังเหตุการณ์
หากต้องการดูข้อมูลเพิ่มเติมแบบเรียลไทม์เกี่ยวกับสถานะของเสียงพูดสังเคราะห์ ให้ส่ง Listener เหตุการณ์ในตัวเลือกไปยัง speak() ดังนี้
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
);
แต่ละเหตุการณ์ประกอบด้วยประเภทเหตุการณ์ ดัชนีอักขระของคำพูดปัจจุบันที่สัมพันธ์กับคำพูด และข้อความแสดงข้อผิดพลาดที่ไม่บังคับสำหรับเหตุการณ์ข้อผิดพลาด ประเภทเหตุการณ์มีดังนี้
'start': เครื่องมือเริ่มพูดข้อความแล้ว'word': ถึงขอบเขตของคำแล้ว ใช้event.charIndexเพื่อระบุตำแหน่งคำพูดปัจจุบัน'sentence': ถึงขอบเขตประโยคแล้ว ใช้event.charIndexเพื่อระบุตำแหน่งปัจจุบันของคำพูด'marker': ถึงเครื่องหมาย SSML แล้ว ใช้event.charIndexเพื่อระบุตำแหน่งคำพูดปัจจุบัน'end': เครื่องมือพูดข้อความเสร็จแล้ว'interrupted': การพูดนี้ถูกขัดจังหวะด้วยการเรียกใช้speak()หรือstop()อีกครั้งและไม่เสร็จสมบูรณ์'cancelled': มีการจัดคิวคำพูดนี้ แต่ถูกยกเลิกโดยการเรียกใช้speak()หรือstop()อีกครั้ง และไม่เคยเริ่มพูดเลย'error': เกิดข้อผิดพลาดเฉพาะเครื่องมือและไม่สามารถพูดคำพูดนี้ได้ ดูรายละเอียดได้ที่event.errorMessage
ประเภทเหตุการณ์ 4 ประเภท ได้แก่ 'end', 'interrupted', 'cancelled' และ 'error' เป็นประเภทสุดท้าย หลังจากได้รับเหตุการณ์ใดเหตุการณ์หนึ่งแล้ว ระบบจะไม่พูดข้อความนี้อีกต่อไปและจะไม่ได้รับเหตุการณ์ใหม่จากข้อความนี้
เสียงบางเสียงอาจไม่รองรับเหตุการณ์บางประเภท และเสียงบางเสียงอาจไม่ส่งเหตุการณ์ใดๆ เลย หากไม่ต้องการใช้เสียงเว้นแต่จะส่งเหตุการณ์บางอย่าง ให้ส่งเหตุการณ์ที่ต้องการในสมาชิก requiredEventTypes ของออบเจ็กต์ตัวเลือก หรือใช้ getVoices() เพื่อเลือกเสียงที่ตรงกับความต้องการของคุณ โดยทั้ง 2 วิธีมีรายละเอียดดังนี้
มาร์กอัป SSML
คำพูดที่ใช้ใน API นี้อาจรวมถึงมาร์กอัปที่ใช้ภาษามาร์กอัปการสังเคราะห์เสียงพูด (SSML) หากคุณใช้ SSML อาร์กิวเมนต์แรกของ speak() ควรเป็นเอกสาร SSML ที่สมบูรณ์ซึ่งมีส่วนหัว XML และแท็ก <speak> ระดับบนสุด ไม่ใช่ส่วนย่อยของเอกสาร
เช่น
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
เครื่องมืออ่านออกเสียงบางรายการอาจไม่รองรับแท็ก SSML ทั้งหมด และบางรายการอาจไม่รองรับ SSML เลย แต่เครื่องมือทั้งหมดจะต้องละเว้น SSML ที่ไม่รองรับและยังคงอ่านข้อความที่เกี่ยวข้อง
การเลือกเสียง
โดยค่าเริ่มต้น Chrome จะเลือกเสียงที่เหมาะสมที่สุดสำหรับแต่ละคำพูดที่คุณต้องการพูด โดยอิงตามภาษา ในระบบ Windows, Mac OS X และ ChromeOS ส่วนใหญ่ การสังเคราะห์เสียงพูดที่ระบบปฏิบัติการมีให้ควรจะพูดข้อความใดก็ได้ในภาษาอย่างน้อย 1 ภาษา อย่างไรก็ตาม ผู้ใช้บางรายอาจมีเสียงให้เลือกหลากหลายจากระบบปฏิบัติการและจากเครื่องมืออ่านออกเสียงข้อความที่ติดตั้งโดยส่วนขยาย Chrome อื่นๆ ในกรณีดังกล่าว คุณสามารถใช้โค้ดที่กำหนดเองเพื่อเลือกเสียงที่เหมาะสม หรือแสดงรายการตัวเลือกให้ผู้ใช้เห็น
หากต้องการดูรายการเสียงทั้งหมด ให้เรียกใช้ getVoices() และส่งฟังก์ชันที่รับอาร์เรย์ของออบเจ็กต์ TtsVoice เป็นอาร์กิวเมนต์ ดังนี้
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);
}
}
);
ประเภท
EventType
ค่าแจกแจง
"start"
"end"
"คำ"
"sentence"
"marker"
"interrupted"
"cancelled"
"error"
"หยุดชั่วคราว"
"resume"
TtsEvent
เหตุการณ์จากเครื่องมือ TTS เพื่อสื่อสารสถานะของคำพูด
พร็อพเพอร์ตี้
-
charIndex
number ไม่บังคับ
ดัชนีของอักขระปัจจุบันในคำพูด สำหรับเหตุการณ์คำ เหตุการณ์จะเริ่มทำงานเมื่อสิ้นสุดคำหนึ่งและก่อนเริ่มคำถัดไป
charIndexแสดงถึงจุดในข้อความที่จุดเริ่มต้นของคำถัดไปที่จะพูด -
errorMessage
สตริง ไม่บังคับ
คำอธิบายข้อผิดพลาด หากประเภทเหตุการณ์คือ
error -
ความยาว
number ไม่บังคับ
Chrome 74 ขึ้นไปความยาวของส่วนถัดไปของคำพูด เช่น ในเหตุการณ์
wordนี่คือความยาวของคำที่จะพูดถัดไป ระบบจะตั้งค่าเป็น -1 หากเครื่องมือเสียงไม่ได้ตั้งค่าไว้ -
ประเภท
ประเภทอาจเป็น
startทันทีที่เริ่มพูด,wordเมื่อถึงขอบเขตของคำ,sentenceเมื่อถึงขอบเขตของประโยค,markerเมื่อถึงองค์ประกอบเครื่องหมาย SSML,endเมื่อถึงจุดสิ้นสุดของคำพูด,interruptedเมื่อคำพูดหยุดหรือถูกขัดจังหวะก่อนถึงจุดสิ้นสุด,cancelledเมื่อถูกนำออกจากคิวก่อนที่จะสังเคราะห์เสียง หรือerrorเมื่อเกิดข้อผิดพลาดอื่นๆ เมื่อหยุดการพูดชั่วคราว ระบบจะเริ่มเหตุการณ์pauseหากมีการหยุดการพูดชั่วคราวกลางคัน และจะเริ่มเหตุการณ์resumeหากมีการพูดต่อ โปรดทราบว่าเหตุการณ์หยุดชั่วคราวและเล่นต่ออาจไม่เริ่มทำงานหากมีการหยุดพูดชั่วคราวระหว่างการพูด
TtsOptions
ตัวเลือกการพูดสำหรับเครื่องมือ TTS
พร็อพเพอร์ตี้
-
desiredEventTypes
string[] ไม่บังคับ
ประเภทเหตุการณ์ TTS ที่คุณสนใจฟัง หากไม่มี ระบบอาจส่งเหตุการณ์ทุกประเภท
-
enqueue
บูลีน ไม่บังคับ
หากเป็นจริง ระบบจะจัดคิวคำพูดนี้หาก TTS กำลังทำงานอยู่ หากเป็นเท็จ (ค่าเริ่มต้น) ระบบจะขัดจังหวะคำพูดปัจจุบันและล้างคิวคำพูดก่อนที่จะพูดคำพูดใหม่นี้
-
extensionId
สตริง ไม่บังคับ
รหัสส่วนขยายของเครื่องมือเสียงพูดที่จะใช้ (หากทราบ)
-
gender
VoiceGender ไม่บังคับ
เลิกใช้งานตั้งแต่ Chrome 77เลิกใช้งานเพศแล้วและระบบจะไม่สนใจ
เพศของเสียงสำหรับการสังเคราะห์เสียงพูด
-
lang
สตริง ไม่บังคับ
ภาษาที่จะใช้สำหรับการสังเคราะห์ ในรูปแบบภาษา-ภูมิภาค ตัวอย่าง: 'en', 'en-US', 'en-GB', 'zh-CN'
-
พิช
number ไม่บังคับ
ระดับเสียงพูดอยู่ระหว่าง 0 ถึง 2 (รวมค่าแรกและค่าสุดท้าย) โดย 0 คือต่ำสุดและ 2 คือสูงสุด 1.0 สอดคล้องกับระดับเสียงเริ่มต้นของเสียง
-
อัตรา
number ไม่บังคับ
อัตราการพูดที่สัมพันธ์กับอัตราเริ่มต้นสำหรับเสียงนี้ 1.0 คืออัตราเริ่มต้น ซึ่งโดยปกติจะอยู่ที่ประมาณ 180-220 คำต่อนาที 2.0 คือเร็วขึ้น 2 เท่า และ 0.5 คือช้าลงครึ่งหนึ่ง ระบบไม่อนุญาตให้ใช้ค่าที่ต่ำกว่า 0.1 หรือสูงกว่า 10.0 โดยเด็ดขาด แต่เสียงจำนวนมากจะจำกัดอัตราต่ำสุดและสูงสุดเพิ่มเติม เช่น เสียงบางเสียงอาจพูดได้ไม่เร็วกว่า 3 เท่าของอัตราปกติ แม้ว่าคุณจะระบุค่าที่มากกว่า 3.0 ก็ตาม
-
requiredEventTypes
string[] ไม่บังคับ
ประเภทเหตุการณ์ TTS ที่เสียงต้องรองรับ
-
voiceName
สตริง ไม่บังคับ
ชื่อเสียงที่จะใช้สำหรับการสังเคราะห์ หากเว้นว่างไว้ ระบบจะใช้เสียงที่พร้อมใช้งาน
-
ระดับเสียง
number ไม่บังคับ
ระดับเสียงพูดระหว่าง 0 ถึง 1 โดย 0 คือต่ำสุดและ 1 คือสูงสุด โดยมีค่าเริ่มต้นเป็น 1.0
-
onEvent
void ไม่บังคับ
ระบบจะเรียกใช้ฟังก์ชันนี้พร้อมกับเหตุการณ์ที่เกิดขึ้นในกระบวนการพูดข้อความที่เปล่งออกมา
ฟังก์ชัน
onEventจะมีลักษณะดังนี้(event: TtsEvent) => {...}
-
เหตุการณ์
เหตุการณ์การอัปเดตจากเครื่องมืออ่านออกเสียงข้อความที่ระบุสถานะของคำพูดนี้
-
TtsVoice
คำอธิบายเสียงที่ใช้ได้สำหรับการสังเคราะห์เสียงพูด
พร็อพเพอร์ตี้
-
eventTypes
EventType[] ไม่บังคับ
ประเภทเหตุการณ์ Callback ทั้งหมดที่เสียงนี้ส่งได้
-
extensionId
สตริง ไม่บังคับ
รหัสของส่วนขยายที่ให้เสียงนี้
-
gender
VoiceGender ไม่บังคับ
เลิกใช้งานตั้งแต่ Chrome 70เลิกใช้งานเพศแล้วและระบบจะไม่สนใจ
เพศของเสียงนี้
-
lang
สตริง ไม่บังคับ
ภาษาที่เสียงนี้รองรับในรูปแบบภาษา-ภูมิภาค ตัวอย่าง: 'en', 'en-US', 'en-GB', 'zh-CN'
-
รีโมต
บูลีน ไม่บังคับ
หากเป็นจริง เครื่องมือสังเคราะห์จะเป็นทรัพยากรเครือข่ายระยะไกล ซึ่งอาจมีเวลาในการตอบสนองสูงขึ้นและอาจมีค่าใช้จ่ายแบนด์วิดท์
-
voiceName
สตริง ไม่บังคับ
ชื่อของเสียง
VoiceGender
เลิกใช้งานเพศแล้วและระบบจะไม่สนใจ
ค่าแจกแจง
"male"
"female"
เมธอด
getVoices()
chrome.tts.getVoices(
callback?: function,
): Promise<TtsVoice[]>
รับอาร์เรย์ของเสียงที่ใช้ได้ทั้งหมด
พารามิเตอร์
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้(voices: TtsVoice[]) => void
-
เสียง
TtsVoice[]
อาร์เรย์ของออบเจ็กต์
tts.TtsVoiceที่แสดงเสียงที่ใช้ได้สำหรับการสังเคราะห์เสียงพูด
-
การคืนสินค้า
-
Promise<TtsVoice[]>
Chrome 101 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
): Promise<boolean>
ตรวจสอบว่าเครื่องมือกำลังพูดอยู่หรือไม่ ใน Mac OS X ผลลัพธ์จะเป็น "จริง" เมื่อใดก็ตามที่เครื่องมืออ่านออกเสียงข้อความของระบบกำลังพูด แม้ว่า Chrome จะไม่ได้เริ่มการพูดก็ตาม
พารามิเตอร์
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้(speaking: boolean) => void
-
การพูด
บูลีน
เป็นจริงหากกำลังพูด เป็นเท็จหากไม่ได้พูด
-
การคืนสินค้า
-
Promise<boolean>
Chrome 101 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
pause()
chrome.tts.pause(): void
หยุดการสังเคราะห์เสียงพูดชั่วคราว ซึ่งอาจเป็นช่วงกลางของคำพูด การเรียกให้เล่นต่อหรือหยุดจะยกเลิกการหยุดพูดชั่วคราว
resume()
chrome.tts.resume(): void
หากหยุดการพูดชั่วคราว ระบบจะพูดต่อจากจุดที่ค้างไว้
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
): Promise<void>
อ่านข้อความโดยใช้เครื่องมืออ่านออกเสียงข้อความ
พารามิเตอร์
-
คำพูด
สตริง
ข้อความที่จะพูด ไม่ว่าจะเป็นข้อความธรรมดาหรือเอกสาร SSML ที่สมบูรณ์และมีรูปแบบถูกต้อง เครื่องมือเสียงพูดที่ไม่รองรับ SSML จะตัดแท็กออกและพูดข้อความ ข้อความมีความยาวได้สูงสุด 32,768 อักขระ
-
ตัวเลือก
TtsOptions ไม่บังคับ
ตัวเลือกการอ่านออกเสียงข้อความ
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้() => void
การคืนสินค้า
-
Promise<void>
Chrome 101 ขึ้นไปประมวลผลทันทีก่อนที่เสียงพูดจะจบ หากเกิดข้อผิดพลาด ระบบจะปฏิเสธ Promise ใช้ options.onEvent เพื่อรับความคิดเห็นที่ละเอียดยิ่งขึ้น
ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
stop()
chrome.tts.stop(): void
หยุดคำพูดปัจจุบันและล้างคิวของคำพูดที่รอดำเนินการ นอกจากนี้ หากมีการหยุดการพูดชั่วคราว ระบบจะยกเลิกการหยุดชั่วคราวสำหรับการเรียกใช้การพูดครั้งถัดไป
กิจกรรม
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
เรียกใช้เมื่อรายการ tts.TtsVoice ที่ getVoices จะแสดงผลมีการเปลี่ยนแปลง
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackจะมีลักษณะดังนี้() => void