TTS 返回语音优化
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user