内置 AI 的语言检测

发布时间:2024 年 9 月 24 日;最后更新时间:2025 年 5 月 20 日

说明类视频 Web 扩展程序 Chrome 状态 意向
MDN Chrome 138 Chrome 138 视图 Intent to Ship

在将文本从一种语言翻译成另一种语言之前,您必须先确定给定文本所使用的语言。以前,翻译需要将文本上传到云服务,在服务器上执行翻译,然后下载结果。

Language Detector API 在客户端运行,这意味着您可以保护用户隐私。虽然可以提供执行此操作的特定库,但需要下载额外的资源。

何时使用语言检测

Language Detector API 主要适用于以下场景:

  • 确定输入文本的语言,以便进行翻译。
  • 确定输入文本的语言,以便为特定语言的任务(例如检测有害内容)加载正确的模型。
  • 确定输入文本的语言,以便正确标记,例如在在线社交网站中。
  • 确定输入文本的语言,以便相应地调整应用的界面。例如,在比利时网站上,仅向讲法语的用户显示相关界面。

开始使用

语言检测器 API 自 Chrome 138 稳定版开始提供。运行功能检测,查看浏览器是否支持 Language Detector API。

if ('LanguageDetector' in self) {
  // The Language Detector API is available.
}

查看硬件要求

开发者和在 Chrome 中使用这些 API 运行功能的用户必须满足以下要求。其他浏览器可能有不同的运行要求。

语言检测器和翻译器 API 可在桌面版 Chrome 中使用。这些 API 不适用于移动设备。当满足以下条件时,Prompt API、Summarizer API、Writer API 和 Rewriter API 可在 Chrome 中正常运行:

  • 操作系统:Windows 10 或 11;macOS 13 及更高版本(Ventura 及更高版本);或 Linux。使用 Gemini Nano 的 API 尚不支持 Android 版 Chrome、iOS 版 Chrome 和 ChromeOS 版 Chrome。
  • 存储空间:包含 Chrome 个人资料的卷上至少有 22 GB 的可用空间。
  • GPU:VRAM 严格大于 4 GB。
  • 网络:无限流量或不按流量计费的网络连接。

Gemini Nano 的确切大小可能会略有不同。如需了解当前大小,请访问 chrome://on-device-internals 并前往模型状态。 打开列出的文件路径,以确定模型大小。

模型下载

语言检测功能依赖于针对检测语言这一特定任务进行微调的模型。虽然该 API 内建于浏览器中,但模型会在网站首次尝试使用该 API 时按需下载。在 Chrome 中,与其他模型相比,此模型非常小。它可能已经存在,因为其他 Chrome 功能也使用此模型。

如需查看模型是否已准备就绪,请调用异步 LanguageDetector.availability() 函数并检查生成的 promise。可能有三种响应:

  • "unavailable":不支持所请求的选项,或者无法提示模型。
  • "downloadable":请求受支持,但在创建会话之前需要进行额外的下载。这些下载内容可能包括语言模型或微调。
  • "downloading":请求受支持,并且正在进行下载,必须先完成下载才能创建会话。
  • "available":请求受支持,您可以创建会话。

如需触发下载并实例化语言检测器,请调用异步 LanguageDetector.create() 函数。如果对 availability() 的响应为 'downloadable''downloading',最好监听下载进度,以便在下载需要时间时通知用户。

以下示例展示了如何初始化语言检测器。

const availability = await LanguageDetector.availability();

let detector;
if (availability === 'unavailable') {
  // The language detector isn't usable.
  return;
}
if (availability === 'available') {
  // The language detector can immediately be used.
  detector = await LanguageDetector.create();
} else {
  // The language detector can be used after model download.
  detector = await LanguageDetector.create({
    monitor(m) {
      m.addEventListener('downloadprogress', (e) => {
        console.log(`Downloaded ${e.loaded * 100}%`);
      });
    },
  });
  await detector.ready;
}

运行语言检测器

Language Detector API 使用排名模型来确定给定文本中最有可能使用的语言。排名是一种机器学习,其目标是对商品列表进行排序。在本例中,语言检测器 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
// ...

API 游乐场

在我们的 API 游乐场中试用 Language Detector API。在文本区中输入以不同语言撰写的文本。

标准化工作量

Chrome 团队向 W3C 技术架构组征求了反馈,并向 MozillaWebKit 询问了他们的标准立场。

分享您的反馈

我们很想看看您使用 Language Detector API 构建了哪些内容。欢迎在 XYouTubeLinkedIn 上与我们分享您的网站和 Web 应用。

如果您对 Chrome 的实现有任何反馈,请提交 Chromium bug