【听见课堂 HarmonyOS NEXT 实战系列 07】“能运行”不等于“能力完成”:AI 功能真实性五级法

HarmonyOS NEXT 项目接入语音、OCR、人体骨骼或端侧模型后,最容易出现的表述问题是:一次构建成功,就写成“AI 已完成”;打开了系统相机,就写成“OCR 已验证”;合成序列跑出标签,就写成“模型准确率达标”。

这些说法混淆了完全不同的证据层级。听见课堂把能力状态拆成 规划、模拟、契约接口、已集成、运行证明 五级,并且允许同一能力的不同子环节处在不同等级。本文用实时字幕、OCR、人体骨骼、手部关键点和手语分类做一张可审计的真实性地图。

HarmonyOS AI 能力真实性五级阶梯

一、先定义五个层级

等级 含义 可以接受的证据 不能据此宣称
L1 规划 Planned 需求或设计里准备做 PRD、设计稿、任务清单 已开发、已接入
L2 模拟 Simulated 固定数据或合成输入可演示流程 明确模拟标识、确定性夹具、隔离证明 真实识别、真实准确率
L3 契约接口 Contract-only Provider/Adapter 类型与失败路径存在 接口、单测、unavailable/unknown 降级 Kit 或模型已接通
L4 已集成 Integrated 真实 Kit/模型调用已接线 import、资源/配置、调用链、构建产物 真实设备已有有效结果
L5 运行证明 Runtime-proven 目标设备用真实输入得到预期结果 输入条件、截图/UI 树、当前 PID 日志、结果回读 所有设备、所有场景都通过

听见课堂五类多模态能力真实性矩阵

五级不是营销成熟度,而是证据成熟度。L5 也不是“永远完成”:一次真实字幕只能证明当时的设备、语言、权限和网络条件下产生过结果,不能自动推出长课堂性能、拒识率或所有机型兼容。

二、构建成功为什么只能证明“可构建”

当 ArkTS 类型检查和 assembleHap 通过时,我们至少知道:

  • import 与公开类型在当前 SDK 下可解析;
  • 调用代码能进入编译和打包;
  • 必需模块能够组成当前产物。

但构建不会自动替你验证:

  • 目标设备是否提供该能力;
  • 权限是否被授予;
  • 相机 profile 与预览 surface 是否匹配;
  • 模型资产是否能加载;
  • 真实输入是否产生非空结果;
  • 资源是否在前后台、取消和异常后正确释放。

因此,BUILD SUCCESSFUL 可以支持 L4 的一部分证据,却不能独自把能力提升到 L5。

三、实时字幕:会话跑通与识别出文字要分开

听见课堂的实时字幕已经接入 Core Speech KitAudioCapturer、运行时麦克风权限、暂停/继续和结束保存流程。模拟器上也验证了授权、引擎与采集启动、暂停、继续和结束。

但项目记录同时写明:模拟器没有产生新的语音识别文本。因此更准确的拆分是:

子能力 当前等级 证据边界
权限、引擎和采集会话 L4,部分流程有运行证据 真实 API 已接线,设备上会话状态发生变化
新字幕文本输出 L4 真实识别调用已集成,但目标输入没有得到新文字
新字幕写入数据库并重启回读 待 L5 必须用真实说话输入产生新段落后再验证

“识别会话已启动”和“识别出了正确文字”不是同一句话。安全表述应写成:已完成实时听写适配层与会话生命周期接入;真实语音文本结果仍待具备有效输入的目标设备验证。

四、OCR:打开图库不等于 OCR 成功

扫描链路包含多个独立环节:

CameraPicker / PhotoViewPicker
  -> 返回非空 URI
  -> Image Kit 解码 PixelMap
  -> Core Vision OCR
  -> 用户校对
  -> 保存复核文字与来源

