From 7a7ff415c69c18b6d60372c87f00faaf5c2b14dc Mon Sep 17 00:00:00 2001 From: wangxiangshun Date: Sun, 19 Oct 2025 18:43:07 +0800 Subject: [PATCH] =?UTF-8?q?TTS=20=E8=BF=94=E5=9B=9E=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/vetti/socket/ChatWebSocketHandler.java | 11 +++++------ .../com/vetti/common/ai/gpt/OpenAiStreamClient.java | 1 + 2 files changed, 6 insertions(+), 6 deletions(-) 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 1e294ac..dd0c9ea 100644 --- a/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java +++ b/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java @@ -130,7 +130,7 @@ public class ChatWebSocketHandler { aiStreamClient.streamChat(cacheResultText, new OpenAiStreamListenerService() { @Override public void onMessage(String content) { - log.info("返回AI结果:{}",content.trim()); + log.info("返回AI结果:{}",content); // 实时输出内容 //开始进行语音输出-流式持续输出 log.info("2、开始进行AI回答时间:{}",System.currentTimeMillis()/1000); @@ -140,14 +140,14 @@ public class ChatWebSocketHandler { String resultFileName = clientId + "_" + System.currentTimeMillis() + ".wav"; String resultPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + resultFileName; ElevenLabsClient elevenLabsClient = SpringUtils.getBean(ElevenLabsClient.class); - elevenLabsClient.handleTextToVoice(content.trim(), resultPathUrl); + elevenLabsClient.handleTextToVoice(content, resultPathUrl); log.info("3、开始进行AI回答时间:{}",System.currentTimeMillis()/1000); //持续返回数据流给客户端 try { - String resultOutPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + "110_"+resultFileName; - handleVoice(resultPathUrl,resultOutPathUrl); +// String resultOutPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + "110_"+resultFileName; + handleVoice(resultPathUrl,resultPathUrl); //文件转换成文件流 - ByteBuffer outByteBuffer = convertFileToByteBuffer(resultOutPathUrl); + ByteBuffer outByteBuffer = convertFileToByteBuffer(resultPathUrl); //发送文件流数据 session.getBasicRemote().sendBinary(outByteBuffer); // 发送响应确认 @@ -408,7 +408,6 @@ public class ChatWebSocketHandler { private void handleVoice(String inputPath,String outputPath){ double trimMs = 270; // 要去掉的尾部时长(毫秒) - try { // 1. 解析音频格式和总长度 AudioInputStream audioIn = AudioSystem.getAudioInputStream(new File(inputPath)); diff --git a/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java b/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java index 5c45d7b..ed40b3b 100644 --- a/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java +++ b/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java @@ -110,6 +110,7 @@ public class OpenAiStreamClient { // 解析JSON获取内容 try { JSONObject json = JSONUtil.parseObj(data); + System.out.println(json); String content = json.getJSONArray("choices") .getJSONObject(0) .getJSONObject("delta")