feat(chat): 集成 ElevenLabs TTS 并支持异步语音生成
This commit is contained in:
@@ -11,6 +11,9 @@ import com.yolo.keyborad.mapper.QdrantPayloadMapper;
|
||||
import com.yolo.keyborad.model.dto.chat.ChatReq;
|
||||
import com.yolo.keyborad.model.dto.chat.ChatSaveReq;
|
||||
import com.yolo.keyborad.model.dto.chat.ChatStreamMessage;
|
||||
import com.yolo.keyborad.model.vo.AudioTaskVO;
|
||||
import com.yolo.keyborad.model.vo.ChatMessageVO;
|
||||
import com.yolo.keyborad.model.vo.ChatVoiceVO;
|
||||
import com.yolo.keyborad.service.ChatService;
|
||||
import com.yolo.keyborad.service.impl.QdrantVectorService;
|
||||
import io.qdrant.client.grpc.JsonWithInt;
|
||||
@@ -46,19 +49,30 @@ public class ChatController {
|
||||
|
||||
|
||||
@PostMapping("/message")
|
||||
@Operation(summary = "同步对话", description = "发送消息给大模型,同步返回回复")
|
||||
public BaseResponse<String> message(@RequestParam("content") String content) {
|
||||
@Operation(summary = "同步对话", description = "发送消息给大模型,同步返回 AI 响应,异步生成音频")
|
||||
public BaseResponse<ChatMessageVO> message(@RequestParam("content") String content) {
|
||||
if (StrUtil.isBlank(content)) {
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "消息内容不能为空");
|
||||
}
|
||||
|
||||
String userId = StpUtil.getLoginIdAsString();
|
||||
String response = chatService.message(content, userId);
|
||||
ChatMessageVO result = chatService.message(content, userId);
|
||||
|
||||
return ResultUtils.success(response);
|
||||
return ResultUtils.success(result);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/audio/{audioId}")
|
||||
@Operation(summary = "查询音频状态", description = "根据音频 ID 查询音频生成状态和 URL")
|
||||
public BaseResponse<AudioTaskVO> getAudioTask(@PathVariable("audioId") String audioId) {
|
||||
if (StrUtil.isBlank(audioId)) {
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "音频 ID 不能为空");
|
||||
}
|
||||
|
||||
AudioTaskVO result = chatService.getAudioTask(audioId);
|
||||
return ResultUtils.success(result);
|
||||
}
|
||||
|
||||
@PostMapping("/talk")
|
||||
@Operation(summary = "聊天润色接口", description = "聊天润色接口")
|
||||
public Flux<ServerSentEvent<ChatStreamMessage>> talk(@RequestBody ChatReq chatReq){
|
||||
|
||||
Reference in New Issue
Block a user