From be3c8728fb2a493e78a97f5ecc274bb0abdb6e54 Mon Sep 17 00:00:00 2001 From: ivmiku <124345843+ivmiku@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:01:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=AD=E9=9F=B3=E5=8A=A9=E6=89=8B?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A4=9A=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AssistantController.java | 5 +-- .../tutorial/service/AssistantService.java | 34 ++++++++++++------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/navigate-8432/src/main/java/com/ivmiku/tutorial/controller/AssistantController.java b/navigate-8432/src/main/java/com/ivmiku/tutorial/controller/AssistantController.java index c32bcee..8cd9a8d 100644 --- a/navigate-8432/src/main/java/com/ivmiku/tutorial/controller/AssistantController.java +++ b/navigate-8432/src/main/java/com/ivmiku/tutorial/controller/AssistantController.java @@ -17,8 +17,9 @@ public class AssistantController { private AssistantService assistantService; @GetMapping("/response") - public Object getResponse(@RequestParam String input) { - Map map = assistantService.getResponse(input); + public Object getResponse(@RequestParam String input, @RequestParam int size, @RequestParam String language) { + String userInput = assistantService.speechRecognition(input, size, language); + Map map = assistantService.getResponse(userInput, language); if (map == null) { return Result.error("请求出错"); } diff --git a/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java b/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java index c06c723..9da477c 100644 --- a/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java +++ b/navigate-8432/src/main/java/com/ivmiku/tutorial/service/AssistantService.java @@ -34,10 +34,16 @@ public class AssistantService { private final String secretId = "AKID09INNYxYEFFJH3g9VhljVF3qbDiFdx50"; private final String secretKey = "KajjcNyNaaUCqQroqpzNoMtTHNj4Lbil"; - public Map getAiResponse(String userInput) { + public String getAiResponse(String userInput, String language) { Map message1 = new HashMap<>(); message1.put("role", "system"); - message1.put("content", "模仿语音助手,对用户的问题给出简短的回答"); + String prompt = "模仿语音助手,对用户的问题给出简短的回答"; + if ("Chinese".equals(language)) { + prompt += "用中文回答"; + } else if ("English".equals(language)) { + prompt += "用英文回答"; + } + message1.put("content", prompt); Map message2 = new HashMap<>(); message2.put("role", "user"); message2.put("content", userInput); @@ -59,10 +65,7 @@ public class AssistantService { } JSONArray choices = result.getJSONArray("choices"); JSONObject message = choices.getJSONObject(0); - JSONObject content = message.getJSONObject("message"); - Map map = new HashMap<>(); - map.put("content", content.get("content")); - return map; + return message.getString("message"); } public String textToSpeech(String content) { @@ -84,7 +87,7 @@ public class AssistantService { } } - public String speechRecognition(String content, Integer length) { + public String speechRecognition(String content, Integer length, String language) { try{ Credential cred = new Credential(secretId, secretKey); HttpProfile httpProfile = new HttpProfile(); @@ -93,7 +96,11 @@ public class AssistantService { clientProfile.setHttpProfile(httpProfile); AsrClient client = new AsrClient(cred, "", clientProfile); SentenceRecognitionRequest req = new SentenceRecognitionRequest(); - req.setEngSerViceType("16k_zh"); + if ("Chinese".equals(language)) { + req.setEngSerViceType("16k_zh"); + } else if ("English".equals(language)) { + req.setEngSerViceType("16k_en"); + } req.setSourceType(1L); req.setVoiceFormat("wav"); req.setData(content); @@ -143,15 +150,16 @@ public class AssistantService { return String.valueOf(message.getJSONObject("message")); } - public Map getResponse(String query) { + public Map getResponse(String query, String language) { Map result = new HashMap<>(); String tag = extractTag(query); String content; content = searchGuidance(tag); - if (content != null) { - result.put("content", content); - return result; + if (content == null) { + content = getAiResponse(query, language); } - return getAiResponse(query); + Map map = new HashMap<>(); + map.put("content", textToSpeech(content)); + return map; } }