diff --git a/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java b/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java index 5bb5670..b8b707d 100644 --- a/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java +++ b/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java @@ -205,31 +205,33 @@ public class ChatWebSocketHandler { @Override public void onMessage(String content) { log.info("返回AI结果:{}", content); - String questionResult = cacheQuestionResult.get(session.getId()); - if(StrUtil.isEmpty(questionResult)){ - questionResult = content; - }else{ - questionResult = questionResult + content; - } - cacheQuestionResult.put(session.getId(),questionResult); - // 实时输出内容 - //开始进行语音输出-流式持续输出 - //把结果文字转成语音文件 - //生成文件 - //生成唯一文件名 - String resultFileName = clientId + "_" + System.currentTimeMillis() + ".wav"; - String resultPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + resultFileName; - ElevenLabsClient elevenLabsClient = SpringUtils.getBean(ElevenLabsClient.class); - elevenLabsClient.handleTextToVoice(content, resultPathUrl); - //持续返回数据流给客户端 - try { - //文件转换成文件流 - ByteBuffer outByteBuffer = convertFileToByteBuffer(resultPathUrl); - //发送文件流数据 - session.getBasicRemote().sendBinary(outByteBuffer); - // 发送响应确认 - } catch (IOException e) { - e.printStackTrace(); + if(StrUtil.isNotEmpty(content)){ + String questionResult = cacheQuestionResult.get(session.getId()); + if(StrUtil.isEmpty(questionResult)){ + questionResult = content; + }else{ + questionResult = questionResult + content; + } + cacheQuestionResult.put(session.getId(),questionResult); + // 实时输出内容 + //开始进行语音输出-流式持续输出 + //把结果文字转成语音文件 + //生成文件 + //生成唯一文件名 + String resultFileName = clientId + "_" + System.currentTimeMillis() + ".wav"; + String resultPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + resultFileName; + ElevenLabsClient elevenLabsClient = SpringUtils.getBean(ElevenLabsClient.class); + elevenLabsClient.handleTextToVoice(content, resultPathUrl); + //持续返回数据流给客户端 + try { + //文件转换成文件流 + ByteBuffer outByteBuffer = convertFileToByteBuffer(resultPathUrl); + //发送文件流数据 + session.getBasicRemote().sendBinary(outByteBuffer); + // 发送响应确认 + } catch (IOException e) { + e.printStackTrace(); + } } } diff --git a/vetti-admin/src/main/java/com/vetti/web/controller/ai/AiCommonController.java b/vetti-admin/src/main/java/com/vetti/web/controller/ai/AiCommonController.java index acd17ab..d84dcc4 100644 --- a/vetti-admin/src/main/java/com/vetti/web/controller/ai/AiCommonController.java +++ b/vetti-admin/src/main/java/com/vetti/web/controller/ai/AiCommonController.java @@ -41,7 +41,7 @@ public class AiCommonController extends BaseController { //你好,我是本次的面试官Vetti,请点击开始按钮后,做一段自我介绍. //本轮面试结束,谢谢您的配合,面试结果将稍后通知 - elevenLabsClient.handleTextToVoice("This round of interview is over. Thank you for your cooperation. The interview results will be notified later","/Users/wangxiangshun/Desktop/临时文件/end.wav"); + elevenLabsClient.handleTextToVoice("Good","/Users/wangxiangshun/Desktop/临时文件/good.wav"); return success(); }