人機互動(HCI)正從「能聽懂」走向「懂你在感受什麼」。不只辨識指令,更要回應情緒:當使用者焦慮、挫折或興奮時,系統該怎麼問、怎麼等、怎麼回?今天一起來整理一套多輪對話+情緒互動的設計方法,結合你現有的 臉部表情(FER) 與 文字情緒(BERT) 模型,提供可落地的 場景腳本、系統架構、對話策略、評估方法,協助你把「感知 → 理解 → 回饋」串成完整體驗。
典型挑戰:
感知層
融合層(Emotion Fusion)
對話狀態(Dialogue State)
intent: # 使用者意圖
emotion_state: # {valence, arousal, label, confidence}
context: # 歷史槽位、已嘗試步驟
frustration: # 累積挫折指標(EMA)
safety_flags: # 敏感/升級指標
策略層(Policy)
生成層(NLG+UI)
使用者目標:修復 App 閃退
情緒走向:焦躁 ↑ → 緩解
流程:
策略點:當挫折 EMA > 閾值 → 縮短對話輪次、優先提供捷徑/交接。
目標:完成 3 題練習
情緒走向:中性 → 低落 → 恢復
流程:
策略點:成功/失敗比+情緒標籤共同決定下一題難度。
策略點:安全優先,情緒高張時降低互動複雜度。
偵測情緒 | 置信度 | 對話策略 | UI/互動 |
---|---|---|---|
負面 | 高 | 反映+道歉+捷徑 | 一鍵排錯/交接、縮短表單 |
負面 | 低 | 中立提問+確認 | 顯示「不確定」圖示,避免誤判 |
正面 | 高 | 強化回饋+推進任務 | 顯示進度、下一步 CTA |
驚訝/困惑 | 中 | 釐清意圖 | 提供三個意圖候選 |
反映式:
「我理解你有點{emotion_word},我們先試最快的方法:{shortcut}(約 {time_cost} 秒)。」
不確定時:
「我不太確定現在的狀態,要不要幫你記錄下來,或先看最常見的解法?」
if emotion.conf < 0.6:
policy = "neutral-question"
elif emotion.label in ["sad","angry"] and frustration > 0.7:
policy = "fast-track"
elif intent == "learn" and last_two_wrong:
policy = "reduce-difficulty"
else:
policy = "normal-flow"
回到主題「感知你的動作與情緒」,關鍵不在於多準的辨識,而在於怎麼把辨識變成體驗: