chrome.tts

คำอธิบาย

ใช้ chrome.tts API เพื่อเล่นการอ่านออกเสียงข้อความ (TTS) แบบสังเคราะห์ โปรดดู ttsEngine API ที่เกี่ยวข้อง ซึ่งช่วยให้ส่วนขยายติดตั้งใช้งานเครื่องมืออ่านออกเสียงได้

Chrome มีความสามารถนี้ใน Windows (ที่ใช้ SAPI 5), Mac OS X และ ChromeOS โดยใช้ ความสามารถในการสังเคราะห์เสียงที่ระบบปฏิบัติการมีให้ ในทุกแพลตฟอร์ม ผู้ใช้สามารถ ติดตั้งส่วนขยายที่ลงทะเบียนตัวเองเป็นเครื่องมืออ่านออกเสียงทางเลือก

สิทธิ์

tts

แนวคิดและการใช้งาน

สร้างเสียงพูด

โทรหา 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 ใน Callback เพื่อดูว่ามี

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 ขึ้นไป

ค่าแจกแจง

"เริ่ม"

"สิ้นสุด"

"คำ"

"ประโยค"

"เครื่องหมาย"

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

"cancelled"

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

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

"ดำเนินการต่อ"

TtsEvent

เหตุการณ์จากเครื่องมือ TTS เพื่อสื่อสารสถานะของการเปล่งเสียง

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

  • charIndex

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

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

  • errorMessage

    string ไม่บังคับ

    คำอธิบายข้อผิดพลาด หากประเภทเหตุการณ์คือ 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

    string ไม่บังคับ

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

  • gender

    VoiceGender ไม่บังคับ

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

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

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

  • lang

    string ไม่บังคับ

    ภาษาที่จะใช้ในการสังเคราะห์ในรูปแบบ 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 เป็นประเภทที่ Voice ต้องรองรับ

  • voiceName

    string ไม่บังคับ

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

  • ระดับเสียง

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

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

  • เหตุการณ์

    เป็นโมฆะ ไม่บังคับ

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

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

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

    • event

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

TtsVoice

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

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

  • eventTypes

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

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

  • extensionId

    string ไม่บังคับ

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

  • gender

    VoiceGender ไม่บังคับ

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

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

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

  • lang

    string ไม่บังคับ

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

  • รีโมต

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

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

  • voiceName

    string ไม่บังคับ

    ชื่อของเสียง

VoiceGender

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

เราเลิกใช้งานและละเว้นเพศแล้ว

ค่าแจกแจง

"ชาย"

"หญิง"

เมธอด

getVoices()

สัญญา
chrome.tts.getVoices(
  callback?: function,
)

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

พารามิเตอร์

  • Callback

    ไม่บังคับ

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

    (voices: TtsVoice[]) => void

    • เสียง

      อาร์เรย์ของวัตถุ tts.TtsVoice ที่แสดงถึงเสียงที่ใช้ได้สำหรับการสังเคราะห์เสียง

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

  • Promise&lt;TtsVoice[]&gt;

    Chrome 101 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

isSpeaking()

สัญญา
chrome.tts.isSpeaking(
  callback?: function,
)

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

พารามิเตอร์

  • Callback

    ไม่บังคับ

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

    (speaking: boolean) => void

    • การพูด

      boolean

      "จริง" หากพูด แต่หากเป็น "เท็จ" หากไม่เป็นเช่นนั้น

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

  • Promise&lt;boolean&gt;

    Chrome 101 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

pause()

chrome.tts.pause()

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

resume()

chrome.tts.resume()

หากหยุดพูดชั่วคราว จะพูดต่อจากจุดที่หยุดค้างไว้

speak()

สัญญา
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)

พูดข้อความโดยใช้เครื่องมืออ่านออกเสียงข้อความ

พารามิเตอร์

  • การพูด

    สตริง

    ข้อความที่จะพูด ไม่ว่าจะเป็นข้อความธรรมดาหรือเอกสาร SSML ที่สมบูรณ์และมีรูปแบบที่ถูกต้อง เครื่องมืออ่านออกเสียงที่ไม่รองรับ SSML จะตัดแท็กออกและพูดข้อความ ความยาวสูงสุดของข้อความคือ 32,768 อักขระ

  • ตัวเลือก

    TtsOptions ไม่บังคับ

    ตัวเลือกการพูด

  • Callback

    ไม่บังคับ

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

    () => void

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

  • คำมั่นสัญญา<โมฆะ>

    Chrome 101 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

stop()

chrome.tts.stop()

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

กิจกรรม

onVoicesChanged

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

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

พารามิเตอร์

  • Callback

    ฟังก์ชัน

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

    () => void