content: package org.ruoyi.chat.controller.chat;
  
  
  import jakarta.servlet.http.HttpServletRequest;
  import jakarta.validation.Valid;
  import lombok.RequiredArgsConstructor;
  import lombok.extern.slf4j.Slf4j;
  import org.ruoyi.chat.service.chat.ISseService;
  import org.ruoyi.common.chat.entity.Tts.TextToSpeech;
  import org.ruoyi.common.chat.entity.files.UploadFileResponse;
  import org.ruoyi.common.chat.entity.whisper.WhisperResponse;
  import org.ruoyi.common.chat.request.ChatRequest;
  import org.springframework.core.io.Resource;
  import org.springframework.http.ResponseEntity;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.annotation.*;
  import org.springframework.web.multipart.MultipartFile;
  import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
  
  
  /**
   *  聊天管理
   *
   * @author ageerle@163.com
   * @date 2023-03-01
   */
  @Controller
  @Slf4j
  @RequiredArgsConstructor
  @RequestMapping("/chat")
  public class ChatController {
  
      private final ISseService sseService;
  
      /**
       * 聊天接口
       */
      @PostMapping("/send")
      @ResponseBody
      public SseEmitter sseChat(@RequestBody @Valid ChatRequest chatRequest, HttpServletRequest request) {
          return sseService.sseChat(chatRequest,request);
      }
  
      /**
       * 上传文件
       */
      @PostMapping("/upload")
      @ResponseBody
      public UploadFileResponse upload(@RequestPart("file") MultipartFile file) {
          return sseService.upload(file);
      }
  
  
      /**
       * 语音转文本
       *
       * @param file
       */
      @PostMapping("/audio")
      @ResponseBody
      public WhisperResponse audio(@RequestParam("file") MultipartFile file) {
          return sseService.speechToTextTranscriptionsV2(file);
      }
  
      /**
       * 文本转语音
       *
       * @param textToSpeech
       */
      @PostMapping("/speech")
      @ResponseBody
      public ResponseEntity<Resource> speech(@RequestBody TextToSpeech textToSpeech) {
          return sseService.textToSpeed(textToSpeech);
      }
  
  }
  