修复把唤醒播放提示也给录音进去的问题

This commit is contained in:
林若思 2026-01-12 16:15:49 +08:00
parent 2606d0144f
commit 6f65a48686
2 changed files with 3 additions and 6 deletions

View File

@ -85,11 +85,12 @@ class VoiceController(
// 唤醒检测 // 唤醒检测
wakeupManager.acceptAudio(samples) wakeupManager.acceptAudio(samples)
if (wakeupManager.consumeWakeupFlag()) { if (wakeupManager.consumeWakeupFlag()) {
val preBufferSnapshot = preBuffer.toFloatArray()
handleWakeupEvent() handleWakeupEvent()
// 注册唤醒用户特征 // 注册唤醒用户特征
CoroutineScope(Dispatchers.IO).launch { CoroutineScope(Dispatchers.IO).launch {
VoiceUtils.registerWakeupUser( VoiceUtils.registerWakeupUser(
preBuffer = preBuffer, preBuffer = ArrayDeque(preBufferSnapshot.asList()), // 用快照创建新队列
extractor = speakerExtractor, extractor = speakerExtractor,
manager = speakerManager manager = speakerManager
) )
@ -213,6 +214,7 @@ class VoiceController(
if (stateManager.state == VoiceState.UPLOADING) return if (stateManager.state == VoiceState.UPLOADING) return
stopBackendAudio?.invoke() stopBackendAudio?.invoke()
stateManager.enterWakeup(interrupt = true, resetRealtimeStats = ::resetRealtimeStats) stateManager.enterWakeup(interrupt = true, resetRealtimeStats = ::resetRealtimeStats)
preBuffer.clear()
onWakeup() onWakeup()
} }

View File

@ -37,7 +37,6 @@ import com.zs.smarthuman.BuildConfig
import com.zs.smarthuman.R import com.zs.smarthuman.R
import com.zs.smarthuman.base.BaseActivity import com.zs.smarthuman.base.BaseActivity
import com.zs.smarthuman.base.BaseViewModelActivity import com.zs.smarthuman.base.BaseViewModelActivity
import com.zs.smarthuman.bean.AudioDTO
import com.zs.smarthuman.bean.NetworkStatusEventMsg import com.zs.smarthuman.bean.NetworkStatusEventMsg
import com.zs.smarthuman.bean.UserInfoResp import com.zs.smarthuman.bean.UserInfoResp
import com.zs.smarthuman.bean.VersionUpdateResp import com.zs.smarthuman.bean.VersionUpdateResp
@ -191,10 +190,6 @@ class MainActivity : BaseViewModelActivity<ActivityMainBinding, MainViewModel>()
voiceController = VoiceController( voiceController = VoiceController(
assetManager = assets, assetManager = assets,
onWakeup = { onWakeup = {
//每次唤醒前都要把前面的音频停掉
if (backPlaying){
mViewModel?.pauseVoice()
}
UnityPlayerHolder.getInstance().cancelPCM() UnityPlayerHolder.getInstance().cancelPCM()
UnityPlayerHolder.getInstance() UnityPlayerHolder.getInstance()
.sendVoiceToUnity( .sendVoiceToUnity(