chrome.ttsEngine

Mô tả

Sử dụng API chrome.ttsEngine để triển khai công cụ chuyển văn bản sang lời nói(TTS) bằng một tiện ích. Nếu đăng ký bằng API này, tiện ích sẽ nhận được các sự kiện chứa một câu nói cần được nói và các thông số khác khi bất kỳ tiện ích hoặc Ứng dụng Chrome nào sử dụng API tts để tạo lời nói. Sau đó, tiện ích của bạn có thể sử dụng bất kỳ công nghệ web nào hiện có để tổng hợp và xuất lời nói, đồng thời gửi các sự kiện trở lại hàm gọi để báo cáo trạng thái.

Quyền

ttsEngine

Tổng quan

Tiện ích có thể tự đăng ký làm công cụ phát âm. Bằng cách đó, trình bổ trợ có thể chặn một số hoặc tất cả lệnh gọi đến các hàm như tts.speaktts.stop, đồng thời cung cấp phương thức triển khai thay thế. Tiện ích có thể sử dụng bất kỳ công nghệ web nào hiện có để cung cấp lời nói, bao gồm cả âm thanh trực tuyến từ máy chủ, âm thanh HTML5. Tiện ích thậm chí có thể làm một việc khác với các câu lệnh, chẳng hạn như hiển thị phụ đề trong cửa sổ bật lên hoặc gửi các câu lệnh đó dưới dạng thông điệp nhật ký đến một máy chủ từ xa.

Tệp kê khai

Để triển khai công cụ TTS, tiện ích phải khai báo quyền "ttsEngine", sau đó khai báo tất cả giọng nói mà tiện ích cung cấp trong tệp kê khai tiện ích, như sau:

{
  "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
  }
}

Một tiện ích có thể chỉ định số lượng giọng nói bất kỳ.

Tham số voice_name là bắt buộc. Tên phải đủ mô tả để xác định tên giọng nói và công cụ được sử dụng. Trong trường hợp hiếm gặp là hai tiện ích đăng ký giọng nói cùng tên, ứng dụng có thể chỉ định mã của tiện ích sẽ thực hiện quá trình tổng hợp.

Bạn không bắt buộc phải sử dụng thông số lang, nhưng bạn nên sử dụng. Hầu hết các giọng nói đều có thể tổng hợp lời nói bằng một ngôn ngữ duy nhất. Khi hỗ trợ nhiều ngôn ngữ, công cụ có thể dễ dàng đăng ký một giọng nói riêng cho từng ngôn ngữ. Trong một số ít trường hợp, một giọng nói có thể xử lý nhiều ngôn ngữ, cách dễ nhất là chỉ liệt kê hai giọng nói riêng biệt và xử lý chúng bằng cùng một logic nội bộ. Tuy nhiên, nếu bạn muốn tạo một giọng nói có thể xử lý các câu nói bằng bất kỳ ngôn ngữ nào, hãy bỏ qua tham số lang khỏi tệp kê khai của tiện ích.

Cuối cùng, bạn phải có thông số event_types nếu công cụ có thể gửi sự kiện để cập nhật ứng dụng về tiến trình tổng hợp lời nói. Tối thiểu, bạn nên hỗ trợ loại sự kiện 'end' để cho biết thời điểm lời nói kết thúc, nếu không, Chrome sẽ không thể lên lịch các câu lệnh đã xếp hàng.

Sau khi tải, một tiện ích có thể thay thế danh sách giọng nói đã khai báo bằng cách gọi chrome.ttsEngine.updateVoices. (Lưu ý rằng các tham số được dùng trong lệnh gọi có lập trình đến updateVoices được viết theo kiểu camel: ví dụ: voiceName, không giống như tệp kê khai sử dụng voice_name.)

Các loại sự kiện có thể gửi tương ứng với các loại sự kiện mà phương thức speak() nhận được:

  • 'start': Công cụ đã bắt đầu nói câu lệnh.
  • 'word': Đã đạt đến ranh giới từ. Sử dụng event.charIndex để xác định vị trí lời nói hiện tại.
  • 'sentence': Đã đạt đến ranh giới câu. Sử dụng event.charIndex để xác định vị trí lời nói hiện tại.
  • 'marker': Đã đạt đến điểm đánh dấu SSML. Sử dụng event.charIndex để xác định vị trí lời nói hiện tại.
  • 'end': Công cụ đã nói xong câu lệnh.
  • 'error': Đã xảy ra lỗi dành riêng cho công cụ và không thể nói câu lệnh này. Truyền thêm thông tin trong event.errorMessage.

Sự kiện 'interrupted''cancelled' không do công cụ lời nói gửi; mà do Chrome tự động tạo.

Ứng dụng chuyển văn bản sang lời nói có thể lấy thông tin thoại từ tệp kê khai của tiện ích bằng cách gọi tts.getVoices, giả sử bạn đã đăng ký trình nghe sự kiện lời nói như mô tả bên dưới.

Xử lý sự kiện lời nói

Để tạo lời nói theo yêu cầu của ứng dụng, tiện ích của bạn phải đăng ký trình nghe cho cả onSpeakonStop, như sau:

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);

