ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

情感计算与微表情识别:智能陪伴机器人如何读懂老人情绪

情感计算与微表情识别:智能陪伴机器人如何读懂老人情绪 简介一篇聚焦智慧养老领域智能陪伴机器人设计的学术研究Word文档面向物联网、人工智能与人机交互方向的研究者及养老产业从业者。文档以人口老龄化加速为背景聚焦如何通过科技满足老年人精神需求、缓解孤独感系统梳理了陪伴型机器人的技术架构与应用方案。内容涵盖PAD情感空间建模、微表情分析、语音交互、情感计算等关键技术并详细拆解了机械结构系统与机器人控制系统的组成包括传动/执行/驱动系统以及传感器、语音识别、面部表情处理、神经网络与安全加密等模块。全文结构完整包含摘要、关键词、引言、背景概述、总体设计、系统分述等章节末尾还涉及适老化页面设计是从设计思路到技术实现的完整研究文本。资源为单个docx格式文件大小仅152KB阅读轻量便捷目前已有62人次学习查看适合作为养老机器人产品预研、毕业设计选题或入门了解智能陪伴技术的参考材料。1. 智能陪伴机器人为什么说“会读表情”比“会聊天”更关键人口老龄化速度比大多数人预想得快得多CRIC预计2022年养老产业规模突破9万亿元到2025年达到12万亿元。这个万亿赛道里智能机器人是被讨论最多的解法之一但真正能在养老场景落地的陪伴机器人并不多——原因很简单让机器人和老人聊天不难难的是让机器人真看出来老人此刻是开心、焦虑还是需要被关心。我拆完这份陪伴老年人的智能机器人设计研究报告印象最深的是它没有把重心押在“话多”上而是把微表情识别、PAD情感空间、博弈情感模型这一整套情感计算链路放在了核心位置。这份资源能解决什么它给出了一套从机械结构到情感计算、再到上线评估的完整设计框架覆盖语音交互、面部表情识别、主动对话、吃药提醒、天气播报、寻医问诊等功能。适合谁做养老智能硬件和适老产品研发的工程师、产品经理研究人机交互与情感计算方向的学生以及正评估要不要在机构里引入陪伴机器人的养老从业者。下面我按系统结构、情感计算、评估和避坑的顺序把这份设计研究拆开来讲。2. 机器人本体拆解机械结构、控制系统与语音识别链路2.1 机械结构系统传动、执行、驱动三层如何协作陪伴机器人首先得是个可靠的物理实体不能晃、不能响、更不能倒。报告里把机械结构系统明确拆成三个子系统驱动系统、传动系统和执行系统。它的设计顺序是反着来的先确定执行端要完成哪些动作——头部俯仰、底座转向、手臂抬放、轮子前进——再回头选驱动方式最后才配传动比。这个顺序和不少团队“先有电机再想动作”的习惯正好相反但实际做下来效率更高因为执行端的需求直接决定驱动端选型而不是被电机参数绑架。子系统首选方案参数关注点常见坑驱动系统舵机头部/眼部 直流减速电机底座输出扭矩、响应时间、噪声扭矩不够导致动作卡顿传动系统齿轮组或同步带减速比、回程间隙减速比过大动作拖沓执行系统连杆机构 / 轮式底盘行程范围、负载能力运动轨迹与线束干涉驱动系统的选型要重点盯两个指标输出扭矩和空载转速。扭矩决定动作能不能带动负载转速决定响应快不快。老年人场景对速度要求不高但对平滑度要求很高动作一卡一顿“机械感”一浓老人很容易产生不信任感。常见做法是电机后端加编码器做闭环控制配合PID调速预算有限时至少也要在关键关节上装限位开关防止执行系统走到机械极限位置还继续输出。传动系统的减速比是影响手感最明显的参数。减速比偏大动作偏柔但响应慢减速比偏小动作利索但容易带抖动。对于头颈这类高频交互部位我一般会把减速比控制在能让动作在0.5秒内平滑完成的范围内同时留出5%10%的余量。回程间隙也要注意间隙过大会导致动作重复定位不准老人连续两次看到机器人转头位置不一致体验就会打折扣。执行系统的设计要特别注意线束管理。你可以在三维模型上把每个动作机构的运动范围都拉出来看一眼检查运动包络里有没有和结构件重叠的路径。很多初次做陪伴机器人的团队机械结构仿真全通过打样完装配时才发现电机线、传感器线被运动部件反复碾磨——这类问题在静态图纸里看不到必须用运动仿真的干涉检查来兜底。报告里提到的“空间综合布局”“对照设计流程进行详细设计”落到实操就是这一件事先静态检查再运动仿真最后才出工程图。2.2 控制系统与传感器系统机器人的“感官和神经”机械结构是躯体控制系统才是让躯体知道“该干什么”的大脑。陪伴机器人的控制系统比工业机器人复杂的地方在于它面对的是非结构化环境老人可能从任何角度、任何距离叫它也可能做出没法预测的动作所以控制系统必须融合神经网络、模糊控制和拟人智能控制这几类技术再叠加传统控制逻辑做兜底。传感器系统是这个架构里的“感官”。报告里把传感器分成内部和外部两类内部传感器负责本体状态反馈外部传感器负责感知环境。对陪伴机器人来说最核心的外部传感器是三类视觉传感器负责识别老人的人脸、表情、动作是情感计算的数据来源听觉传感器负责采集语音信号配合麦克风阵列做声源定位让机器人知道声音从哪个方向来触觉传感器负责物理接触场景比如老人拍一拍机器人的头部获得回应这类交互对老人的情感满足感贡献很大。这三类传感器的数据最终都要进同一个融合层。一个很容易被忽视的参数是数据同步视觉帧率、音频采样率、触觉事件的频率各不相同给到控制系统的时间戳对不齐融合出来的情感判断就不可靠。常见做法是在传感器端统一打硬件时间戳再在软件层用队列做对齐。另一个坑是麦克风阵列的拾音距离——只安排单麦克风的话客厅环境下拾音距离通常不到3米老人坐在5米外说话语音识别率直接掉到不可用。最少也要24颗麦克风做波束成形才能把有效拾音半径拉到5米左右。2.3 语音交互链路采集、识别、理解、合成四步走语音交互是陪伴机器人最重要的交互通道毕竟老人视力在衰退看屏幕吃力说话是最自然的输入方式。报告里把语音交互过程拆成四个环节语音采集、语音识别ASR、自然语言处理NLP和语音合成TTS。很多产品团队只把ASR当成“语音识别”其实后面两步才是决定体验的关键。我用代码来看整个链路在程序里的样子# 语音交互管线的简化逻辑 def voice_interaction_pipeline(audio_stream): # 1. 语音采集完成音频录入、采样和编码 pcm_data capture_audio(audio_stream, sample_rate16000, channels1) # 2. ASR语音信息到文本信息 text asr_recognize(pcm_data, languagezh-CN) # 3. NLP解析意图与实体驱动对应指令 intent, slots nlp_parse(text) if intent medicine_reminder: reply query_schedule(slots.get(time)) else: reply generate_reply(intent, slots) # 4. TTS文本信息转声音信息 audio_out tts_synthesize(reply, voicefriendly_elderly) return audio_out这四段看起来是线性流水线实际工程里每一段都有自己的坑。语音采集环节要留意采样率和声道数配置16kHz单声道是中文识别场景的标准配置低于这个会让元音识别率明显下滑ASR环节要选带方言兼容的引擎很多老人普通话不标准这是陪伴机器人语音交互翻车率最高的地方NLP环节要为大龄用户设计简洁的意图槽位比如“该吃药了”要识别成提醒意图而不是闲聊意图TTS环节要放慢语速老年人的听觉处理速度比年轻人慢语速设定在每分钟200240字比较合适同时把音量补偿打开补偿量在36dB之间具体以老人主观反馈为准。语音交互链路里还有一个容易被忽略的点唤醒词。机器人不能一直处于全时监听状态否则功耗和误触发都是问题。常见做法是用低功耗唤醒芯片做本地唤醒唤醒后再启动云端ASR。唤醒词最好不用英文老人对中文唤醒词的接受度高得多。这也是报告里强调“主动对话”的原因——机器人应该在检测到老人长时间没说话时主动发起话题而不是干等老人来叫它。2.4 数据加密与隐私保护一对一认证交流的关键细节报告里提到“产品编号有且仅有一把密钥提供给用户”这句话的工程含义是每台机器人在出厂时生成唯一密钥对私钥固化在安全芯片里公钥用于和服务端建立加密通道。这样即使网络被监听也无法还原对话内容。聊天记录、表情识别结果、PAD情感数据都属于敏感数据这些数据在上云之前要做端到端加密在云端也要做字段级加密存储不能整表明文落库。这里有一个容易被忽略的产品决策情感数据和语音记录要不要同步给子女端。老年人和子女的知情同意权限要分开配置建议默认只同步情感趋势摘要不保留原始语音避免隐私风险。报告通篇强调的“一对一认证交流”落到产品上就是在连接建立阶段做设备级互相认证防止伪造设备接入。到这里你会发现语音、视觉、传感器、机械四层都在指向同一个目标让机器人能感知、能理解、能回应。但它们之间还缺一个把“情绪”量化的环节——这就进入第三章的内容。3. 微表情识别与PAD情感空间把“情绪”变成可计算的量这一章是整份设计研究里最能体现“为什么这份资源值得看”的部分。绝大多数陪伴机器人只做到了“听到你说什么”而这份设计想要做到“看你表情就知道你今天怎么样”。3.1 为什么表情识别要用CNN细粒度特征提取的门道老年人的表情识别比年轻人难度更高。皱纹、眼睑下垂、肌肉松弛都会干扰面部特征的提取表情强度也普遍比年轻人弱——这意味着算法必须捕捉到微表情级别的小幅变化而不是“咧嘴笑就是开心”这种粗暴判断。报告选CNN作为基础特征提取网络是合理的CNN的卷积核天然适合提取局部纹理特征对表情这种“局部肌肉变化”的任务比全连接结构有优势。落地的做法一般是这样先抓取老人面部的视频帧序列每帧做人脸检测和对齐把图像归一化到固定尺寸然后送入CNN网络提取特征向量。这里有几个参数会明显影响结果参数推荐值说明输入图像尺寸112×112 或 224×224过小丢细节过大增加计算量卷积层深度ResNet18/34量级更深网络在小数据集上容易过拟合特征向量维度512 / 1024直接决定后期分类器复杂度帧采样率815帧/秒微表情持续0.250.5秒低于8帧会漏检训练数据是这类项目最大的瓶颈。公开数据集的老人样本量很少常见做法是先用人脸表情数据集预训练再用少量老人的微表情数据做微调。如果现场有条件可以花几天时间采集机构里老人授权后的日常表情视频这比任何公开数据集都有效。我第一次做类似项目的时候迷信公开数据集效果结果到现场一测识别率掉了一半多——原因很简单训练数据里的年轻脸和现场的老人脸纹理差异太大了。从那以后我每次都会把“现场采集校准数据”写进项目计划不省这一步。3.2 注意力模型与稀疏编码时空上下文里的两个增强手段报告里还提到两个增强手段注意力模型和稀疏编码。这两个词单看都是老技术但配合方式有讲究。注意力模型在这里的作用不是“看图的时候更专注”——那是静态图像的注意力用法。报告强调的用法是“时空上下文认知模块”意思是不能只看当前这一帧要把表情出现前几帧和后几帧都纳入考量这样系统才能区分“老人皱眉是因为生气”还是“皱眉是因为阳光刺眼”。在具体实现中可以用时空注意力来学习每个时刻帧的重要性权重让模型更关注表情变化最剧烈的关键帧。稀疏编码的作用则是把CNN提取的高维度特征做稀疏化只保留和情感识别强相关的少数特征分量。实现上通常是在特征提取网络后面接一个稀疏约束层用L1正则或字典学习方法去让特征向量更稀疏。为什么要做这一步因为微表情的特征里面噪声分量很多不做稀疏化的话分类器容易被无关细节带偏。稀疏化之后特征向量里非零分量会集中到几个关键维度上模型的解释性也更好——你能直接看出来某个情感主要是由哪个特征分量触发的。提示注意力模型和稀疏编码不是二选一而是串行关系。正确的做法是先用注意力模型从时空序列里筛出关键帧再用稀疏编码从关键帧的特征里筛出关键维度。顺序反了效果会大打折扣。3.3 PAD情感空间三个维度给情绪“定位”PAD情感空间模型是这份设计研究的核心理论依托。它用三个连续维度来描述情感状态PPleasure愉悦度从痛苦到愉悦范围是[-1, 1]AArousal激活度从平静到兴奋范围是[-1, 1]DDominance支配度从被动到主动范围是[-1, 1]。这三个维度组合起来每一种情感都被映射成三维空间中的一个点。比如“温暖陪伴”可能是(0.7, 0.3, 0.5)“焦虑”可能是(-0.5, 0.6, -0.3)“平静满足”可能是(0.6, -0.2, 0.4)。PAD模型相比于传统离散情感分类开心、难过、生气、惊讶的核心优势在于它允许描述情感强度的连续变化。老人从“平静”到“开心”之间有一个渐变过程用离散标签很难捕捉这个渐变但PAD空间里就是一条轨迹线上的连续点。报告里把这个思路和面部表情识别打通CNN提取微表情特征经过稀疏编码后映射到PAD三维坐标机器人就知道老人当前情绪在哪个区间。这个映射怎么落进代码里一个常见的做法是训练一个回归头来接在特征后面# PAD情感回归输入微表情特征输出三维情感坐标 def pad_predict(face_features): # 假设 face_features 是 CNN 提取的 512 维特征向量 x Dense(128, activationrelu)(face_features) x Dropout(0.3)(x) # 防止小数据过拟合 pad_output Dense(3, activationtanh)(x) # tanh 输出范围 [-1,1] return pad_output # [P, A, D] 三个坐标用tanh做激活层是因为它天然把输出压缩在[-1, 1]与PAD的坐标系定义完全匹配。损失函数一般用MSE因为PAD回归是连续值回归任务不是分类任务。训练时注意样本平衡老人平静状态的样本量一定远大于剧烈情绪状态的样本量如果不做重采样模型很容易全都预测成“平静”看起来准确率挺高实际一点用没有。到这一步机器人的“输入侧”已经完整了语音识别得到文本语义表情识别得到PAD情感坐标。接下来要解决的问题是“如何回应”——也就是怎么在语义和情感的共同作用下选出一个最优回复。4. 情感博弈与最优回应人机对话中的决策机制第三章解决了“看懂情绪”这一章解决“接住情绪”。一份设计研究最后产出的不是一台只会点头的机器而是一个能发起对话、能选择回应策略的陪伴系统。4.1 博弈情感模型每一轮对话都在更新情绪状态报告里提到的博弈情感模型是这份设计研究里理论色彩最强、也最容易被误读的部分。它不是让机器人和老人“博弈”谁赢而是把每一轮人机对话当成一次“双向互动”老人的每一句话和每一个表情都会改变机器人的情感状态机器人输出新的回应反过来又会影响老人的情绪。这个循环往复的过程用博弈论里的交互框架来建模核心是让机器人找到“能让对话继续下去且对老人情绪有益”的最优策略。把它落到数据结构上机器人需要维护一个自己的情感状态空间。简化版本大概长这样# 机器人的情感状态空间简化版 class RobotEmotionState: def __init__(self): self.pad {P: 0.2, A: 0.3, D: 0.4} # 机器人自身情感坐标 self.user_pad {P: 0.6, A: 0.1, D: 0.3} # 老人当前坐标 self.strategy_cache [] # 历史回应策略 def update(self, user_text, user_pad_delta): # 每一轮对话后更新双方情感状态 self.user_pad[P] user_pad_delta[P] * 0.2 self.user_pad[A] user_pad_delta[A] * 0.2 # 更新机器人对老人情感变化的“理解” self.pad[D] (0.5 - abs(self.user_pad[A])) * 0.05 return self.pad, self.user_pad注释里有两个关键点体现第一更新步长不能太大0.10.3这个量级比较合适否则情感状态会来回振荡对话变得不稳定第二机器人自己的支配度D会随着了解老人情绪而缓慢提升这是模拟人际交往中“越来越默契”的感觉。4.2 候选答案集合置信度排序与情感分支判断报告里给出了一个非常清晰的对话决策流程先从候选答案池里选置信度最高的n个候选答案再判断当前是否存在情感——如果存在依据博弈情感模型所反馈的情感对应候选答案集合中进行排序取最优解作为输出的对话应答如果不存在则选择置信度最高的答案作为输出值。这个流程的关键在于“先按置信度筛再按情感排序”是两段式。如果把两个步骤合并成一个结果会非常不可控——你可能为了迎合“情感”选出语义上完全答非所问的回应。分开做的好处在于第一段保持对话的基本合理性第二段才在合理范围内做情感倾向的偏置。# 两段式对话决策 def generate_optimal_reply(user_input, user_emotion): # 第一段按语义置信度选出 top-n 候选 candidates retrieve_candidates(user_input, top_n5) # 第二段判断当前是否有明显情感 if user_emotion[arousal] 0.4: # 激活度超过阈值 # 有情感按情感匹配度对候选重排序 candidates.sort(keylambda c: emotion_match_score(c, user_emotion), reverseTrue) return candidates[0] # 取最优解注意这里的激活度阈值0.4不是拍脑袋的数。激活度高于0.4说明老人当前有明显的情绪波动无论是正向兴奋还是负向焦虑都需要机器人的回应带情感色彩低于这个阈值说明老人情绪平稳直接按语义回复即可。这个阈值在项目里要根据实测数据微调老人群体的基线激活度通常偏低实际阈值可以下调到0.3左右。4.3 三个复杂度指标时间、表情、语义怎么算报告里特别提到复杂度指标和情景空间在篇幅上看起来只是提了一句但实际这是情感计算能不能实时跑通的瓶颈所在。复杂度被分成几类时间复杂度控制情感计算必须在限定时间内完成面部表情复杂度描述表情变化的幅度和频率影响识别难度语义复杂度反映语句结构复杂程度影响NLP解析耗时。这些复杂度指标的价值在于给“那堆模糊的情感计算”设定硬约束。我在实际项目中是这样用的设定端到端响应时间从老人说话到机器人开始说话不超过2秒其中ASR占400ms、NLP占300ms、情感计算占500ms、TTS合成占300ms预留500ms网络抖动余量。如果某个环节超时了优先砍情感计算的时间——因为用户感知最强的还是“对话流畅度”情感回调晚半拍可以接受卡顿半秒不能接受。4.4 同理心设计从“回应”到“共情”报告最后提了一个容易被忽略的设计主张考虑模拟人际交往过程中的“同理心”。这个不是虚的落到交互里就是机器人的语气要随着老人情绪变化老人愉悦时语速可以正常偏快音调上扬带更多口语化表达老人低落时语速放慢10%15%音量轻微降低附加安抚性话术老人焦虑时要先承接情绪再推进话题避免直接追问具体事项。这个“先承接、再推进”的对话策略在情感计算环节里有对应的评分机制。不只是在候选答案里筛一句“最正确”的而是要选一句在语义正确性和情感匹配度加权后得分最高的。常见的权重配比是语义正确性占60%情感匹配度占40%情绪波动明显时把权重倒过来让情感匹配度占60%。这个权重切换的触发点设计好了老人的体验才会有“被理解”的感觉而不是永远在和一个掉书袋工具说话。5. 上线前与上线后的评估避坑与常见问题排查如果前三章讲的是怎么把机器人做出来这一章讲的是怎么判断它做得好不好。报告把评估分成上线前和上线后两段两段的评估目标完全不同——上线前的核心是“方向对不对”上线后的核心是“性能稳不稳、老人爱不爱用”。5.1 上线前评估从市场调研到实验招募上线前的评估内容报告列得很全产品定位、竞品对标、开发量估算、开发周期评估。落到操作上我把它整理成四步问卷调研面向老人和子女双人群发问卷重点是“付费意愿”和“功能优先级”。很多团队只问老人忽略了买单的人通常是在外工作的子女。竞品实测把市面上已有的陪伴机器人全部买回来逐一测试语音对话延迟、唤醒成功率、续航时长和表情识别准确率形成竞品对比表。原型走查用低保真原型跑一遍核心交互流程重点关注老人是否能独立完成“唤醒机器人→提问→得到回应”的闭环。实验招募招募真实老年人试用按年龄段分层6070、7080、80岁以上各招一批因为不同年龄段的科技接受度差异很大。实验招募这一步最容易踩坑。老人对陌生设备的心理戒备比年轻人高很多第一次见面就让他试用往往配合度很低。常见做法是先安排一次“聊天型”的接触——不介绍智能功能就是让老人和机器人随便聊聊熟悉后再进入正式测试。测试环境也有讲究实验室环境噪音太低老人的状态和家里完全不同有条件的话应该至少安排一次入户测试因为家庭环境里的电视声、厨房噪音、家人走动都会真实影响语音识别和表情识别的表现。5.2 上线后指标使用率、准确率、响应时间怎么测上线后的评估指标报告里有六个很明确的观测项使用率、对话结果准确率、纠错智能处理能力、智能交互响应时间、功能异常率、用户使用体验评分。每个指标背后都有对应的测量方式和参考值指标测量方式参考阈值日活使用率每日唤醒次数 / 总用户数≥60%对话结果准确率用户打分 人工复核≥85%响应时间从用户发话到机器人开口2秒以内功能异常率异常日志 / 总调用次数≤2%体验评分五级量表≥4.0 / 5.0纠错智能处理识别错误后被纠正的成功率≥70%这些参考值不是硬性标准但作为基线很好用。我见到过有些项目上线后只盯着“对话准确率”和“使用率”两个指标其他一概不看结果某天老人反馈“机器人说话越来越冲”一查发现是TTS语速被某次更新误调快了一截这类问题如果不看体验评分根本发现不了。指标要想覆盖全就得全部记录再定期看趋势。5.3 常见问题与避坑指南下面是我在拆这类陪伴机器人项目时反复踩过的四个坑按现象、原因、解决三段式写清楚。坑1老人说话带口音语音识别率直接腰斩现象标准普通话测试准确率超过95%换到方言区老人的口音识别率掉到60%上下很多指令完全解析不了。原因ASR引擎通用模型里方言适配不足。解决先采集当地老人的语音样本做声学适配或在引擎里开启方言兼容预算有限时至少把高频指令词先做本地音频模板匹配作为云端识别失败时的兜底。坑2表情识别在暗光环境下大面积失效现象白天识别率正常傍晚室内光线变暗后表情识别结果开始乱跳经常把平静判断成悲伤。原因视觉传感器默认曝光参数没有针对室内暗光调整。解决打开红外补光或者改用人脸关键点检测优先的策略——在低照度下先保证关键点稳定再谈表情分类。另一个办法是增加亮度阈值判断光照不足时主动降低情感判断置信度宁可“不确定”也不要“乱猜”。坑3唤醒误触发频繁老人被吓到现象电视里一提到唤醒词机器人就自动回应老人觉得机器“神经质”。原因唤醒词选择太普通且本地唤醒阈值设得太低。解决选24音节的中文专有词汇做唤醒词避免使用“小X”这类常见词同时把唤醒阈值调高用误唤醒率测试来标定阈值——每小时误唤醒不超过2次算及格。坑4机械结构运动部件卡死噪音越来越大现象用了一个月头部转动开始伴随“咔咔”声月底直接卡住不动。原因传动齿轮缺少润滑或者运动包络里有线束干涉。解决在设计阶段加润滑油封选型打样阶段就做1万次耐久测试而不只测功能。线束在打样装配时就要用螺旋管固定不要让线横跨任何运动关节的旋转轴。这四个坑看起来分散在语音、视觉、交互、机械四个模块但根因是一致的测试环境和真实场景的差距。实验室里永远验证不出全部问题解决办法就是让产品早一点、多一点暴露在真实的家庭环境和真实老人面前。6. 让机器人更会“接话”PAD状态追踪与主动对话参数调优把前面几章都跑通之后陪伴机器人的体验天花板在哪里我自己的答案是在于“主动对话”的质量。报告里也提到了这一点。被动回应做得好老人会觉得这是一个好用的工具主动对话做得好老人才会觉得这是一个“伴”。一个非常实用的技巧是追踪PAD状态在时间轴上的变化轨迹而不只看当前的瞬时值。报告里提到“在一定时间范围下机器人情感状态的变化规律可以通过追踪情感空间中的状态位置来判断”——这句话实操性极强。把老人一小时内的PAD坐标点连成一条轨迹线你会发现比任何单点判断都更有价值轨迹整体向上说明心情在好转轨迹整体向下说明情绪在低落轨迹长时间不动、且激活度持续低于0.2说明老人处于淡漠状态——这在很多情况下比“悲伤”更值得警觉。我通常会在代码里做一个滑动窗口的情感趋势判断def detect_mood_trend(pad_history, window_size30): # window_size 30 分钟内的情感采样点 recent pad_history[-window_size:] p_trend recent[-1][P] - recent[0][P] a_avg sum(p[A] for p in recent) / len(recent) if p_trend 0.15: return improving # 愉悦度上升 elif p_trend -0.15: return declining # 愉悦度下降 elif a_avg 0.2: return apathetic # 持续低激活 else: return stable有了这个判断主动对话的策略就能动态调整当趋势是declining的时候机器人主动聊一些老人喜欢的轻松话题而不是继续追问趋势是apathetic的时候机器人可以发起一个小游戏或者播放老歌目标是先把激活度拉起来再谈愉悦度。主动对话的调参核心就在这里——不是固定频率骚扰老人而是依据趋势决定什么时候开口、以什么语气开口。从那以后我每次做陪伴类交互设计都会强制先跑一遍PAD轨迹追踪的逻辑看它能不能在真实数据上区分出几种情绪趋势再谈方案。这个习惯帮我在项目上线前就拦下过不少“看起来能用、实际体验空洞”的设计。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进