Administrator
发布于 2026-09-03 / 7,985 阅读
0
0

鸿蒙百篇系列(81/100):AI 能力进阶——从意图框架到端侧智能

系列:鸿蒙开发从入门到专家 · 第 81 篇

手机里的 App 越来越多,用户真正用到的功能却越来越集中在某几个入口。HarmonyOS NEXT 的思路很直接:让系统本身变得更聪明,把服务主动送到用户手边。意图框架(Intents Kit)、基础语音(Core Speech Kit)、基础视觉(Core Vision Kit)就是这套能力的核心支撑。本篇把这三个 Kit 串起来,讲清楚它们各自解决什么问题、怎么接入、以及落地时的常见坑。

一、为什么需要 OS 级 AI 能力

传统做法是每款 App 自己集成语音识别、OCR、推荐算法,重复造轮子不说,还带来几个问题:

  • 权限请求碎片化,用户体验割裂;

  • 端侧模型重复下载,占用存储和内存;

  • 各应用数据孤岛,系统无法形成统一的用户意图理解。

HarmonyOS NEXT 把通用 AI 能力下沉到系统层,应用只需要声明自己的服务能力,由系统统一调度分发。这样用户说一句"打开付款码"、搜一下"上周的快递"、拍一张发票,系统都能把请求路由到最合适的应用或元服务。

能力层

代表 Kit

典型场景

意图理解与分发

Intents Kit

小艺对话、小艺搜索、小艺建议

语音交互

Core Speech Kit

语音输入、文本朗读、语音助手

视觉理解

Core Vision Kit

OCR、人脸检测、主体分割

二、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 通用结果基础上做后处理校验:正则匹配身份证号、银行卡号规则,再结合人工确认,降低误识别风险。

五、三种能力的组合用法

一个完整的智能出行场景可以这样串起来:

  1. 用户对着手机说"查一下下周去北京的高铁"——Core Speech Kit 识别语音;

  2. 系统将语义解析成 QueryTrainTicket 意图——Intents Kit 路由到购票应用;

  3. 应用返回车次列表,用户选择后系统弹出桌面卡片提醒——事件推荐;

  4. 用户到站后打开报销应用,拍照识别火车票信息——Core Vision Kit OCR。

这套链路的核心价值不是单点技术,而是"系统理解意图、应用提供服务"的分工。

六、小结

HarmonyOS NEXT 的 AI 能力不是让应用变得更重,而是让系统承担通用理解层,应用专注业务逻辑。接入时要把握住三点:

  • 意图设计要贴近真实业务功能,不要注册过于宽泛的入口。

  • 语音和视觉能力优先用系统 Kit,减少包体积和权限请求。

  • 执行器内部保持轻量,避免阻塞 UI 线程或持有长生命周期资源。

下一篇我们将进入智能穿戴开发,看看手表、手环这类小屏设备上如何做好服务延伸。

参考阅读

  • 华为开发者联盟:Intents Kit 开发指南

  • 华为开发者联盟:Core Speech Kit 开发指南

  • 华为开发者联盟:Core Vision Kit 开发指南


评论