STT流式输入业务逻辑处理

This commit is contained in:
2025-10-18 23:32:05 +08:00
parent 2c79cf3a3e
commit 04b50a34ed

View File

@@ -114,6 +114,11 @@ public class ChatWebSocketHandler {
Map<String,String> mapResult = JSONUtil.toBean(JSONUtil.parseObj(message),Map.class); Map<String,String> mapResult = JSONUtil.toBean(JSONUtil.parseObj(message),Map.class);
String resultFlag = mapResult.get("msg"); String resultFlag = mapResult.get("msg");
if("done".equals(resultFlag)){ if("done".equals(resultFlag)){
//发送消息
WebSocket webSocket = cacheWebSocket.get(clientId);
if(webSocket != null){
webSocket.close(1000,null);
}
//语音结束,开始进行回答解析 //语音结束,开始进行回答解析
String cacheResultText = cacheClientTts.get(clientId); String cacheResultText = cacheClientTts.get(clientId);
log.info("1、开始进行AI回答时间:{}",System.currentTimeMillis()/1000); log.info("1、开始进行AI回答时间:{}",System.currentTimeMillis()/1000);
@@ -192,6 +197,8 @@ public class ChatWebSocketHandler {
//发送消息 //发送消息
WebSocket webSocket = cacheWebSocket.get(clientId); WebSocket webSocket = cacheWebSocket.get(clientId);
if(webSocket != null){ if(webSocket != null){
// 1. 启动音频缓冲
webSocket.send("{\"type\": \"input_audio_buffer.start\"}");
log.info("3.1 开始发送数据音频流啦"); log.info("3.1 开始发送数据音频流啦");
// 将音频数据转换为 Base64 编码的字符串 // 将音频数据转换为 Base64 编码的字符串
String base64Audio = Base64.getEncoder().encodeToString(bytes); String base64Audio = Base64.getEncoder().encodeToString(bytes);
@@ -318,8 +325,6 @@ public class ChatWebSocketHandler {
config.put("type", "transcription_session.update"); config.put("type", "transcription_session.update");
config.put("session", sessionConfig); config.put("session", sessionConfig);
webSocket.send(config.toString()); webSocket.send(config.toString());
// 1. 启动音频缓冲
webSocket.send("{\"type\": \"input_audio_buffer.start\"}");
//存储客户端webSocket对象,对数据进行隔离处理 //存储客户端webSocket对象,对数据进行隔离处理
cacheWebSocket.put(clientId,webSocket); cacheWebSocket.put(clientId,webSocket);
} }