chrome.ttsEngine

Mô tả

Sử dụng chrome.ttsEngine API để triển khai một công cụ chuyển văn bản sang lời nói(TTS) bằng cách sử dụng một tiện ích. Nếu đăng ký bằng API này, tiện ích của bạn sẽ nhận được các sự kiện chứa một câu nói cần được phát và các tham 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 mọi công nghệ web 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

Khái niệm và cách sử dụng

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

Để triển khai một công cụ TTS, tiện ích phải khai báo quyền "ttsEngine" rồi khai báo tất cả cá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
  }
}

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

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

Bạn không bắt buộc phải dùng tham số lang, nhưng nên dùng. Hầu như luôn luôn, một giọng nói chỉ 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ụ này có thể dễ dàng đăng ký một giọng nói riêng cho từng ngôn ngữ. Trong những trường hợp hiếm gặp khi một giọng nói có thể xử lý nhiều ngôn ngữ, cách dễ nhất là chỉ cần 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âu nói bằng mọi ngôn ngữ, hãy bỏ qua tham số lang trong tệp kê khai của tiện ích.

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

Sau khi tải, tiện ích có thể thay thế danh sách các giọng nói đã khai báo bằng cách gọi chrome.ttsEngine.updateVoices. (Xin lưu ý rằng các tham số được dùng trong lệnh gọi theo chương trình đến updateVoices được viết theo kiểu camel: ví dụ: voiceName, không giống như tệp kê khai 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ừ. Dùng event.charIndex để xác định vị trí hiện tại của lời nói.
  • 'sentence': Đã đạt đến ranh giới của câu. Dùng event.charIndex để xác định vị trí hiện tại của lời nói.
  • 'marker': Đã đạt đến một điểm đánh dấu SSML. Dùng event.charIndex để xác định vị trí hiện tại của lời nói.
  • 'end': Công cụ đã nói xong câu.
  • 'error': Đã xảy ra lỗi dành riêng cho công cụ và không thể phát biểu thức này. Truyền thêm thông tin trong event.errorMessage.

Công cụ chuyển lời nói thành văn bản không gửi các sự kiện 'interrupted''cancelled'; Chrome sẽ tự động tạo các sự kiện này.

Các ứng dụng chuyển văn bản sang lời nói có thể lấy thông tin về giọng nó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 các ứ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 có gửi một yêu cầu lời nói nhất định đến một tiện ích hay không chỉ dựa trên việc tiện ích đó có hỗ trợ các thông số giọng nó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, không có cách nào để tiện ích nhận được yêu cầu về lời nói và quyết định một cách linh hoạt xem có xử lý yêu cầu đó hay không.

Loại

AudioBuffer

Chrome 92 trở lên

Các tham số chứa bộ đệm âm thanh và dữ liệu liên kết.

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. Đoạn âm thanh này phải có độ dài chính xác là audioStreamOptions.bufferSize và được mã hoá dưới dạng đơn âm, ở audioStreamOptions.sampleRate và dưới dạng pcm tuyến tính, số thực có dấu 32 bit, tức là loại Float32Array trong javascript.

  • charIndex

    number không bắt buộc

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

  • isLastBuffer

    boolean không bắt buộc

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

AudioStreamOptions

Chrome 92 trở lên

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

Thuộc tính

  • bufferSize

    số

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

  • sampleRate

    số

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

LanguageInstallStatus

Chrome 132 trở lên

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

Enum

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

Chrome 132 trở lên

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. Có thể được điền sẵ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 đó bạn có thể bỏ qua khu vực. Ví dụ: en, en-AU, zh-CH.

LanguageUninstallOptions

Chrome 132 trở lên

Các lựa chọn để gỡ cài đặt một ngôn ngữ cụ thể.

Thuộc tính

  • uninstallImmediately

    boolean

    True nếu ứng dụng TTS muốn ngôn ngữ được gỡ cài đặt ngay lập tức. Dựa vào thông số này và thông tin về người yêu cầu, công cụ có thể chọn thời điểm hoặc quyết định có nên gỡ cài đặt ngôn ngữ hay không. Nếu là false, thì 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 lựa chọn được chỉ định cho phương thức tts.speak().

Thuộc tính

  • gender

    VoiceGender không bắt buộc

    Không dùng nữa kể từ Chrome 92

    Giới tính không đượ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ạo.

  • lang

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

    Ngôn ngữ sẽ được dùng để tổng hợp, ở dạng language-region. Ví dụ: "en", "en-US", "en-GB", "zh-CN".

  • đề cử

    number không bắt buộc

    Cao độ khi nói nằm trong khoảng từ 0 đến 2 (bao gồm cả 0 và 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

    number 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ừ mỗi phút. Tốc độ 2.0 nhanh gấp đôi và tốc độ 0.5 chậm bằng một nửa. Giá trị này chắc chắn nằm trong khoảng từ 0,1 đến 10,0 (bao gồm cả hai giá trị này). Khi một giọng nói không hỗ trợ toàn bộ dải tốc độ này, đừng trả về lỗi. Thay vào đó, hãy cắt tốc độ trong 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 dùng để tổng hợp.

  • thể tích

    number không bắt buộc

    Âm lượng nói từ 0 đến 1 (tính cả 0 và 1), trong đó 0 là thấp nhất và 1 là 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 của ứng dụng yêu cầu trạng thái.

Thuộc tính

  • id

    chuỗi

    Máy khách đưa ra yêu cầu quản lý ngôn ngữ. Đối với 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 dễ đọc của tính năng.

  • 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 Không dùng nữa kể từ Chrome 70

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

Enum

"male"

"female"

Phương thức

updateLanguage()

Chrome 132 trở lên
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

Được gọi bởi một công cụ khi có người tìm cách cài đặt ngôn ngữ và khi một ngôn ngữ bị gỡ cài đặt. Cũng được gọi để phản hồi yêu cầu về trạng thái của mộ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.

Thông 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[],
)
: void

Đượ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.

Thông số

  • những giọng nói

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

Sự kiện

onInstallLanguageRequest

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

Được kích hoạt khi một ứng dụng TTS yêu cầu cài đặt mộ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 nên gọi ttsEngine.updateVoices để đăng ký các giọng nói mới có sẵn.

Thông số

  • callback

    hàm

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

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

onLanguageStatusRequest

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

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

Thông số

  • callback

    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 một công cụ hỗ trợ sự kiện tạm dừng, thì công cụ đó sẽ tạm dừng câu hiện tại đang được nó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.

Thông số

  • callback

    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 câu 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.

Thông số

  • callback

    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 các 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 lựa chọn.

Thông số

  • callback

    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 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 các 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 lựa 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.

Thông số

  • callback

    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 tham số chứa bộ đệm âm thanh và dữ liệu liên kết.

    • 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

        Một chuỗi mô tả lỗi.

onStop

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

Sự kiện này xảy ra khi một cuộc gọi được thực hiện đế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 đó không nên làm gì cả (không được gây ra 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.

Thông số

  • callback

    hàm

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

    () => void

onUninstallLanguageRequest

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

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

Thông số