diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentVoicePrintServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentVoicePrintServiceImpl.java index 0e51c52a..6715b1b4 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentVoicePrintServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentVoicePrintServiceImpl.java @@ -20,6 +20,7 @@ import xiaozhi.modules.agent.dto.AgentVoicePrintSaveDTO; import xiaozhi.modules.agent.dto.AgentVoicePrintUpdateDTO; import xiaozhi.modules.agent.entity.AgentVoicePrintEntity; import xiaozhi.modules.agent.service.AgentChatAudioService; +import xiaozhi.modules.agent.service.AgentChatHistoryService; import xiaozhi.modules.agent.service.AgentVoicePrintService; import xiaozhi.modules.agent.vo.AgentVoicePrintVO; import xiaozhi.modules.sys.service.SysParamsService; @@ -40,16 +41,15 @@ public class AgentVoicePrintServiceImpl extends ServiceImpl() + AgentVoicePrintEntity agentVoicePrintEntity = + baseMapper.selectOne(new LambdaQueryWrapper() .eq(AgentVoicePrintEntity::getId, dto.getId()) .eq(AgentVoicePrintEntity::getCreator, userId)); - if (l != 1) { + if (agentVoicePrintEntity == null) { return false; } // 获取音频Id String audioId = dto.getAudioId(); - // 如果有新的音频 + // 获取智能体id + String agentId = agentVoicePrintEntity.getAgentId(); ByteArrayResource resource; - if (!StringUtils.isEmpty(audioId)) { - resource = getVoicePrintAudioWAV(audioId); + // audioId不等于空,且audioId和之前的保存的音频id不一样,则需要重新获取音频数据生成声纹 + if (!StringUtils.isEmpty(audioId) && !audioId.equals(agentVoicePrintEntity.getAudioId())) { + resource = getVoicePrintAudioWAV(agentId,audioId); } else { resource = null; } @@ -162,6 +165,8 @@ public class AgentVoicePrintServiceImpl extends ServiceImpl