TTS 返回语音优化

This commit is contained in:
2025-10-19 18:43:07 +08:00
parent a839571b4e
commit 7a7ff415c6
2 changed files with 6 additions and 6 deletions

View File

@@ -130,7 +130,7 @@ public class ChatWebSocketHandler {
aiStreamClient.streamChat(cacheResultText, new OpenAiStreamListenerService() { aiStreamClient.streamChat(cacheResultText, new OpenAiStreamListenerService() {
@Override @Override
public void onMessage(String content) { public void onMessage(String content) {
log.info("返回AI结果{}",content.trim()); log.info("返回AI结果{}",content);
// 实时输出内容 // 实时输出内容
//开始进行语音输出-流式持续输出 //开始进行语音输出-流式持续输出
log.info("2、开始进行AI回答时间:{}",System.currentTimeMillis()/1000); log.info("2、开始进行AI回答时间:{}",System.currentTimeMillis()/1000);
@@ -140,14 +140,14 @@ public class ChatWebSocketHandler {
String resultFileName = clientId + "_" + System.currentTimeMillis() + ".wav"; String resultFileName = clientId + "_" + System.currentTimeMillis() + ".wav";
String resultPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + resultFileName; String resultPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + resultFileName;
ElevenLabsClient elevenLabsClient = SpringUtils.getBean(ElevenLabsClient.class); ElevenLabsClient elevenLabsClient = SpringUtils.getBean(ElevenLabsClient.class);
elevenLabsClient.handleTextToVoice(content.trim(), resultPathUrl); elevenLabsClient.handleTextToVoice(content, resultPathUrl);
log.info("3、开始进行AI回答时间:{}",System.currentTimeMillis()/1000); log.info("3、开始进行AI回答时间:{}",System.currentTimeMillis()/1000);
//持续返回数据流给客户端 //持续返回数据流给客户端
try { try {
String resultOutPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + "110_"+resultFileName; // String resultOutPathUrl = RuoYiConfig.getProfile() + VOICE_STORAGE_RESULT_DIR + "110_"+resultFileName;
handleVoice(resultPathUrl,resultOutPathUrl); handleVoice(resultPathUrl,resultPathUrl);
//文件转换成文件流 //文件转换成文件流
ByteBuffer outByteBuffer = convertFileToByteBuffer(resultOutPathUrl); ByteBuffer outByteBuffer = convertFileToByteBuffer(resultPathUrl);
//发送文件流数据 //发送文件流数据
session.getBasicRemote().sendBinary(outByteBuffer); session.getBasicRemote().sendBinary(outByteBuffer);
// 发送响应确认 // 发送响应确认
@@ -408,7 +408,6 @@ public class ChatWebSocketHandler {
private void handleVoice(String inputPath,String outputPath){ private void handleVoice(String inputPath,String outputPath){
double trimMs = 270; // 要去掉的尾部时长(毫秒) double trimMs = 270; // 要去掉的尾部时长(毫秒)
try { try {
// 1. 解析音频格式和总长度 // 1. 解析音频格式和总长度
AudioInputStream audioIn = AudioSystem.getAudioInputStream(new File(inputPath)); AudioInputStream audioIn = AudioSystem.getAudioInputStream(new File(inputPath));

View File

@@ -110,6 +110,7 @@ public class OpenAiStreamClient {
// 解析JSON获取内容 // 解析JSON获取内容
try { try {
JSONObject json = JSONUtil.parseObj(data); JSONObject json = JSONUtil.parseObj(data);
System.out.println(json);
String content = json.getJSONArray("choices") String content = json.getJSONArray("choices")
.getJSONObject(0) .getJSONObject(0)
.getJSONObject("delta") .getJSONObject("delta")