每种语言对都需要源和目标模型在设备上才能运行翻译。模型下载一次,跨应用重启持续存在,并复用于该对的每次翻译。模型下载页面列出所有 19 个支持的语言及其及其的下载状态,并允许你下载或删除每个语言。
为什么要有专用页面
ML Kit 不会自动下载模型 — 每种语言对都需要显式下载其的源和目标。模型下载页面显示此状态,并允许用户管理它,而无需深入平台存储。
对于大多数用户来说,工作流程是透明的:选择源和目标语言,应用在你首次翻译时按要求下载两个两个模型,并模型用于后续运行。专用页面适用于想要预先下载以进行离线旅行的用户、删除不再使用的语言的用户或查看占用存储空间的用户。
每种语言的模型状态
- 未下载。 显示"下载"按钮。点击开始下载。
- 下载中。 显示不确定的旋转器。ML Kit 不公开进度回调,仅公开完成;旋转器解析为"已下载"或"失败"。
- 已下载。 显示带有"删除"按钮的徽章。点击移除模型并回收存储。
- 失败。 重试按钮替换"下载"。常见原因:无网络、蜂窝被阻止、磁盘空间不足。解决根本原因后重试。
顺序下载队列
快速连续的多个下载请求是排队的,不是并行化的。本地 iOS 插件不能干净地处理并发的 manageModel 调用:第二个请求会取消第一个。应用通过单个链式 Future 序列化下载,因此并发请求依次解析。UI 仅在不确定状态下显示活动下载;排排队的请求等待轮到它们。
下载超时和轮询
如果下载回调被错过(在低网络条件下的 iOS 上观察到),下载 Future 可能会挂起。应用使用 30 秒超时来防止这种情况;如果超时触发,应用通过 isModelDownloaded 直接轮询磁盘,以确认模型是否实际落地,然后再报告成功或失败。
存储成本
每个 ML Kit 模型在磁盘上大约 10–50 MB。下载所有 19 种语言消耗大约 300–600 MB。同源和目标的模型是分开的;一个模型可以根据用户选择的角色充当源或目标。
删除模型可回收空间。没有自动清理。卸载应用会作为平台卸载的一部分删除所有下载的模型。