一个尴尬的场景

假设一位用户正在做一组八次的深蹲,手机架在侧前方。第五次动作,膝盖略有内扣,系统检测到了,立刻用语音说:“注意膝盖。”这时用户正在下蹲的底部,耳机里突然传来一句话,他愣了一下,第六次动作反而更乱。

另一个极端同样常见:系统一路沉默,训练结束后弹出一份报告,写着“本次训练中出现膝盖内扣12次”(示意数字)。用户看着报告,已经想不起哪一次、什么感觉,这份总结和他的身体记忆完全脱节。

这两种失败的原因相同:系统把“检测到问题”直接等同于“应当现在说”。真正的教练会在心里默默判断:这个问题现在值不值得打断,说了对方来不来得及改,是不是有更好的时刻。江南体育AI希望把这种判断做成一个显式的模块,我们把它叫作反馈时机决策。

输入:决策依据的四类信号

决定要不要开口,至少要参考四类信息。

动作阶段。 一个重复性动作可以划分为准备、发力、到位、回程、间歇。发力和到位阶段用户注意力高度集中,任何语音都是干扰;回程和组间是可以接收信息的窗口。判断阶段本身依赖动作识别,如果阶段判断不准,时机决策就会整体偏移。

错误严重程度。 偏差对身体负荷和动作结果的影响并不一样。可能带来受伤风险的偏差,比如负重时脊柱形态明显异常,优先级最高;影响效率但不涉及风险的偏差,比如节奏偏快,可以晚一点说。严重程度的划分需要由运动专业规则来定义,而不是让语言模型自行判断。

连续错误次数。 一次偏差可能只是关键点抖动或者用户偶尔发力不均,连续多次同样的偏差才更像稳定的习惯。设置“连续出现几次才触发”这样的门槛,可以过滤大量噪声,代价是反应会慢一点。具体的次数应该随动作类型和风险等级调整,不宜一刀切。

疲劳变化。 同一个问题,用户状态好的时候和已经疲劳的时候,含义不同。速度下降、幅度缩小、左右不对称加重,都可能是疲劳信号。近期的一些研究原型尝试用实时疲劳检测去触发虚拟形象(Avatar)的反馈,说明“状态”本身也可以成为反馈的触发条件。相关内容在疲劳后动作变形时该加难度还是降级一文中有更详细的策略讨论。

输出:三种通道,各有用途

判断出要说话之后,还要选择用什么方式说。江南体育AI倾向于把反馈分成三个层级:

通道 适合的情形特点
视觉提示 轻微偏差、发力阶段 不占用听觉,用户余光可见,信息量小
简短语音 中等偏差、回程或到位阶段 一个词到一句话,直接告诉“做什么”
训练后总结 风格问题、多次累积的趋势可以展开讲解,配合回放和数字人演示

视觉提示可以是数字人身体上的一个高亮部位,或者屏幕边缘的一个小标记,用来告诉用户“这里有东西”,但不要求立即处理。语音提示要极短,示意性的说法比如“髋先送”“放慢”,而不是一段解释。完整的解释留给组间或训练后,那时用户有余力理解原因,也可以看数字人的动作演示。

至于每次到底选哪一个具体的问题来说,是另一个独立的决策,我们在每次只优先纠正最重要的问题里单独讨论。时机决策解决的是“现在说不说”,优先级决策解决的是“说哪一件”。

一个示意的决策流程

下面用一套示意规则把上面的输入和输出串起来,数字均为举例,实际应按动作类型和用户水平调整。

  1. 发现候选偏差,先看严重程度。如果属于高风险偏差,无论处于哪个阶段,立即给出视觉提示,并在下一个可接收窗口用语音说明,必要时建议暂停。
  2. 如果是中低风险偏差,检查是否连续出现。假设连续三次同类偏差才计入“稳定问题”,未达到就只记录,不打扰用户。
  3. 达到门槛之后看动作阶段。处于发力阶段就只给视觉提示,到了回程或组间再说一句语音。
  4. 同时检查疲劳指标。如果速度和幅度同时出现下降,本次反馈改为“降低要求”而不是“继续纠正”,例如建议减少一次或放慢节奏。
  5. 训练结束后,把这一次记录下来但没有说过的问题,合并成一份有优先级的总结。

