Design 入门 22m
评估和优化 App 的语音交互
Evaluate and optimize voice interaction for your app
2020年6月25日
一句话判断
这场 Session 是纯设计方法论——如何定义语音交互的成功指标、如何做用户测试、如何量化”体验好不好”。对写代码没什么帮助,但对做语音功能的产品设计很有参考价值。
这场 Session 讲了什么
Session 提供了一个评估语音交互质量的系统化方法论。从定义用户任务开始,到设计测试场景,再到收集和分析数据,最后迭代优化。
核心框架是”任务完成率 + 效率 + 满意度”三个维度。任务完成率:用户说出指令后是否成功达成了目标。效率:从说出指令到完成任务需要多少步骤和时间。满意度:用户对整个体验的主观评价。
Session 强调了一个常被忽视的指标——“静默失败率”:Siri 没有理解用户的指令但没有给出明确的错误反馈。这种情况比”理解了但找不到内容”更糟糕,因为用户不知道是自己的表达有问题还是系统出 bug 了。
值得深挖的点
A/B 测试语音交互的特殊性。 UI 的 A/B 测试很简单——两个版本各放给 50% 用户。语音交互的 A/B 测试更复杂,因为同一个用户可能用不同的方式表达同一个意图。Session 建议用”意图级别的 A/B 测试”而非”界面级别的 A/B 测试”。
错误分类比错误数量更重要。 100 次失败中如果有 80 次是”找不到内容”,那是内容问题;如果 80 次是”理解错误”,那是语音识别或意图匹配的问题。不同的错误类型指向完全不同的优化方向。
代码片段
// 记录语音交互的关键指标
struct VoiceInteractionMetrics {
let intentType: String // 意图类型
let userUtterance: String // 用户说了什么
let recognitionResult: String // Siri 识别的结果
let isSuccessful: Bool // 是否成功
let responseTime: TimeInterval // 响应时间
let errorType: VoiceErrorType? // 错误类型(如果失败)
}
enum VoiceErrorType {
case recognitionFailed // 语音识别错误
case intentNotUnderstood // 意图理解错误
case contentNotFound // 找不到内容
case playbackFailed // 播放失败
case timeout // 超时
}
// 收集指标数据
func logInteractionMetrics(_ metrics: VoiceInteractionMetrics) {
// 发送到你的分析后端
Analytics.track("voice_interaction", properties: [
"intent_type": metrics.intentType,
"is_successful": metrics.isSuccessful,
"response_time_ms": Int(metrics.responseTime * 1000),
"error_type": metrics.errorType?.rawValue ?? "none"
])
}
// 在 Intent Handler 中埋点
class PlayMediaIntentHandler: NSObject, INPlayMediaIntentHandling {
func handle(intent: INPlayMediaIntent, completion: @escaping (INPlayMediaIntentResponse) -> Void) {
let startTime = Date()
performPlayback(with: intent) { response in
let metrics = VoiceInteractionMetrics(
intentType: "PlayMedia",
userUtterance: intent.mediaSearch?.mediaName ?? "",
recognitionResult: intent.mediaSearch?.mediaName ?? "",
isSuccessful: response.code == .success,
responseTime: Date().timeIntervalSince(startTime),
errorType: response.code == .success ? nil : .playbackFailed
)
logInteractionMetrics(metrics)
completion(response)
}
}
}
最佳实践
- 定义清晰的成功标准。 “用户说了播放XX,5秒内开始播放且内容正确”比”没有崩溃”是有意义的指标。
- 按意图类型分别统计成功率。 不同意图的复杂度不同,混在一起看成功率没有意义。
- 记录用户的原始表达。 语音交互的优化需要知道用户实际说了什么,与系统识别的结果对比。
- 定期做人工评估。 自动化指标只能发现量的问题,质的评估需要人工听录音并判断理解是否正确。
还有什么值得关注
- 苹果建议的语音交互基准:任务完成率 > 90%,平均响应时间 < 3 秒
- “静默失败”是最需要优先修复的问题类型
- 用户的语音表达会随时间变化,需要持续监控
- Session 提供了评估问卷模板,可以用来收集满意度数据
WWDC 2020