系列:鸿蒙开发从入门到专家 · 第 81 篇
手机里的 App 越来越多,用户真正用到的功能却越来越集中在某几个入口。HarmonyOS NEXT 的思路很直接:让系统本身变得更聪明,把服务主动送到用户手边。意图框架(Intents Kit)、基础语音(Core Speech Kit)、基础视觉(Core Vision Kit)就是这套能力的核心支撑。本篇把这三个 Kit 串起来,讲清楚它们各自解决什么问题、怎么接入、以及落地时的常见坑。
一、为什么需要 OS 级 AI 能力
传统做法是每款 App 自己集成语音识别、OCR、推荐算法,重复造轮子不说,还带来几个问题:
权限请求碎片化,用户体验割裂;
端侧模型重复下载,占用存储和内存;
各应用数据孤岛,系统无法形成统一的用户意图理解。
HarmonyOS NEXT 把通用 AI 能力下沉到系统层,应用只需要声明自己的服务能力,由系统统一调度分发。这样用户说一句"打开付款码"、搜一下"上周的快递"、拍一张发票,系统都能把请求路由到最合适的应用或元服务。
二、Intents Kit:让业务能力被系统发现
Intents Kit 不是简单的 Deep Link,它要求应用把"我能做什么"注册成结构化的意图。系统基于这些意图做本地索引、习惯学习、事件推荐和语义匹配。
2.1 四种分发能力
习惯推荐:系统学习用户在什么时间、什么地点常用什么功能,在小艺建议中主动露出。
事件推荐:结合订单、日程、位置等信息,在合适时机推送提醒。
技能调用:用户通过小艺对话用自然语言触发应用内功能。
本地搜索:注册过的意图内容可被小艺搜索索引,直接命中应用内结果。
2.2 端侧注册
在 entry/src/main/resources/base/profile/insight_intent.json 中声明意图:
{
"insightIntents": [
{
"intentName": "ViewRepayment",
"domain": "BankingDomain",
"intentVersion": "1.0.1",
"srcEntry": "./ets/insightintents/IntentExecutorImpl.ets",
"uiAbility": {
"ability": "MainUIAbility",
"executeMode": ["foreground"]
}
}
]
}
实现执行器:
import { InsightIntentExecutor, insightIntent } from '@kit.IntentsKit';
import { window } from '@kit.ArkUI';
export default class IntentExecutor extends InsightIntentExecutor {
async onExecuteInUIAbilityForegroundMode(
intentName: string,
intentParam: Record<string, Object>,
pageLoader: window.WindowStage
): Promise<insightIntent.ExecuteResult> {
if (intentName === 'ViewRepayment') {
// 解析参数并跳转对应页面
return {
code: 0,
result: { message: 'Intent execute succeed' }
};
}
return {
code: -1,
result: { error: 'invalid intent name', intentName }
};
}
}
2.3 注意事项
意图名称和参数结构需要与华为侧沟通确认,不能随意命名。
灰度或测试上架阶段无法在小艺开放平台正式注册,需用测试工具验证流程。
执行器内部不要持有长生命周期对象,避免元服务退出后内存泄漏。
三、Core Speech Kit:语音不必自己训练模型
Core Speech Kit 提供文本转语音(TTS)和语音识别(ASR)两大能力。对于大部分应用来说,直接调用系统能力比集成第三方 SDK 更省包体积。
3.1 文本转语音
import { textToSpeech } from '@kit.CoreSpeechKit';
import { BusinessError } from '@kit.BasicServicesKit';
let ttsEngine: textToSpeech.TextToSpeechEngine;
async function initTTS() {
const engines = await textToSpeech.getEngines();
const engine = engines.find(e => e.name === 'zh-CN') || engines[0];
ttsEngine = await textToSpeech.createEngine({
language: 'zh-CN',
person: 0,
speed: 1.0,
volume: 1.0,
pitch: 1.0
});
}
function speak(content: string) {
ttsEngine.speak(content, (err: BusinessError, num: number) => {
if (err) {
console.error(`TTS failed: ${err.message}`);
return;
}
console.info(`utterance id: ${num}`);
});
}
3.2 语音识别
import { speechRecognizer } from '@kit.CoreSpeechKit';
let asrEngine: speechRecognizer.SpeechRecognitionEngine;
async function startASR() {
asrEngine = await speechRecognizer.createEngine({
language: 'zh-CN',
online: 1
});
asrEngine.setListener({
onResult: (result: speechRecognizer.SpeechRecognitionResult) => {
console.info(`asr result: ${result.result}`);
},
onError: (err: BusinessError) => {
console.error(`asr error: ${err.message}`);
}
});
asrEngine.startListening({
sessionId: 'session_001',
audioInfo: { source: 1 }
});
}
3.3 实战建议
语音交互适合"双手被占用"的场景,比如驾驶、厨房、运动,不要为了炫技而加语音。
识别结果要给出置信度阈值,低于阈值时提示用户重说,而不是直接执行。
TTS 播放前检查是否正在播放音频,避免打断用户正在听的内容。
四、Core Vision Kit:视觉能力的系统级复用
Core Vision Kit 把 OCR、人脸检测、人脸比对、主体分割等能力标准化。以 OCR 为例,应用不再需要集成动辄几十兆的第三方模型。
import { textRecognition } from '@kit.CoreVisionKit';
import { BusinessError } from '@kit.BasicServicesKit';
async function recognizeText(image: image.PixelMap) {
try {
const result = await textRecognition.recognizeText({
pixelMap: image,
rotation: 0
});
result.blocks.forEach(block => {
console.info(`text: ${block.text}, rect: ${JSON.stringify(block.rect)}`);
});
} catch (err) {
console.error(`OCR failed: ${(err as BusinessError).message}`);
}
}
对于发票、身份证、银行卡等垂类场景,建议在 OCR 通用结果基础上做后处理校验:正则匹配身份证号、银行卡号规则,再结合人工确认,降低误识别风险。
五、三种能力的组合用法
一个完整的智能出行场景可以这样串起来:
用户对着手机说"查一下下周去北京的高铁"——Core Speech Kit 识别语音;
系统将语义解析成
QueryTrainTicket意图——Intents Kit 路由到购票应用;应用返回车次列表,用户选择后系统弹出桌面卡片提醒——事件推荐;
用户到站后打开报销应用,拍照识别火车票信息——Core Vision Kit OCR。
这套链路的核心价值不是单点技术,而是"系统理解意图、应用提供服务"的分工。
六、小结
HarmonyOS NEXT 的 AI 能力不是让应用变得更重,而是让系统承担通用理解层,应用专注业务逻辑。接入时要把握住三点:
意图设计要贴近真实业务功能,不要注册过于宽泛的入口。
语音和视觉能力优先用系统 Kit,减少包体积和权限请求。
执行器内部保持轻量,避免阻塞 UI 线程或持有长生命周期资源。
下一篇我们将进入智能穿戴开发,看看手表、手环这类小屏设备上如何做好服务延伸。
参考阅读
华为开发者联盟:Intents Kit 开发指南
华为开发者联盟:Core Speech Kit 开发指南
华为开发者联盟:Core Vision Kit 开发指南