发布时间:2024 年 9 月 24 日,上次更新时间:2025 年 5 月 20 日
在将文本从一种语言翻译成另一种语言之前,您必须先确定给定文本中使用的语言。以前,翻译需要将文本上传到云服务,在服务器上执行翻译,然后下载结果。
Language Detector API 在客户端运行,这意味着您可以保护用户隐私。虽然可以发布执行此操作的特定库,但需要下载额外的资源。
何时使用语言检测
Language Detector API 主要适用于以下情况:
- 确定输入文本的语言,以便进行翻译。
- 确定输入文本的语言,以便为特定于语言的任务(例如有害内容检测)加载正确的模型。
- 确定输入文本的语言,以便正确标记文本,例如在在线社交网站中。
- 确定输入文本的语言,以便相应地调整应用的界面。例如,在比利时网站上,仅显示与讲法语的用户相关的界面。
开始使用
查看硬件要求
开发者和在 Chrome 中使用这些 API 运行功能的用户需要满足以下要求。其他浏览器可能有不同的运行要求。
Language Detector API 和 Translator API 在桌面版 Chrome 中运行。这些 API 不适用于移动设备。
Prompt API、Summarizer API、Writer API、Rewriter API 和 Proofreader API 在 Chrome 中运行,但需满足以下条件:
- 操作系统:Windows 10 或 11;macOS 13+(Ventura 及更高版本); Linux;或 Chromebook Plus 设备上的 ChromeOS(平台 16389.0.0 及更高版本)。 Chromebook Plus 设备。 使用 Gemini Nano 的 API 尚不支持 Android 版 Chrome、iOS 版 Chrome 和非 Chromebook Plus 设备上的 ChromeOS 。
- 存储空间:包含 Chrome 个人资料的卷上至少有 22 GB 的可用空间。
- GPU 或 CPU:内置模型可以使用 GPU 或 CPU 运行。
- GPU:VRAM 严格超过 4 GB。
- CPU:RAM 16 GB 或更多,CPU 核心数 4 个或更多。
- 注意:使用音频输入的 Prompt API 需要 GPU。
- 网络:无限数据或不按流量计费的连接。 默认情况下,Wi-Fi 和以太网连接往往不按流量计费 ,而移动网络连接通常按流量计费 。
随着浏览器更新模型,Gemini Nano 的确切大小可能会有所不同。如需确定当前大小,请访问 chrome://on-device-internals。
运行功能检测,查看浏览器是否支持 Language Detector API。
if ('LanguageDetector' in self) {
// The Language Detector API is available.
}
模型下载
语言检测依赖于针对检测语言的特定任务进行微调的模型。虽然 API 内置于浏览器中,但模型会在网站首次尝试使用该 API 时按需下载。在 Chrome 中,与其他模型相比,此模型非常小。它可能已经存在,因为其他 Chrome 功能也使用此模型。
如需确定模型是否已准备就绪,请调用异步
LanguageDetector.availability()
函数。如果对 availability() 的响应为 downloadable,请监听下载进度并通知用户,因为下载可能需要一些时间。
如需触发下载并实例化语言检测器,请检查
用户激活。然后,调用异步 LanguageDetector.create() 函数。
const detector = await LanguageDetector.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
运行语言检测器
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
// ...
API 游乐场
在我们的 API 游乐场中试用 Language Detector API。在文本区中输入以不同语言编写的文本。
权限政策、iframe 和 Web Worker
默认情况下,Language Detector API 仅适用于顶级窗口及其同源 iframe。可以使用权限政策 allow="" 属性将对 API 的访问权限委托给跨源 iframe
:
<!--
The hosting site at https://main.example.com can grant a cross-origin iframe
at https://cross-origin.example.com/ access to the Language Detector API by
setting the `allow="language-detector"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="language-detector"></iframe>
Language Detector API 不适用于 Web Worker。这是因为,为了检查权限政策状态,需要为每个 Worker 建立负责任的文档,而这非常复杂。
分享您的反馈
我们希望了解您使用 Language Detector API 构建的内容。请在 X、YouTube 和 LinkedIn 上与我们分享您的 网站和 Web 应用。
如果您对 Chrome 的实现有反馈,请提交 Chromium bug。
加入抢先体验计划 抢先了解新的内置 AI API,并访问我们的 邮件列表中的讨论。