mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-22 18:35:21 -06:00
c84921634d
* fix(macos): avoid passive Automation prompts * fix(macos): keep Voice Wake recognition on device * fix(macos): require consent for activity presence * chore(apps): refresh native i18n inventory * fix(macos): preserve presence clears across gateway versions * fix(macos): prioritize activity privacy opt-out * chore(apps): refresh native i18n inventory * fix(macos): scrub legacy presence activity * fix(macos): migrate permission status caller * fix(macos): preserve unknown permission state * fix(macos): refresh privacy change artifacts * refactor(macos): remove stale presence helper * fix(deps): patch URI and Jaeger advisories * test(gateway): adopt pairing-bound node sessions
43 lines
1.4 KiB
Swift
43 lines
1.4 KiB
Swift
import Foundation
|
|
import Speech
|
|
|
|
enum SpeechRecognitionRequestPolicy {
|
|
enum PolicyError: LocalizedError, Equatable {
|
|
case onDeviceRecognitionUnavailable
|
|
|
|
var errorDescription: String? {
|
|
switch self {
|
|
case .onDeviceRecognitionUnavailable:
|
|
"On-device speech recognition is unavailable for this language on this Mac."
|
|
}
|
|
}
|
|
}
|
|
|
|
static func configurePassiveVoiceWake(
|
|
_ request: SFSpeechAudioBufferRecognitionRequest,
|
|
supportsOnDeviceRecognition: Bool) throws
|
|
{
|
|
guard supportsOnDeviceRecognition else {
|
|
throw PolicyError.onDeviceRecognitionUnavailable
|
|
}
|
|
self.configureCommon(request)
|
|
request.requiresOnDeviceRecognition = true
|
|
}
|
|
|
|
static func configureInteractiveTranscription(_ request: SFSpeechAudioBufferRecognitionRequest) {
|
|
self.configureCommon(request)
|
|
request.requiresOnDeviceRecognition = false
|
|
}
|
|
|
|
static func supportsPassiveVoiceWake(localeID: String?) -> Bool {
|
|
let locale = localeID.flatMap { Locale(identifier: $0) }
|
|
?? Locale(identifier: Locale.current.identifier)
|
|
return SFSpeechRecognizer(locale: locale)?.supportsOnDeviceRecognition == true
|
|
}
|
|
|
|
private static func configureCommon(_ request: SFSpeechAudioBufferRecognitionRequest) {
|
|
request.shouldReportPartialResults = true
|
|
request.taskHint = .dictation
|
|
}
|
|
}
|