谷歌发布了 LiteRT-LM 新版本,扩展了网页开发者的模型加载方式和设备端语音处理能力。浏览器支持分块读取模型的流式加载,语音应用开发者可通过同一运行接口使用多种识别与合成模型。现有 C API 用户需要按照新的函数规则修改代码。
1. 通过多种输入路径加载网页模型
根据 v0.19.0 发布说明,网页 SDK 以流式方式加载所有模型,即分块接收并处理,且默认使用负责实际计算的 GPU 后端。新版还增加了图像和音频输入支持。网页 API 指南说明,模型权重,即决定模型行为的数值信息,会从地址直接流式获取。开发者不仅可连接远程地址,也可将浏览器中的数据作为模型输入。
网页 API 指南列出的模型输入包括 HTTP·HTTPS 地址、指向 Hugging Face 仓库的地址、浏览器文件或字节流,以及按顺序传递的数据流。只提供仓库地址时,系统会选择适合引擎后端的模型文件。如果多个文件符合条件,则加载其中一个,并以警告形式列出其余文件。
最简单的示例是将模型仓库地址传给引擎。
const engine = await Engine.create({
// The model's Hugging Face repository
model: 'hf://litert-community/gemma-4-E2B-it-litert-lm',
// Or the URL of a model file, on Hugging Face or anywhere else
// model: 'https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it-gpu.litertlm',
});加载模型后,可在引擎中创建对话并使用。网页 API 指南建议在使用结束后删除引擎,以释放资源。
2. 网页延迟随输入形式而变化
根据谷歌公布的数据,EmbeddingGemma 2 在 MacBook Pro M5 上使用 WebGPU 时,测得以下延迟。概览页面标注的模型大小为 485 MB。这一运行案例展示了改变输入组合时,网页应用等待时间的变化。
表:不同网页输入组合的延迟
条件:EmbeddingGemma 2(740M 多模态,485 MB)、MacBook Pro M5、WebGPU,依据 Google AI Edge 文档
单位:毫秒
| 输入组合 | 延迟 |
|---|---|
| 文本 | 21.8 |
| 文本+图像 | 107 |
| 文本+音频 | 228 |
| 文本+图像+音频 | 226 |
与仅输入文本相比,加入图像或音频的输入延迟更长。因此,在浏览器中引入多模态处理时,需要在产品流程中考虑不同输入方式带来的等待时间差异。
3. 将语音识别与合成模型纳入统一运行框架
发布说明宣布支持 Qwen3-ASR 等语音识别模型和 Kokoro 等合成模型。仓库中的实验性运行工具通过一个可执行文件和通用 C++ 接口传入输入、接收输出,无需为每种模型使用单独的工具。
Qwen3-TTS 也在新增支持列表中。在这一通用运行框架中,创建一次引擎后,即可向会话输入文本或语音,并分块接收和处理结果。
Kokoro 模型卡说明,该模型将 82M 参数打包为一个 351 MB 文件,提供 24 kHz 语音,支持 9 种语言及方言、54 种声音。GPU 专用文件在 GPU 上处理将中间声学表示转换为实际声音的部分,通用文件则可在 CPU 和 GPU 上使用。
根据模型卡中公布的公司数据,在 Galaxy S26 上用 af_heart 声音合成一段 18.3 秒的英语段落时,GPU 专用文件耗时 4.0 秒,峰值内存即运行期间最大内存用量为 485 MB。测试设备搭载 Snapdragon 8 Elite Gen 5 和 Adreno GPU,使用 4 个 CPU 线程,并在测量前预热一次,即先运行一次以稳定状态。
在相同段落、声音和预热条件下,通用文件在 GPU 上运行耗时 3.9 秒,内存为 1,030–1,225 MB;在 CPU 上运行耗时 4.7 秒,内存为 975 MB。比较该设备上的 GPU 运行结果,GPU 专用文件可在保持相近合成速度的同时降低内存用量。
4. C API 1.0.0 更改错误与结果传递方式
本次发布将 C API 升级至 1.0.0,包含破坏兼容性的变更。可能失败的函数会返回状态码,并通过 out_* 参数传递结果。导出符号,即公开供外部调用的函数名,也限制为 litert_lm_* 系列。按照旧函数签名,即函数名称及输入输出规则编写的 C 代码,需要根据新头文件修改。
头文件新增了检查实际加载库的 API 版本的函数。调用方可以比较编译时使用的头文件版本与运行中库的版本。如果部署方式允许独立于应用替换库,可将这一检查纳入集成流程。
错误处理规则也发生了变化。成功返回 0,失败返回正数状态码,并在调用失败的线程中读取最后一条错误消息。失败时,指针结果会被设为 NULL,数值型结果则不写入。原先检查负数返回值的代码需要改为判断状态码。
5. 综合考虑运行路径扩展、资源与迁移成本
通用运行工具减少了使用多种语音模型的工作,但也会将受支持模型的实现一并链接。自建应用可以只链接所需模型的实现,以减少不使用的依赖和可执行文件大小。这是在享受功能扩展的同时控制部署体积的方法。
选择 GPU 专用语音文件时,需要设备支持 LiteRT 的 GPU 运行。此外,1.0.0 之前的库没有 API 版本检查函数,因此采用动态加载,即在运行时加载所需库的应用,如果找不到该函数,就应将其视为不兼容的库。
本次更新的实际价值在于扩展网页和语音模型的使用路径,而是否引入,还需综合考虑设备资源与 C API 迁移工作。
