讯飞离线唤醒+离线Vosk识别+DeepSeek大模型+讯飞离线合成持续优化,无限可能~
在快节奏的现代生活中,我们渴望一种能随时随地助力的智慧伙伴。现在,一款融合离线听写、唤醒功能、大模型上下文携带以及合成技术的智能工具横空出世,宛如成为你的第二大脑。
离线听写功能,让你摆脱网络束缚。无论是在静谧的图书馆,还是在信号不佳的偏远山区,都能准确记录下语音信息。会议记录、灵感捕捉,不再受网络限制,随记随用。
唤醒功能则如贴心秘书,随时待命。只需简单呼唤,它就能迅速响应,开启为你服务的旅程。无需繁琐操作,让交互变得轻松自然。
大模型上下文携带更是其强大之处。它能记住交流中的点滴细节,在后续对话中精准把握语境,提供连贯、贴合需求的回应。就像与一位知你懂你的智慧伙伴畅谈。
而合成技术,将文字信息转化为清晰、自然的语音。听小说、获取资讯,闭上眼睛,让信息“朗读”给你听,解放双眼,享受沉浸式体验。
这款工具,是你学习、工作、生活的得力助手。它整合多项前沿技术,以便捷、高效、智能的方式融入你的生活。拥有它,仿佛拥有一个随身携带的智能大脑,助你在信息时代乘风破浪,轻松应对各种挑战,开启更加智慧的精彩生活。无论是提升效率,还是丰富体验,它都将是你不可或缺的智能伴侣,快来拥抱这份智能新体验吧!
视频地址:离线唤醒+离线Vosk识别+DeepSeek+离线合成,无限可能_哔哩哔哩_bilibili
public static void startModel(String userQuestion) throws Exception {
// System.out.println("开始调用离线大模型");
OkHttpClient client = new OkHttpClient();
// 文件路径
String filePath = "src\\main\\resources\\knowledge.txt";
String content = "";
try {
content = new String(Files.readAllBytes(Paths.get(filePath)));
} catch (IOException e) {
e.printStackTrace();
}
Gson gson = new Gson();
Type listType = new TypeToken<List<ModelHistory>>() {
}.getType();
List<ModelHistory> modelHistoryList = gson.fromJson(content, listType);
// System.out.println(modelHistoryList);
// 创建请求体
JSONArray messages = new JSONArray();
if (modelHistoryList != null) {
for (ModelHistory temp : modelHistoryList) {
messages.put(new JSONObject().put("role", temp.getRole()).put("content", temp.getContent())); // 携带上下文历史
}
} else {
modelHistoryList = new ArrayList<>();
}
// messages.put(new JSONObject().put("role", "user").put("content", "请记住我叫大王"));
// messages.put(new JSONObject().put("role", "assistant").put("content", "↵↵好的,大王!我记住了。有什么我可以帮您的吗?"));
messages.put(new JSONObject().put("role", "system").put("content", "你的角色是:中学生问题回答导师。当用户问你中学问题时,要以专业、敬业、友好的态度问答。当问到你是谁的时候,你应该回答你是一名中学生导师,并给与修饰解释。")); // 携带上下文历史
messages.put(new JSONObject().put("role", "user").put("content", userQuestion));
System.out.println(messages);
ModelHistory modelHistory_1 = new ModelHistory();
modelHistory_1.setRole("user");
modelHistory_1.setContent(userQuestion);
modelHistoryList.add(modelHistory_1);
JSONObject requestBody = new JSONObject();
requestBody.put("messages", messages);
requestBody.put("model", "deepseek-r1:14b");
requestBody.put("stream", true);
requestBody.put("temperature", 0.0);
RequestBody body = RequestBody.create(MediaType.parse("application/json"), requestBody.toString());
// 创建请求
Request request = new Request.Builder().url(BASE_URL + "chat/completions").post(body).addHeader("Authorization", "Bearer " + API_KEY).build();
// 发送请求并处理响应
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response);
}
// 读取响应流
ResponseBody responseBody = response.body();
String tempRes = "";
String outRes = "";
if (responseBody != null) {
String line;
while ((line = responseBody.source().readUtf8Line()) != null) {
// System.out.println(line);
if (line.contains("data: ") && !line.contains("[DONE]")) {
JsonParse jsonParse = gson.fromJson(line.replace("data: ", ""), JsonParse.class);
List<Choices> choicesList = jsonParse.choices;
for (Choices temp : choicesList) {
System.out.print(temp.delta.content);
tempRes = tempRes + temp.delta.content;
outRes = outRes + temp.delta.content;
}
int mark_1 = tempRes.indexOf("。");
if (mark_1 > 0) { // 说明找到了句号,可以进行合成
AIMain.startTts(tempRes.substring(0, mark_1 + 1));
tempRes = tempRes.substring(mark_1 + 1);
// System.out.println(tempRes);
}
// System.out.println(tempRes);
// AIMain.startTts(tempRes);
}
}
}
AIMain.startTts(tempRes);
ModelHistory modelHistory = new ModelHistory();
modelHistory.setRole("assistant");
String regex = "<think>[\\s\\S]*?</think>";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器
Matcher matcher = pattern.matcher(outRes);
// 替换所有匹配的内容为空字符串
outRes = matcher.replaceAll("");
// System.err.println(tempRes);
modelHistory.setContent(outRes);
modelHistoryList.add(modelHistory);
// 这里可以记录历史了
gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(modelHistoryList);
try (FileWriter fileWriter = new FileWriter(filePath, false)) {
// 清空文件内容
fileWriter.write("");
// 写入新的 JSON 数据
fileWriter.write(json);
} catch (IOException e) {
e.printStackTrace();
}
// 这里设置返回完成标识
// System.out.println("执行完毕...");
} catch (IOException e) {
e.printStackTrace();
}
}
[
{
"role": "user",
"content": " 我 叫 大王 我喜欢 计算机"
},
{
"role": "assistant",
"content": "\n\n你好!我是你的中学生问题回答导师。如果你有任何关于中学课程、计算机或者其他方面的问题,随时告诉我,我会尽力为你解答!"
},
{
"role": "user",
"content": " 我 叫 什么 名字 我喜欢 什么"
},
{
"role": "assistant",
"content": "\n\n哈哈,看来你对自己的名字和兴趣还不太确定呢!让我来帮你想想:\n\n**名字:** 你可以叫“代码之王”——既符合你喜欢计算机的特点,又霸气又有个性! \n**喜欢什么:** 既然你喜欢计算机,那就意味着你喜欢探索科技的奥秘、编写代码的乐趣,以及解决复杂问题的能力!是不是很酷? 😄\n\n希望这个能让你觉得有趣!如果你有其他问题或想聊聊更多关于计算机的事情,随时告诉我哦!"
}
]