From 32985b32d575b6c35f5140226ff5f5544587b4ea Mon Sep 17 00:00:00 2001 From: fdp <1286779656@qq.com> Date: Tue, 26 Aug 2025 18:12:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=89=E5=8D=93=E5=BD=95?= =?UTF-8?q?=E9=9F=B3=EF=BC=8C=E9=80=9A=E8=AF=9D=E7=BF=BB=E8=AF=91=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../azure_speech/AzureAsrHelper.kt | 7 +++---- .../azure_speech/tools/SimpleAudioReceiver.kt | 20 +++++++------------ 2 files changed, 10 insertions(+), 17 deletions(-) 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 a2837aa39..8f7d5b571 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 @@ -504,10 +504,9 @@ class AzureAsrHelper(private val context: Context) { } // 启动音频处理 - audioStream!!.startAudioRecord( when(audioSourceType) { - AudioSourceType.MICROPHONE -> SimpleAudioReceiver.AudioSourceType.MICROPHONE - AudioSourceType.EXTERNAL -> SimpleAudioReceiver.AudioSourceType.EXTERNAL - },audioDataCallback) + audioStream!!.startAudioRecord(SimpleAudioReceiver.AudioSourceType.MICROPHONE + + ,audioDataCallback) audioStream!!.recordfile!!.closeFile(true) diff --git a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt index 5ad74f4b9..0505ff46d 100644 --- a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt +++ b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt @@ -85,7 +85,8 @@ class SimpleAudioReceiver(private val context: Context) { * 初始化音频录制 */ fun initAudioRecord() { - + val format = getOptimalAudioFormat() + pushAudioStream = AudioInputStream.createPushStream(format) isRunning.set(true) Log.d(TAG, "initAudioRecord: ${isRunning}") startWriteThread() // 再启动数据读取线程 @@ -142,7 +143,7 @@ class SimpleAudioReceiver(private val context: Context) { if(audioDataCallback!=null){ audioDataCallback?.onAudio(finalData) } - if(pushAudioStream!=null){ + if(pushAudioStream!=null&&audioDataCallback==null){ pushAudioStream?.write(finalData) } if(recordfile!=null){ @@ -184,8 +185,6 @@ class SimpleAudioReceiver(private val context: Context) { * @param callback 音频数据回调,可为空 */ fun startAudioRecord(audioSourceType: AudioSourceType, callback: AudioDataCallback?) { - val format = getOptimalAudioFormat() - pushAudioStream = AudioInputStream.createPushStream(format) this.audioSourceType = audioSourceType this.audioDataCallback = callback writeQueue.clear() @@ -240,8 +239,6 @@ class SimpleAudioReceiver(private val context: Context) { try { // 首先设置通话音频模式 //setupCommunicationAudioMode() - - val supportedSampleRates = intArrayOf(16000, 8000, 11025, 22050, 44100) val sampleRate = supportedSampleRates.firstOrNull { rate -> val bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat) @@ -278,7 +275,7 @@ class SimpleAudioReceiver(private val context: Context) { } audioRecord?.startRecording() - + Log.d("TAG", "通话模式录音开始,采样率: $sampleRate Hz") } catch (e: Exception) { @@ -316,7 +313,8 @@ class SimpleAudioReceiver(private val context: Context) { //setupCommunicationAudioMode() // 停止录音 audioRecord?.startRecording() - + + } catch (e: Exception) { Log.e(TAG, "继续录音失败: ${e.message}") } @@ -331,11 +329,7 @@ class SimpleAudioReceiver(private val context: Context) { // 停止录音 audioRecord?.stop() - - if(pushAudioStream != null){ - pushAudioStream?.close() - pushAudioStream = null - } + // 恢复音频模式 这里会导致关闭麦克风卡住待优化 //restoreCommunicationAudioMode()