通知

在初始化或运行引擎时,某些操作可能需要相当长的时间才能完成。您可以使用回调函数接收这些操作的进度通知。

目前,进度通知仅支持模型下载。创建引擎时,它将下载缓存中不存在的任何模型。

以下是使用图像到文本模型的回调函数示例

const { createEngine } = ChromeUtils.importESModule("chrome://global/content/ml/EngineProcess.sys.mjs");

// options needed for the task
const options = {taskName: "moz-image-to-text" };

// We create the engine object, using options and a callback
const engine = await createEngine(options, progressData => {
  console.log("Received progress data", progressData);
});

在上面的代码中,**progressData** 是 ProgressAndStatusCallbackParams 类型的一个对象,包含以下字段

  • **progress**: 表示已加载数据百分比的浮点数。请注意,100% 不一定表示操作已完成。

  • **totalLoaded**: 表示迄今为止已加载的数据总量的浮点数。

  • **currentLoaded**: 当前回调调用中加载的数据量。

  • **total**: 表示要加载的数据总量估算值的浮点数。

  • **units**: 报告数量的单位。

  • **type**: 正在跟踪的操作的名称。它将是 ProgressType.DOWNLOADProgressType.LOAD_FROM_CACHE 之一。

  • **statusText**: 表示正在跟踪的操作状态的消息,可以是

    • ProgressStatusText.INITIATE 表示操作已开始。这将对由 idtype 唯一标识的每个操作使用一次。

    • ProgressStatusText.SIZE_ESTIMATE 表示操作大小的估算值。这将对由 idtype 唯一标识的每个操作使用一次,更新 total` 字段。

    • ProgressStatusText.IN_PROGRESS 表示操作正在进行中。这将在每次发生进度时使用,更新 totalLoaded`currentLoaded` 字段。

    • ProgressStatusText.DONE 表示操作已完成。

  • **id**: 唯一标识正在跟踪的对象/文件的 ID。

  • **ok**: 表示操作是否成功的布尔值。

  • **metadata**: 正在跟踪的操作的任何其他元数据。