diff --git a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrToAsr.kt b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrToAsr.kt index c04bc32cb..f2b170bdf 100644 --- a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrToAsr.kt +++ b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrToAsr.kt @@ -328,10 +328,14 @@ class IntegratedSpeechTranslationService( confidence ) Log.d(TAG, "识别完成事件: ${event.result.text},serviceConfig.sourceLanguage:${serviceConfig.sourceLanguage}") - // 触发翻译流程 - launch { - Log.d(TAG, "触发翻译流程: ${event.result.text}") - processTranslationAndSynthesis(event.result.text) + // 只有在服务仍在运行时才触发翻译流程 + if (serviceState.isRecognizing.get()) { + launch { + Log.d(TAG, "触发翻译流程: ${event.result.text}") + processTranslationAndSynthesis(event.result.text) + } + } else { + Log.d(TAG, "服务已停止,跳过翻译流程: ${event.result.text}") } } } @@ -478,6 +482,7 @@ class IntegratedSpeechTranslationService( recognizer?.stopContinuousRecognitionAsync() audioProcessor?.stopRecording() recordfile1!!.closeFile(true) + serviceState.isRecognizing.set(false) // 等待当前处理完成 while (serviceState.isTranslating.get() || serviceState.isSynthesizing.get()) { Thread.sleep(100) @@ -494,7 +499,13 @@ class IntegratedSpeechTranslationService( * 处理翻译和合成流程 */ private suspend fun processTranslationAndSynthesis(text: String) { - Log.d(TAG, " 翻译状态:${serviceState.isTranslating.get()}") + // 检查服务是否仍在运行 + if (!serviceState.isRecognizing.get()) { + Log.d(TAG, "服务已停止,取消翻译流程: $text") + return + } + + Log.d(TAG, " 翻译状态:${serviceState.isTranslating.get()}") if (serviceState.isTranslating.get()) { Log.w(TAG, "翻译正在进行中,跳过当前请求") return diff --git a/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/IntegratedSpeechTranslationService.swift b/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/IntegratedSpeechTranslationService.swift index db83bd553..70d8773bd 100644 --- a/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/IntegratedSpeechTranslationService.swift +++ b/local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/IntegratedSpeechTranslationService.swift @@ -388,9 +388,13 @@ import os.log os_log("识别完成事件: %@", log: self.log, type: .info, text) - // 触发翻译流程 - Task { - await self.processTranslationAndSynthesis(text: text) + // 检查服务状态,只有在识别仍然活跃时才触发翻译流程 + if self.serviceState.isRecognizing { + Task { + await self.processTranslationAndSynthesis(text: text) + } + } else { + os_log("服务已停止,跳过翻译流程", log: self.log, type: .info) } } @@ -593,6 +597,7 @@ import os.log */ public func stopContinuousTranslation() { do { + self.serviceState.isRecognizing = false try recognizer?.stopContinuousRecognition() audioProcessor?.stopMicrophoneCapture() recordFile?.closeFile(isSave: true) @@ -614,6 +619,12 @@ import os.log * 处理翻译和合成流程 */ private func processTranslationAndSynthesis(text: String) async { + // 添加服务状态检查 + guard serviceState.isRecognizing else { + os_log("服务已停止,取消翻译流程", log: log, type: .info) + return + } + os_log("翻译状态: %@", log: log, type: .debug, serviceState.isTranslating ? "进行中" : "空闲") if serviceState.isTranslating {