语音唤醒是 macOS 应用的核心特性之一。它使用 Apple 的 Speech 框架(SFSpeechRecognizer)进行实时语音识别,监听用户定义的触发词。
衍生解释 — SFSpeechRecognizer 与 RMS
SFSpeechRecognizer 是 Apple 的语音识别 API,支持实时流式识别。它将麦克风捕获的音频缓冲区(AVAudioPCMBuffer)转换为文本。RMS(Root Mean Square,均方根)是衡量音频信号强度的常用指标——OpenClaw 通过比较当前 RMS 与噪声底(noiseFloorRMS)来判断用户是否在说话。
// apps/macos/Sources/OpenClaw/GatewayConnection.swift
actor GatewayConnection {
static let shared = GatewayConnection()
enum Method: String, Sendable {
case agent, status, health
case channelsStatus = "channels.status"
case configGet = "config.get"
case configSet = "config.set"
case chatHistory = "chat.history"
case chatSend = "chat.send"
case chatAbort = "chat.abort"
case talkMode = "talk.mode"
case voicewakeGet = "voicewake.get"
case voicewakeSet = "voicewake.set"
// ... 20+ RPC 方法
}
}
// apps/macos/Sources/OpenClaw/PermissionManager.swift
enum PermissionManager {
static func ensure(_ caps: [Capability], interactive: Bool) async -> [Capability: Bool] {
var results: [Capability: Bool] = [:]
for cap in caps {
results[cap] = await ensureCapability(cap, interactive: interactive)
}
return results
}
}