Quyết định gửi hay không gửi một yêu cầu thoại nhất định đến một tiện ích chỉ dựa trên việc tiện ích đó có hỗ trợ các tham số thoại nhất định trong tệp kê khai hay không và đã đăng ký trình nghe cho onSpeakonStop hay chưa. Nói cách khác, tiện ích không thể nhận được yêu cầu thoại và tự động quyết định xem có xử lý yêu cầu đó hay không.

Loại

AudioBuffer

Chrome 92 trở lên

Các thông số chứa vùng đệm âm thanh và dữ liệu liên quan.

Thuộc tính

  • audioBuffer

    ArrayBuffer

    Vùng đệm âm thanh từ công cụ chuyển văn bản sang lời nói. Luồng này phải có độ dài chính xác là audioStreamOptions.bufferSize và được mã hoá dưới dạng âm thanh đơn kênh, tại audioStreamOptions.sampleRate và dưới dạng pcm tuyến tính, dấu phẩy động 32 bit, tức là loại Float32Array trong javascript.

  • charIndex

    số không bắt buộc

    Chỉ mục ký tự liên kết với vùng đệm âm thanh này.

  • isLastBuffer

    boolean không bắt buộc

    Đúng nếu vùng đệm âm thanh này là vùng đệm cuối cùng cho văn bản đang được đọc.

AudioStreamOptions

Chrome 92 trở lên

Chứa định dạng luồng âm thanh dự kiến do công cụ tạo ra.

Thuộc tính

  • bufferSize

    số

    Số lượng mẫu trong vùng đệm âm thanh.

  • sampleRate

    số

    Tốc độ lấy mẫu dự kiến trong vùng đệm âm thanh.

LanguageInstallStatus

Đang chờ xử lý

Trạng thái cài đặt của một giọng nói.

Enum

"notInstalled"

"installing"

"đã cài đặt"

"failed"

LanguageStatus

Đang chờ xử lý

Trạng thái cài đặt của một ngôn ngữ.

Thuộc tính

  • error

    chuỗi không bắt buộc

    Thông tin chi tiết về các lỗi cài đặt. Không bắt buộc phải điền nếu không cài đặt được ngôn ngữ.

  • installStatus

    Trạng thái cài đặt.

  • lang

    chuỗi

    Chuỗi ngôn ngữ ở dạng mã ngôn ngữ-mã khu vực, trong đó khu vực có thể bị bỏ qua. Ví dụ: en, en-AU, zh-CH.

LanguageUninstallOptions

Đang chờ xử lý

Các tuỳ chọn để gỡ cài đặt một ngôn ngữ nhất định.

Thuộc tính

  • uninstallImmediately

    boolean

    Đúng nếu ứng dụng TTS muốn gỡ cài đặt ngôn ngữ ngay lập tức. Công cụ có thể chọn có gỡ cài đặt ngôn ngữ hay không và thời điểm gỡ cài đặt, dựa trên tham số này và thông tin về người yêu cầu. Nếu giá trị là false, thì ứng dụng có thể sử dụng các tiêu chí khác, chẳng hạn như mức sử dụng gần đây, để xác định thời điểm gỡ cài đặt.

SpeakOptions

Chrome 92 trở lên

Các tuỳ chọn được chỉ định cho phương thức tts.speak().

Thuộc tính

  • gender

    VoiceGender không bắt buộc

    Ngừng sử dụng kể từ Chrome 92

    Giới tính không còn được dùng nữa và sẽ bị bỏ qua.

    Giới tính của giọng nói cho lời nói được tổng hợp.

  • lang

    chuỗi không bắt buộc

    Ngôn ngữ sẽ được dùng để tổng hợp, ở dạng ngôn ngữ-khu vực. Ví dụ: "vi", "vi-VN", "vi-US", "zh-CN".

  • đề cử

    số không bắt buộc

    Độ cao giọng nói từ 0 đến 2, trong đó 0 là thấp nhất và 2 là cao nhất. 1.0 tương ứng với độ cao mặc định của giọng nói này.

  • vận tốc

    số không bắt buộc

    Tốc độ nói so với tốc độ mặc định của giọng nói này. 1.0 là tốc độ mặc định, thường là khoảng 180 đến 220 từ/phút. 2.0 nhanh gấp đôi và 0.5 nhanh một nửa. Giá trị này được đảm bảo nằm trong khoảng từ 0,1 đến 10,0. Khi một giọng nói không hỗ trợ đầy đủ phạm vi tốc độ này, đừng trả về lỗi. Thay vào đó, hãy cắt tốc độ xuống phạm vi mà giọng nói hỗ trợ.

  • voiceName

    chuỗi không bắt buộc

    Tên của giọng nói để sử dụng cho tính năng tổng hợp.

  • thể tích

    số không bắt buộc

    Độ to của giọng nói nằm trong khoảng từ 0 đến 1, trong đó 0 là mức thấp nhất và 1 là mức cao nhất, với giá trị mặc định là 1.0.

TtsClient

Chrome 131 trở lên

Giá trị nhận dạng cho trạng thái yêu cầu của ứng dụng.