这套流程里有一个刻意的设计:沉默是一种正式的输出。系统不说话时,并不是没有检测到问题,而是判断此刻不该说。这些被压下来的问题会带着时间戳被记录,用于训练后总结,而不是直接丢弃。

撤回、过期与“说晚了”的处理

时机决策还有一个容易被忽略的细节:反馈是有保质期的。系统在第五次动作里检测到偏差,经过判断、语言生成和语音合成,等这句话真正播出来,用户可能已经做完第六次。如果这时仍然念出“注意膝盖”,用户不知道说的是哪一次,甚至会以为刚刚那次又出了问题。

因此每条待播的反馈都应该带上它所针对的动作编号和有效期限。示意性的规则可以是这样:

  • 如果播出时用户已经进入下一次动作的发力阶段,这条反馈直接作废,转入训练后总结,而不是硬播。
  • 如果播出前用户已经自行纠正,连续两次动作都恢复正常,这条反馈也应当取消,避免出现“你已经做对了,系统却还在批评”的错位。
  • 如果错过窗口但问题仍在持续,可以在下一个组间窗口用一句话重新提出,并说明是针对刚才那一组。

这个思路与实时体育播报里对“过期内容”的处理非常相近:内容生成得再准确,一旦错过了它对应的那个时刻,就应当被丢弃或改写,而不是照原样播出。

用户自己的节奏

同一套时机规则,对不同用户的适用程度并不相同,至少有三种差异需要考虑:

  1. 水平差异。 新手对即时提示的需求更强,也更容易被打断;有经验的用户更倾向于自己感受,只在明显偏差时才需要提示。
  2. 动作类型差异。 慢速的力量动作,用户有一点时间处理提示;快速的跑跳动作,一句话都可能来不及听完,此时视觉标记与训练后回放更合适。
  3. 场景差异。 在家里独自训练与在有噪声的健身房训练,耳机是否佩戴,可接受的提示形式完全不同。

所以系统应该允许用户选择提示的密度,例如“只在有风险时提醒”“每组结束后总结”“全程简短提示”,并且记住他们的选择。同时,系统也可以观察用户对提示的反应:如果连续几次提示之后用户的动作没有改善,反而变得更不稳定,就说明当前的频率或形式可能不适合,应当降低提示密度,而不是坚持原策略。

数字人在时机问题上的作用

虚拟形象在这里有它独特的价值,不只是“会说话的头像”。它可以用姿态、表情和位置传递信息,而不占用语音通道:

  • 在用户视野边缘做出一个示意性的手势,提示“放慢”。
  • 在休息阶段走到画面中央,展开一段短暂的对比演示。
  • 在用户状态明显下降时,用更温和的语气和动作切换到降级建议。

这些非语言线索可以承担大量“轻提示”的工作,把语音留给真正需要的场合。这也是我们认为数字人教练不能只被理解成头像的原因,相关的整体思路可以参考数字人教练如何把动作数据变成可执行反馈

边界与还没有解决的问题

时机决策建立在可靠的识别上,这决定了它的几个边界。

第一,判断不确定时要偏保守。如果画面被遮挡、关键点置信度低,系统应该晚说或者不说,而不是猜一个时机;错误地打断,比晚一点说更伤体验。

第二,用户偏好不同。有人喜欢全程被提醒,有人只想在组末看总结,系统应当允许调整提示频率,并把这个偏好当作决策的一部分,而不是强加一种固定节奏。

第三,疲劳和身体不适要分开对待。疲劳判断是运动表现参考,不是医疗诊断。如果用户出现疼痛、头晕、胸闷等不适,应停止训练,必要时咨询专业医生,这不属于反馈时机的调节范围。

第四,还没有解决的一个问题是:如何评估“时机是否合适”。用户是否改正动作只是一个间接指标,用户是否觉得被打扰也同样重要。这需要在实际使用中收集反馈并谨慎迭代,而不是提前宣布某种策略是最优的。

好教练不仅知道说什么,还知道什么时候说,以及什么时候不说。把这三件事放进同一个决策里,虚拟教练才可能从“检测器加播放器”变成一个能被用户接受的训练伙伴。