chrome.tts

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

Chrome 54 ขึ้นไป

ค่าแจกแจง

"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

Chrome 77 ขึ้นไป

ตัวเลือกการพูดสำหรับเครื่องมือ 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

Chrome 54 ขึ้นไป เลิกใช้งานตั้งแต่ Chrome 70

เลิกใช้งานเพศแล้วและระบบจะไม่สนใจ

ค่าแจกแจง

"male"

"female"

เมธอด

getVoices()

Promise
chrome.tts.getVoices(
  callback?: function,
)
: Promise<TtsVoice[]>

รับอาร์เรย์ของเสียงที่ใช้ได้ทั้งหมด

พารามิเตอร์

  • callback

    function ไม่บังคับ

    พารามิเตอร์ callback จะมีลักษณะดังนี้

    (voices: TtsVoice[]) => void

    • เสียง

      อาร์เรย์ของออบเจ็กต์ tts.TtsVoice ที่แสดงเสียงที่ใช้ได้สำหรับการสังเคราะห์เสียงพูด

การคืนสินค้า

  • Promise<TtsVoice[]>

    Chrome 101 ขึ้นไป

    ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback

isSpeaking()

Promise
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()

Promise
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 124 ขึ้นไป
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

เรียกใช้เมื่อรายการ tts.TtsVoice ที่ getVoices จะแสดงผลมีการเปลี่ยนแปลง

พารามิเตอร์

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback จะมีลักษณะดังนี้

    () => void