发布时间:2024 年 9 月 24 日;上次更新时间:2024 年 12 月 10 日
在将文本从一种语言翻译成另一种语言之前,您必须先确定给定文本所使用的语言。以前,翻译需要将文本上传到云服务,在服务器上执行翻译,然后下载结果。
Language Detector API 会在设备端进行推理,以便您改善隐私保护状况。虽然可以发布执行此操作的特定库,但需要下载额外的资源。
可用性
- 加入 Language Detector API 源试用(在 Chrome 132 到 135 中运行),以便在正式版中面向真实用户测试该 API。在来源处进行试用后,您可以在 Chrome 中为来源的所有用户启用该功能。
- 请在 Chrome 状态中跟踪我们的实施进度。
- 语言检测器和 Translator API 提案现已开放讨论。
- 加入抢先体验计划,抢先了解新的内置 AI API,并参与我们的邮寄名单讨论。
注册源代码试用
如需开始使用 Language Detector API,请按以下步骤操作:
- 确认您已阅读并同意遵守 Google 的《生成式 AI 使用限制政策》。
- 前往 Language Detector API 源试用。
- 点击注册,然后填写表单。
- 在网站来源字段中,提供您的来源或扩展程序 ID
chrome-extension://YOUR_EXTENSION_ID
。
- 在网站来源字段中,提供您的来源或扩展程序 ID
- 如需提交,请点击注册。
- 复制提供的令牌,并将其添加到您要启用试用版的来源或扩展程序文件中的每个网页。
- 如果您要构建扩展程序,请按照扩展程序来源试用说明操作
- 开始使用 Language Detection API。
详细了解如何开始使用来源试用。
添加了对 localhost 的支持
如需在源试用期间在 localhost
上访问 Language Detection API,您必须将 Chrome 更新到最新版本。然后,请按下列步骤操作:
- 前往
chrome://flags/#optimization-guide-on-device-model
。 - 选择 Enabled BypassPerfRequirement。这会跳过性能检查和 VRAM 要求,这可能会导致 Gemini Nano 无法在您的设备上下载。
- 前往
chrome://flags/#language-detection-api
。 - 选择已启用。
- 点击重新启动或重启 Chrome。
用例示例
Language Detector API 主要适用于以下场景:
- 确定输入文本的语言,以便进行翻译。
- 确定输入文本的语言,以便加载适用于语言特定任务(例如毒性检测)的正确模型。
- 确定输入文本的语言,以便正确标记文本,例如在在线社交网络网站中。
- 确定输入文本的语言,以便相应地调整应用界面。例如,在比利时网站上,仅显示与法语用户相关的界面。
使用 Language Detector API
Language Detector API 是 Translator API 更大的家族的一部分。首先,运行功能检测,看看浏览器是否支持 Language Detector API。
if ('ai' in self && 'languageDetector' in self.ai)
// The Language Detector API is available.
}
模型下载
语言检测依赖于针对检测语言的特定任务进行微调的模型。虽然该 API 是在浏览器中构建的,但当网站首次尝试使用该 API 时,系统会按需下载模型。在 Chrome 中,与其他模型相比,此模型非常小。事实上,由于 Chrome 浏览器功能也使用此模型,因此它可能已经存在。
如需查看模型是否已准备就绪,请调用异步 self.ai.languageDetector.capabilities()
函数并检查 available
字段。有三种可能的响应:
'no'
:当前浏览器支持 Language Detector API,但目前无法使用。例如,由于没有足够的可用磁盘空间来下载模型。'readily'
:当前浏览器支持 Language Detector API,并且可以立即使用。'after-download'
:当前浏览器支持 Language Detector API,但需要先下载模型。
如需触发下载并实例化语言检测器,请调用异步 self.ai.languageDetector.create()
函数。如果对 capabilities()
的响应为 'after-download'
,最佳实践是监听下载进度,以便在下载需要时间时通知用户。
如需了解是否可以检测到给定语言,请调用 languageAvailable()
函数。
const languageDetectorCapabilities = await self.ai.languageDetector.capabilities();
languageDetectorCapabilities.languageAvailable('es');
// 'readily'
以下示例演示了如何初始化语言检测器。
const languageDetectorCapabilities = await self.ai.languageDetector.capabilities();
const canDetect = languageDetectorCapabilities.capabilities;
let detector;
if (canDetect === 'no') {
// The language detector isn't usable.
return;
}
if (canDetect === 'readily') {
// The language detector can immediately be used.
detector = await self.ai.languageDetector.create();
} else {
// The language detector can be used after model download.
detector = await self.ai.languageDetector.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
},
});
await detector.ready;
}
运行语言检测器
Language Detector API 使用排名模型来确定给定文本最有可能使用的是哪种语言。排名是一种机器学习,其目标是对项列表进行排序。在本例中,Language Detector API 会按概率从高到低对语言进行排名。
detect()
函数可以返回第一个结果(最可能的答案),也可以按置信度对排名候选进行迭代。这将作为 {detectedLanguage, confidence}
对象的列表返回。confidence
级别以介于 0.0
(最低置信度)和 1.0
(最高置信度)之间的值表示。
const someUserText \= 'Hallo und herzlich willkommen\!';
const results \= await detector.detect(someUserText);
for (const result of results) {
// Show the full list of potential languages with their likelihood, ranked
// from most likely to least likely. In practice, one would pick the top
// language(s) that cross a high enough threshold.
console.log(result.detectedLanguage, result.confidence);
}
// (Output truncated):
// de 0.9993835687637329
// en 0.00038279531872831285
// nl 0.00010798392031574622
// ...
演示
在我们的演示中预览 Language Detector API。在文本区域中输入不同语言的文本。
标准化工作
在相应提案获得足够支持后,Language Detector API 已移至 W3C Web Incubator Community Group。该 API 是更大的 Translation API 提案的一部分。
Chrome 团队向 W3C 技术架构组征求了反馈,并询问了 Mozilla 和 WebKit 的标准立场。
分享反馈
如果您对 Chrome 的实现有任何反馈,请提交 Chromium bug。如需针对 Language Detector API 的 API 形状提供反馈,请在 Translation API GitHub 代码库中对现有问题进行评论或创建新问题。