Thuộc tính

  • id

    chuỗi

    Ứng dụng đưa ra yêu cầu quản lý ngôn ngữ. Đối với một tiện ích, đây là mã nhận dạng duy nhất của tiện ích. Đối với các tính năng của Chrome, đây là tên tính năng mà con người có thể đọc được.

  • nguồn

    Loại người yêu cầu.

TtsClientSource

Chrome 131 trở lên

Loại người yêu cầu.

Enum

"chromefeature"

"extension"

VoiceGender

Chrome 54 trở lên Ngừng sử dụng kể từ Chrome 70

Giới tính không còn được dùng nữa và sẽ bị bỏ qua.

Enum

"male"

"female"

Phương thức

updateLanguage()

Đang chờ xử lý
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)

Được công cụ gọi khi cố gắng cài đặt ngôn ngữ và khi gỡ cài đặt ngôn ngữ. Cũng được gọi để phản hồi yêu cầu trạng thái từ ứng dụng khách. Khi một giọng nói được cài đặt hoặc gỡ cài đặt, công cụ cũng phải gọi ttsEngine.updateVoices để đăng ký giọng nói đó.

Tham số

  • trạng thái

    Trạng thái cài đặt của ngôn ngữ.

updateVoices()

Chrome 66 trở lên
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

Được một công cụ gọi để cập nhật danh sách giọng nói. Danh sách này sẽ ghi đè mọi giọng nói được khai báo trong tệp kê khai của tiện ích này.

Tham số

  • những giọng nói

    Mảng các đối tượng tts.TtsVoice đại diện cho các giọng nói có sẵn để tổng hợp lời nói.

Sự kiện

onInstallLanguageRequest

Chrome 131 trở lên
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Được kích hoạt khi ứng dụng TTS yêu cầu cài đặt ngôn ngữ mới. Công cụ này sẽ cố gắng tải xuống và cài đặt ngôn ngữ, đồng thời gọi ttsEngine.updateLanguage bằng kết quả. Khi thành công, công cụ cũng sẽ gọi ttsEngine.updateVoices để đăng ký các giọng nói mới có sẵn.

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

Đang chờ xử lý
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Được kích hoạt khi ứng dụng TTS yêu cầu trạng thái cài đặt của một ngôn ngữ.

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    (requestor: TtsClient, lang: string) => void

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

Không bắt buộc: nếu hỗ trợ sự kiện tạm dừng, công cụ sẽ tạm dừng lời nói hiện tại (nếu có) cho đến khi nhận được sự kiện tiếp tục hoặc sự kiện dừng. Xin lưu ý rằng sự kiện dừng cũng sẽ xoá trạng thái tạm dừng.

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

Không bắt buộc: nếu một công cụ hỗ trợ sự kiện tạm dừng, thì công cụ đó cũng phải hỗ trợ sự kiện tiếp tục để tiếp tục nói lời nói hiện tại (nếu có). Xin lưu ý rằng sự kiện dừng cũng sẽ xoá trạng thái tạm dừng.

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    () => void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

Được gọi khi người dùng thực hiện lệnh gọi đến tts.speak() và một trong những giọng nói trong tệp kê khai của tiện ích này là giọng nói đầu tiên khớp với đối tượng tuỳ chọn.

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • câu nói

      chuỗi

    • tùy chọn
    • sendTtsEvent

      hàm

      Tham số sendTtsEvent có dạng như sau:

      (event: tts.TtsEvent) => void

      • event

        Sự kiện từ công cụ chuyển văn bản sang lời nói cho biết trạng thái của câu lệnh này.

onSpeakWithAudioStream

Chrome 92 trở lên
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Được gọi khi người dùng thực hiện lệnh gọi đến tts.speak() và một trong những giọng nói trong tệp kê khai của tiện ích này là giọng nói đầu tiên khớp với đối tượng tuỳ chọn. Khác với ttsEngine.onSpeak ở chỗ Chrome cung cấp dịch vụ phát âm thanh và xử lý việc gửi các sự kiện tts.

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • câu nói

      chuỗi

    • tùy chọn
    • audioStreamOptions
    • sendTtsAudio

      hàm

      Tham số sendTtsAudio có dạng như sau:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Các thông số chứa vùng đệm âm thanh và dữ liệu liên quan.

    • sendError

      hàm

      Chrome 94 trở lên

      Tham số sendError có dạng như sau:

      (errorMessage?: string) => void

      • errorMessage

        chuỗi không bắt buộc

        Chuỗi mô tả lỗi.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

Được kích hoạt khi có lệnh gọi đến tts.stop và tiện ích này có thể đang nói. Nếu một tiện ích nhận được lệnh gọi đến onStop và lời nói đã dừng, thì tiện ích đó sẽ không làm gì cả (không báo lỗi). Nếu lời nói đang ở trạng thái tạm dừng, thì thao tác này sẽ huỷ trạng thái tạm dừng.

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    () => void

onUninstallLanguageRequest

Đang chờ xử lý
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Được kích hoạt khi ứng dụng TTS cho biết không cần ngôn ngữ nữa.

Tham số