项目已通过系统图库拉起与取消、本地示例到复核保存的流程;ScanCaptureService 也已真实调用 Image Kit 和 Core Vision OCR。不过当时的模拟器没有可选真实图片,系统相机也不可用,所以真实图片的 OCR 文本结果仍是 not run

因此,当前可以写“CameraPicker、PhotoViewPicker、Image Kit 与 Core Vision OCR 已集成并可构建”,不能写“真实板书识别已通过”。真实 OCR 的 L5 至少需要保存以下证据:测试图片、返回 URI、识别结果、人工修正、保存后回读,以及图片资源释放和数据库不落临时 URI 的检查。

五、人体骨骼:L5 也要写清输入和覆盖范围

听见课堂的手语 S02 链路使用真实 Camera Kit 预览、六帧 JPEG 内存采样与 Core Vision 17 点人体骨骼检测。BLK-AL80 上先验证了无人物时 6/6 帧完成推理并返回 no_person;随后又补了人物入镜正向路径:

  • 6/6 帧 persons=1
  • 每帧 validPoints=13
  • 双肩、双肘、双腕 upperBody=6
  • 序列 poseReady=6upperBodyAvg=100%quality=ready

这可以支持“人体骨骼采样与肩肘腕质量门禁在指定真机、指定构图下有运行证明”。但它仍不能推出:

  • 手指关键点已经存在;
  • 手语词义已经被识别;
  • 不同衣着、距离、光照都稳定;
  • 六帧测试等于长时间性能通过。

L5 的正确写法始终带输入条件、设备和结果范围,而不是只写一句“骨骼识别已完成”。

六、手部关键点:安全的 unavailable 比伪造结果更有价值

项目已经定义每手 21 点的 SignHandLandmarkProvider 契约,并区分三种模式:

export enum SignHandProviderMode {
  UNAVAILABLE = 'unavailable',
  REAL_MODEL = 'real_model',
  SYNTHETIC_TEST = 'synthetic_test'
}

当前默认实现是 UnavailableSignHandLandmarkProvider。没有真实手部模型时,它返回 unavailable,不会从人体腕点推导或伪造 21 个手指点。真机六帧结果也保持 hands=0

这项能力处于 L3:接口、模式、资源释放和失败语义已经建立,但真实模型尚未接入。L3 不是失败,而是一条重要的安全边界。对于 AI 项目,能稳定返回“不具备能力”,通常比为了演示制造一个看似合理的结果更可信。

七、合成 24 帧只证明稳定器,不证明模型准确率

为了验证时序逻辑,项目提供了纯内存 24 帧双手夹具:每帧 2 手、每手 21 点,并覆盖连续 3 个一致窗口、1000ms 重复抑制、unknown 重置和标签切换重置。

这些测试能够证明:

  • 窗口状态机按预期工作;
  • 重复结果不会在短时间内反复发布;
  • 低置信度或 unknown 会清空连续窗口;
  • 合成输入没有进入 ArkUI 候选和正式历史。

它们不能证明:

  • 摄像头能检测出真实手指点;
  • 时序模型能分辨真实动作;
  • 五类动作在真实用户中具有某个准确率;
  • 真实推理满足时延、内存、功耗和温升要求。

合成夹具属于 L2;真实手部 Provider 和分类器当前分别保持 unavailableunknown。即使合成测试 100% 通过,也不能把这个百分比写成“模型准确率 100%”。

八、规则分不是模型置信度

项目还基于真实肩、肘、腕快照实现了本机肢体规则解析,支持举手、双手举起、指向左/右、双手暂停姿态代理、自然站立与 unknown。规则采用肩宽归一化、至少 60% 六帧一致和最低 65 分门禁。

这里的“65 分”表示规则匹配程度,不是机器学习概率,更不是经过数据集统计的准确率。尤其是“双手暂停”只能证明腕部和肘部满足某种姿态代理,不能证明掌心方向或真实手语语义。

一项可信的对外说明应把三种数值分开:

