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 ที่ไม่ต้องใช้อาร์กิวเมนต์ ในฟังก์ชันเรียกกลับ ให้ตรวจสอบ runtime.lastError เพื่อดูว่ามีข้อผิดพลาดหรือไม่

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

การเรียกกลับจะแสดงผลทันที ก่อนที่เครื่องมือจะเริ่มสร้างคำพูด จุดประสงค์ของ การเรียกกลับคือการแจ้งเตือนข้อผิดพลาดทางไวยากรณ์ในการใช้ 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 นี้อาจมีมาร์กอัปที่ใช้ Speech Synthesis Markup Language (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"

"ตัวทำเครื่องหมาย"

"ถูกขัดจังหวะ"

"ยกเลิกแล้ว"

"ข้อผิดพลาด"

"หยุดชั่วคราว"

"เล่นต่อ"

TtsEvent

เหตุการณ์จากเครื่องมือ TTS เพื่อสื่อสารสถานะของคำพูด

พร็อพเพอร์ตี้

  • charIndex

    หมายเลข ไม่บังคับ

    ดัชนีของอักขระปัจจุบันในคำพูด สำหรับเหตุการณ์ระดับคำ เหตุการณ์จะทริกเกอร์ที่ท้ายคำหนึ่งและก่อนเริ่มคำถัดไป charIndex แสดงถึงจุดในข้อความที่จุดเริ่มต้นของคำถัดไปที่จะพูด

  • errorMessage

    สตริง ไม่บังคับ

    คำอธิบายข้อผิดพลาด หากประเภทเหตุการณ์เป็น error

  • ความยาว

    หมายเลข ไม่บังคับ

    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

    สตริง ไม่บังคับ

    รหัสส่วนขยายของเครื่องมือ Speech ที่จะใช้ (หากทราบ)

  • gender

    VoiceGender ไม่บังคับ

    เลิกใช้งานตั้งแต่ Chrome 77

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

    เพศของเสียงสำหรับการพูดที่สังเคราะห์

  • 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 แต่เสียงหลายเสียงจะจำกัดอัตราต่ำสุดและสูงสุดเพิ่มเติม เช่น เสียงหนึ่งๆ อาจพูดเร็วกว่าปกติไม่เกิน 3 เท่าแม้ว่าคุณจะระบุค่าที่มากกว่า 3.0 ก็ตาม

  • requiredEventTypes

    string[] ไม่บังคับ

    ประเภทเหตุการณ์ TTS ที่เสียงต้องรองรับ

  • voiceName

    สตริง ไม่บังคับ

    ชื่อของเสียงที่จะใช้สำหรับการสังเคราะห์ หากเว้นว่างไว้ ระบบจะใช้เสียงที่มี

  • ระดับเสียง

    หมายเลข ไม่บังคับ

    ระดับเสียงพูดระหว่าง 0 ถึง 1 โดย 0 คือระดับต่ำสุดและ 1 คือระดับสูงสุด โดยค่าเริ่มต้นคือ 1.0

  • onEvent

    void optional

    ระบบจะเรียกใช้ฟังก์ชันนี้พร้อมกับเหตุการณ์ที่เกิดขึ้นในกระบวนการพูดข้อความ

    ฟังก์ชัน onEvent มีลักษณะดังนี้

    (event: TtsEvent) => {...}

    • เหตุการณ์

      เหตุการณ์การอัปเดตจากเครื่องมืออ่านออกเสียงข้อความซึ่งระบุสถานะของคำพูดนี้

TtsVoice

คำอธิบายเสียงที่ใช้ได้สำหรับการสังเคราะห์เสียง

พร็อพเพอร์ตี้

  • eventTypes

    EventType[] ไม่บังคับ

    ประเภทเหตุการณ์การเรียกกลับทั้งหมดที่เสียงนี้ส่งได้

  • extensionId

    สตริง ไม่บังคับ

    รหัสของส่วนขยายที่ให้เสียงนี้

  • gender

    VoiceGender ไม่บังคับ

    เลิกใช้งานตั้งแต่ Chrome 70

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

    เพศของเสียงนี้

  • lang

    สตริง ไม่บังคับ

    ภาษาที่เสียงนี้รองรับในรูปแบบ language-region ตัวอย่าง: "en", "en-US", "en-GB", "zh-CN"

  • รีโมต

    บูลีน ไม่บังคับ

    หากเป็นจริง เครื่องมือสังเคราะห์จะเป็นทรัพยากรเครือข่ายระยะไกล ซึ่งอาจมีเวลาในการตอบสนองที่สูงขึ้นและอาจมีค่าใช้จ่ายแบนด์วิดท์

  • voiceName

    สตริง ไม่บังคับ

    ชื่อเสียง

VoiceGender

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

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

ค่าแจกแจง

"ชาย"

"หญิง"

เมธอด

getVoices()

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

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

พารามิเตอร์

  • callback

    ฟังก์ชัน ไม่บังคับ

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

    (voices: TtsVoice[]) => void

    • เสียง

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

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

  • Promise<TtsVoice[]>

    Chrome 101 ขึ้นไป

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

isSpeaking()

Promise
chrome.tts.isSpeaking(
  callback?: function,
)
: Promise<boolean>

ตรวจสอบว่าเครื่องมือพูดอยู่หรือไม่ ใน Mac OS X ผลลัพธ์จะเป็นจริงทุกครั้งที่เครื่องมืออ่านออกเสียงของระบบกำลังพูด แม้ว่า Chrome จะไม่ได้เป็นผู้เริ่มการอ่านออกเสียงก็ตาม

พารามิเตอร์

  • callback

    ฟังก์ชัน ไม่บังคับ

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

    (speaking: boolean) => void

    • พูด

      บูลีน

      เป็นจริงหากกำลังพูด เป็นเท็จหากไม่ได้พูด

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

  • Promise<boolean>

    Chrome 101 ขึ้นไป

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

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

    ฟังก์ชัน ไม่บังคับ

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

    () => void

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

  • Promise<void>

    Chrome 101 ขึ้นไป

    แก้ไขได้ทันทีก่อนที่เสียงพูดจะจบ หากเกิดข้อผิดพลาด ระบบจะปฏิเสธสัญญา ใช้ options.onEvent เพื่อรับความคิดเห็นโดยละเอียดเพิ่มเติม

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

stop()

chrome.tts.stop(): void

หยุดการพูดปัจจุบันและล้างคิวของคำพูดที่รอดำเนินการ นอกจากนี้ หากมีการหยุดการพูดชั่วคราว ระบบจะยกเลิกการหยุดชั่วคราวเพื่อให้ผู้ใช้พูดในสายโทรศัพท์สายถัดไป

กิจกรรม

onVoicesChanged

Chrome 124 ขึ้นไป
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

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

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    () => void