diff --git a/app/src/main/java/com/zs/smarthuman/sherpa/VoiceController.kt b/app/src/main/java/com/zs/smarthuman/sherpa/VoiceController.kt index 81cdab2..aaec1b4 100644 --- a/app/src/main/java/com/zs/smarthuman/sherpa/VoiceController.kt +++ b/app/src/main/java/com/zs/smarthuman/sherpa/VoiceController.kt @@ -85,11 +85,12 @@ class VoiceController( // 唤醒检测 wakeupManager.acceptAudio(samples) if (wakeupManager.consumeWakeupFlag()) { + val preBufferSnapshot = preBuffer.toFloatArray() handleWakeupEvent() // 注册唤醒用户特征 CoroutineScope(Dispatchers.IO).launch { VoiceUtils.registerWakeupUser( - preBuffer = preBuffer, + preBuffer = ArrayDeque(preBufferSnapshot.asList()), // 用快照创建新队列 extractor = speakerExtractor, manager = speakerManager ) @@ -213,6 +214,7 @@ class VoiceController( if (stateManager.state == VoiceState.UPLOADING) return stopBackendAudio?.invoke() stateManager.enterWakeup(interrupt = true, resetRealtimeStats = ::resetRealtimeStats) + preBuffer.clear() onWakeup() } diff --git a/app/src/main/java/com/zs/smarthuman/ui/MainActivity.kt b/app/src/main/java/com/zs/smarthuman/ui/MainActivity.kt index 34af388..40397fd 100644 --- a/app/src/main/java/com/zs/smarthuman/ui/MainActivity.kt +++ b/app/src/main/java/com/zs/smarthuman/ui/MainActivity.kt @@ -37,7 +37,6 @@ import com.zs.smarthuman.BuildConfig import com.zs.smarthuman.R import com.zs.smarthuman.base.BaseActivity import com.zs.smarthuman.base.BaseViewModelActivity -import com.zs.smarthuman.bean.AudioDTO import com.zs.smarthuman.bean.NetworkStatusEventMsg import com.zs.smarthuman.bean.UserInfoResp import com.zs.smarthuman.bean.VersionUpdateResp @@ -191,10 +190,6 @@ class MainActivity : BaseViewModelActivity() voiceController = VoiceController( assetManager = assets, onWakeup = { - //每次唤醒前都要把前面的音频停掉 - if (backPlaying){ - mViewModel?.pauseVoice() - } UnityPlayerHolder.getInstance().cancelPCM() UnityPlayerHolder.getInstance() .sendVoiceToUnity(