MLKitLanguageId 拓展
判断一段文本是哪种语言,支持 100 多种。
为什么选它:
- 完全离线。模型随
.aix打包,设备不需要 Google Play 服务,断网也能用。 - 只有 4.0 MB —— 这是我们整个 ML Kit 拓展家族里最小的一个。
- 不用先”初始化”。识别器按需创建、复用,组件销毁时自动关闭。
- 直接给中文名。返回
zh的同时给出「中文」,内置 100+ 语言的对照表,不用自己查 BCP-47 表。 - 「认不出」不当错误。文本太短或语言混杂时 ML Kit 返回
und,本拓展触发专门的「未识别出语言」事件,让你能区分「认不出」和「真出错」。
常用场景:自动选择翻译目标语言、按语言分流客服消息、判断用户输入的是中文还是英文。
- .aix 拓展下载:
cn.fun123.MLKit.LanguageId.aix
快速上手
一、判断输入框里是什么语言
when 按钮_检测.Click() {
LangId1.IdentifyLanguage(文本输入框_输入.Text)
}
when LangId1.GotLanguage(languageTag, name) {
标签1.Text = join("这是", name, "(", languageTag, ")")
}
when LangId1.NoLanguageFound(text) {
标签1.Text = "认不出来,请多输入一些文字"
}
when LangId1.IdentifyFailed(operation, errorMessage) {
标签1.Text = errorMessage
}
二、拿多个候选(这段话可能是 A 也可能是 B)
when 按钮_多结果.Click() {
LangId1.IdentifyPossibleLanguages(文本输入框_输入.Text)
}
when LangId1.GotPossibleLanguages(count, resultJson) {
标签1.Text = join("共 ", count, " 个候选")
标签_原始结果.Text = resultJson
}
resultJson 的形状(用「JSON 文本解码」块解析):
[{"languageTag":"zh","name":"中文","confidence":0.99},
{"languageTag":"ja","name":"日语","confidence":0.01}]
三、文本很短时调低阈值
when Screen1.Initialize() {
LangId1.ConfidenceThreshold = 0.2
}
属性
- ConfidenceThreshold
- 置信度阈值,0~1,默认 0.5。低于这个值就当作「识别不出来」。 文本很短时可以调低(如 0.2)提高命中率,但准确率会下降。 改这个属性会重建识别器,立即生效。
- Busy
- 只读。是否正在识别。识别期间再次调用会触发
IdentifyFailed。
事件
- GotLanguage(languageTag,name)
- 识别出语言。
languageTag是 BCP-47 标签(如zh、en、ja),name是中文名称。 对照表里没有的标签,name会原样给出标签本身(保证界面不出现空白)。 - GotPossibleLanguages(count,resultJson)
- 获得多个候选语言,按置信度从高到低。
resultJson见上面示例二。 - NoLanguageFound(text)
- 没能识别出语言(文本太短、多语言混杂、或都低于阈值)。这不是错误 ——
可以提示用户多输入文字,或调低
置信度阈值。 - IdentifyFailed(operation,errorMessage)
- 识别失败。
operation是出错的方法名。
方法
- IdentifyLanguage(text)
- 识别文本是哪种语言,只返回最可能的一种 →
GotLanguage或NoLanguageFound。 - IdentifyPossibleLanguages(text)
- 识别文本可能是哪些语言,返回多个候选 →
GotPossibleLanguages。 - LanguageName(languageTag)
- 把语言标签转成中文名。认不出的原样返回。可以单独用来给别处拿到的标签配中文名。
运行环境:AI 伴侣联机需要 Android 11 及以上
本拓展的识别模型放在依赖库自带的 assets 里,AI 伴侣联机调试要把它挂进
AssetManager,用的是 Android 11(API 30)才有的 ResourcesLoader —— 这是系统提供的
唯一公开办法,更低版本没有等价 API。所以:
| 运行方式 | Android 6 ~ 10 | Android 11 及以上 |
|---|---|---|
| 打包 APK | ✅ 正常 | ✅ 正常 |
| AI 伴侣联机 | ❌ 模型加载不了 | ✅ 正常 |
打包 APK 之所以不受限制,是因为模型在编译时就被并进了 APK 的 assets,装到手机上 就是 App 自己的资源,与系统版本无关。伴侣的 APK 是提前编好装在手机上的,运行时没法 往自己已安装的包里加文件,只能靠系统的运行时挂载 API。
低版本设备上想验证功能,直接打包 APK 测即可;要用伴侣边改边调,请换 Android 11+ 的设备。
常见问题
明明是中文,却触发「未识别出语言」。
输入太短了。单个字、纯数字、纯标点都很难判定。让用户至少输入一句话,或把 置信度阈值 调到 0.2 左右。
返回的标签是 zh-Hant 而不是 zh。
ML Kit 会给带字体/地区的细分标签。LanguageName 对这两种都能给出中文名(会退回主语言查表)。
你自己判断时建议只比较前两位。
能识别一段话里混了几种语言吗?
用 IdentifyPossibleLanguages,它会把可能的语言都列出来。但它给的是「整段文本可能是什么语言」的
多个猜测,不是逐句切分 —— 要逐句判断请自己按标点切开后分别识别。
扫码添加客服咨询