diff --git a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt index ed74769ee..3f6aaed83 100644 --- a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt +++ b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt @@ -289,6 +289,12 @@ class AzureAsrHelper(private val context: Context) { this.audioSourceType = audioSourceType if (!audioStream.isContinuousRecognitionActive) { + // 确保音频流已初始化 + if (!audioStream.isInitialized()) { + audioStream.initAudioRecord() + audioStream.setupStream() + } + audioStream.startAudioRecord( when (audioSourceType) { AudioSourceType.MICROPHONE -> SimpleAudioReceiver.AudioSourceType.MICROPHONE diff --git a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/XunFeiAsrHelper.kt b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/XunFeiAsrHelper.kt index 18da0e3ae..3c4253dd0 100644 --- a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/XunFeiAsrHelper.kt +++ b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/XunFeiAsrHelper.kt @@ -25,6 +25,13 @@ class XunFeiAsrHelper(private val context: Context) { private var currentSessionId = "" fun start(callback: AzureAsrHelper.ContinuousRecognizeCallback) { + try { + webSocket?.cancel() + webSocket = null + } catch (e: Exception) { + Log.e(tag, "Clear previous websocket failed: ${e.message}") + } + currentSessionId = UUID.randomUUID().toString() val url = getWebSocketUrl() @@ -64,8 +71,15 @@ class XunFeiAsrHelper(private val context: Context) { } fun stop() { - webSocket?.let { ws: WebSocket -> - ws.send("{\"end\": true}") + try { + webSocket?.let { ws: WebSocket -> + ws.send("{\"end\": true}") + ws.close(1000, "User stopped") + } + } catch (e: Exception) { + Log.e(tag, "Stop Xunfei failed: ${e.message}") + } finally { + webSocket = null } }