数值 含义 所需证据
规则分 几何规则匹配程度 规则定义、阈值、边界样本
模型置信度 模型对单次输出的内部评分 真实模型、输入输出、校准说明
准确率/召回率 数据集上的统计指标 数据集划分、标注质量、评测脚本和混淆矩阵

没有评测集与统计过程时,不应出现“准确率 95%”一类数字。

九、当前能力真实性矩阵

下面是按项目现有证据得到的保守结论:

能力 当前可确认等级 已有证据 仍缺证据
实时字幕 L4 已集成 权限、Speech/Audio 调用、会话生命周期、构建与设备状态 真实语音产生新文本、入库与重启回读
Core Vision OCR L4 已集成 Picker、Image Kit、OCR 调用、构建、取消和降级 真实图片成功文本、空结果与资源压力
人体骨骼 L5 有限运行证明 BLK-AL80 六帧无人物和人物正向骨骼结果 多姿态、多光照、长时与跨设备覆盖
21 点手部关键点 L3 契约接口 Provider、模式、unavailable 和释放路径 真实模型、真实双手关键点
五类手语分类 L2/L3 模拟候选、分类器契约、unknown 拒识、合成稳定器 真实时序模型、数据集、真实分类和评测
本地肢体规则 L4,有限运行降级 真实骨骼接线、规则契约、真机无人物 unknown 真人六类逐项识别与阈值校准

同一行也可能继续拆分。例如人体骨骼的“无人物降级”和“人物正向点位”已有运行证明,但基于骨骼的六类规则动作还没有逐类真人验收。

十、README、比赛材料和博客怎样安全表述

README 模板

Core Vision 人体骨骼已在 BLK-AL80 上完成六帧真实推理,
覆盖无人物降级与人物上半身点位质量门禁。
21 点手部关键点与真实手语时序模型尚未接入,
当前运行结果保持 unavailable/unknown。

比赛材料模板

当前演示包含真实相机与人体骨骼能力,以及明确标注的本地模拟候选。
模拟候选仅用于展示“识别—确认—记录”的交互闭环,
不作为真实手语模型准确率证明。

技术博客模板

24 帧合成夹具验证了结果稳定器、重复抑制和 unknown 重置;
它没有连接用户候选,也不能替代真实模型、真实数据集和真机评测。

还可以统一采用“已实现什么 + 在哪里验证 + 未验证什么”的三段式:

已实现:真实 Kit 调用与安全降级。
已验证:指定设备、指定输入下的运行结果。
未验证:跨设备、长时、准确率或发布级指标。

十一、把真实性分级纳入交付流程

每次交付可以维护一张能力真值表,字段至少包含:

  • 能力名称与子环节;
  • 当前等级;
  • 当前 Provider 模式;
  • 使用的真实或合成输入;
  • 实际结果与错误码;
  • 截图、UI 树、日志和报告路径;
  • 未验证项与下一步最小动作。

升级等级时只看新增证据:

规划文档
  -> 明确模拟并隔离
  -> 建立 Provider/Adapter 契约
  -> 接入真实 Kit/模型并构建
  -> 目标设备使用真实输入产生结果

任何一步失败都应停在对应层级。尤其不能从“契约测试 passed”越级到“真实模型已完成”,也不能从“相机预览可见”越级到“OCR/手语识别已通过”。

总结

AI 功能的可信度不取决于页面有多完整,而取决于每个结论能否回到对应证据。听见课堂用五级法把规划、模拟、契约、集成和运行证明分开,也把真实字幕、OCR、骨骼、手部关键点、分类模型和本地规则分别标记。

这套方法的核心不是保守措辞,而是让团队知道下一步缺的究竟是代码、模型、设备、输入、评测还是长期稳定性。下一篇将进入人机协同闭环,讨论为什么 AI 生成的课堂任务必须先成为候选,经过编辑、拒绝和确认后才能进入正式任务中心。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