diff --git a/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureAsrHelper.swift b/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureAsrHelper.swift index 3254e8a26..0f05370d8 100644 --- a/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureAsrHelper.swift +++ b/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureAsrHelper.swift @@ -433,16 +433,10 @@ public class AzureAsrHelper: NSObject { os_log("语音服务未初始化", log: log, type: .error) return false } - guard let recognizer = recognizer else { - os_log("识别器为空,重置状态", log: log, type: .info) - // 仍需取消潜在的挂起启动任务,避免稍后被触发 - cancelPendingAudioStart() - return true - } + do { - // 关键:取消尚未执行的启动任务,防止 stop 后音频又被启动 cancelPendingAudioStart() @@ -457,7 +451,12 @@ public class AzureAsrHelper: NSObject { os_log("音频停止失败", log: self.log, type: .error) } } - + guard let recognizer = recognizer else { + os_log("识别器为空,重置状态", log: log, type: .info) + // 仍需取消潜在的挂起启动任务,避免稍后被触发 + cancelPendingAudioStart() + return true + } // 停止连续识别 try recognizer.stopContinuousRecognition() self.recognizer = nil @@ -480,6 +479,12 @@ public class AzureAsrHelper: NSObject { // 尝试安全地停止识别器 do { + guard let recognizer = recognizer else { + os_log("识别器为空,重置状态", log: log, type: .info) + // 仍需取消潜在的挂起启动任务,避免稍后被触发 + cancelPendingAudioStart() + return true + } try recognizer.stopContinuousRecognition() self.recognizer = nil } catch {