讯飞唤醒+VOSK语音识别+DEEPSEEK大模型+讯飞离线合成实现纯离线大模型智能语音问答。

在信息爆炸的时代,智能语音问答系统正以前所未有的速度融入我们的日常生活。然而,随着数据泄露事件的频发,用户对于隐私保护的需求日益增强。想象一下,一个无需联网、即可响应你所有问题的智能助手——这就是纯离线大模型智能语音问答系统带来的革命性体验。

应用场景

  1. 智能家居:在家庭环境中,用户可以通过纯离线大模型智能语音问答系统控制家电、查询天气、设置提醒等,享受便捷、智能的生活体验。

  2. 车载导航:在驾驶过程中,用户可以通过纯离线大模型智能语音问答系统进行语音导航、查询路况、播放音乐等操作,提高驾驶安全性和舒适度。

  3. 教育辅导:在教育领域,学生可以利用纯离线大模型智能语音问答系统进行学习辅导、解答疑问等,提高学习效率和成绩。

  4. 医疗咨询:在医疗领域,患者可以通过纯离线大模型智能语音问答系统咨询医生、了解病情、获取健康建议等,提高医疗服务的便捷性和可及性。

技术含量很高,既突破了离线语音听写的PC端限制,又实现了离线大模型的API调用,同时也整合了离线语音合成延迟高的问题解决方案,实现近乎完美的纯离线大模型智能问答。

// 1、唤醒调用public static void startIvw() {Integer ret = IvwService.INSTANCE.MSPLogin(null, null, Constants.IVW_LOGIN_PARAMS); // 登录if (ret != 0) {System.out.println("唤醒登录失败...:" + ret);}String sessionId = IvwService.INSTANCE.QIVWSessionBegin(null, Constants.IVW_SSB_PARAMS, Constants.IVW_ERROR_CODE); // 开启会话if (Constants.IVW_ERROR_CODE.getValue() != 0) {System.out.println("开启唤醒会话失败...:" + Constants.IVW_ERROR_CODE.getValue());}ret = IvwService.INSTANCE.QIVWRegisterNotify(sessionId, new IvwCallback(), null); // 注册唤醒回调函数if (ret != 0) {System.out.println("注册唤醒回调函数失败...:" + ret);}try {while (true) {byte[] audioDataByteArray = new byte[Constants.IVW_FRAME_SIZE];Constants.IVW_ASR_TARGET_DATA_LINE.open(Constants.IVW_ASR_AUDIO_FORMAT);Constants.IVW_ASR_TARGET_DATA_LINE.start();int len = new AudioInputStream(Constants.IVW_ASR_TARGET_DATA_LINE).read(audioDataByteArray);if (len == -1) {   //    调用麦克风时候,这段将不会被执行...Constants.IVW_AUDIO_STATUS = 4;ret = IvwService.INSTANCE.QIVWAudioWrite(sessionId, "".getBytes(), 0, Constants.IVW_AUDIO_STATUS);System.out.println("最后一帧返回的错误码:" + ret + ",即将执行退出...");break;  //文件读完,跳出循环} else {// 反复调用QIVWAudioWrite写音频方法,直到音频写完为止!!!!!!!!!!!!ret = IvwService.INSTANCE.QIVWAudioWrite(sessionId, audioDataByteArray, len, Constants.IVW_AUDIO_STATUS);}Constants.IVW_AUDIO_STATUS = 2; // 中间帧if (ret != 0) {System.err.println("唤醒音频写入失败...:" + ret);}Thread.sleep(200); // 模拟人说话时间间隙,10帧的音频200ms写入一次}} catch (Exception e) {e.printStackTrace();}}// 2、合成调用public static void startTts(String ttsText) {Constants.TTS_TEXT = ttsText;Constants.TTS_BYTE_ARRAY_OUTPUT_STREAM = new ByteArrayOutputStream(); // 初始化Constants.TTS_TOTAL_AUDIO_LENGTH = 0;Integer ret = TtsService.INSTANCE.MSPLogin(null, null, Constants.TTS_LOGIN_PARAMS); // 登录if (ret != 0) {System.out.println("合成登录失败...:" + ret);}String session_id = TtsService.INSTANCE.QTTSSessionBegin(Constants.TTS_SESSION_BEGIN_PARAMS, Constants.TTS_ERROR_CODE); // 开启合成会话if (Constants.TTS_ERROR_CODE.getValue() != 0) {System.out.println("合成开启会话失败...:" + Constants.TTS_ERROR_CODE.getValue());}ret = TtsService.INSTANCE.QTTSTextPut(session_id, Constants.TTS_TEXT, Constants.TTS_TEXT.getBytes().length, null); // 正式合成if (ret != 0) {System.out.println("合成音频失败...:" + ret);}try {    //实时播放Constants.TTS_SOURCE_DATA_LINE.open(Constants.TTS_AUDIO_FORMAT);Constants.TTS_SOURCE_DATA_LINE.start();} catch (Exception e) {e.printStackTrace();}while (true) {Pointer audioPointer = TtsService.INSTANCE.QTTSAudioGet(session_id, Constants.TTS_AUDIO_LEN, Constants.TTS_SYNTH_STATUS, Constants.TTS_ERROR_CODE); // 获取音频byte[] audioDataByteArray = null;if (audioPointer != null) {audioDataByteArray = audioPointer.getByteArray(0, Constants.TTS_AUDIO_LEN.getValue());}if (Constants.TTS_ERROR_CODE.getValue() != 0) {System.out.println("合成获取音频失败...+:" + Constants.TTS_ERROR_CODE);break;}if (audioDataByteArray != null) {try {Constants.TTS_SOURCE_DATA_LINE.write(audioDataByteArray, 0, Constants.TTS_AUDIO_LEN.getValue()); //实时写音频流Constants.TTS_BYTE_ARRAY_OUTPUT_STREAM.write(audioDataByteArray, 0, Constants.TTS_AUDIO_LEN.getValue());   //将数据写入字节数组的输出流,用来生成音频文件} catch (Exception e) {e.printStackTrace();}Constants.TTS_TOTAL_AUDIO_LENGTH = Constants.TTS_TOTAL_AUDIO_LENGTH + Constants.TTS_AUDIO_LEN.getValue();     //计算总音频长度,用来生成音频文件}if (Constants.TTS_SYNTH_STATUS.getValue() == 2) {// 说明音频已经取完,退出本次循环try {Constants.TTS_SOURCE_DATA_LINE.drain();Constants.TTS_SOURCE_DATA_LINE.close();Constants.TTS_BYTE_ARRAY_OUTPUT_STREAM.flush();Constants.TTS_BYTE_ARRAY_OUTPUT_STREAM.close();} catch (Exception e) {e.printStackTrace();}break;}}ret = TtsService.INSTANCE.QTTSSessionEnd(session_id, "正常退出"); //结束会话if (ret != 0) {System.out.println("合成结束会话失败...:" + ret);}ret = TtsService.INSTANCE.MSPLogout(); // 退出if (ret != 0) {System.out.println("合成退出失败...:" + ret);}}// 3、离线语音听写调用// 4、离线大模型调用并获取结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22104.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后端Java Stream数据流的使用=>代替for循环

API讲解 对比 示例代码对比 for循环遍历 package cn.ryanfan.platformback.service.impl;import cn.ryanfan.platformback.entity.Algorithm; import cn.ryanfan.platformback.entity.AlgorithmCategory; import cn.ryanfan.platformback.entity.DTO.AlgorithmInfoDTO; im…

UE 播放视频

一.UI播放视频 1.导入视频文件至工程文件夹 2.文件夹内右健选择Media -> File Meida Source创建testFileMeidaSource文件。 编辑FilePath为当前视频 3.右键->Media->Media Player 创建testMediaPlayer文件 4.右键创建testMediaTexture。编辑MediaPlayer设置testMedia…

推荐一款AI大模型托管平台-OpenWebUI

推荐一款AI大模型托管平台-OpenWebUI 1. OpenWebUI 1. OpenWebUI什么? 官网地址:https://openwebui.com/ GitHub地址: https://github.com/open-webui/open-webui Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离…

【Python项目】基于知识图谱的百科问答系统

【Python项目】基于知识图谱的百科问答系统 技术简介: 采用Python技术、MySQL数据库、Django框架、Scrapy爬虫等技术实现。 系统简介: 百科问答系统是一个基于知识图谱的问答平台,旨在为用户提供快速、准确的百科知识查询服务。系统通过爬…

stm32rtc实时时钟详解文章

目录 stm32 后备区域基础知识详解 stm32 bkp基础知识详解 Unix时间戳基础知识详解 stm32 rtc实时时钟基础知识详解 相关代码初始化配置 欢迎指正,希望对你,有所帮助!!! stm32 后备区域基础知识详解 stm32芯片的 …

Spring Boot项目@Cacheable注解的使用

Cacheable 是 Spring 框架中用于缓存的注解之一,它可以帮助你轻松地将方法的结果缓存起来,从而提高应用的性能。下面详细介绍如何使用 Cacheable 注解以及相关的配置和注意事项。 1. 基本用法 1.1 添加依赖 首先,确保你的项目中包含了 Spr…

windows上vscode cmake工程搭建

安装vscode插件: 1.按装fastc(主要是安装MinGW\mingw64比较方便) 2.安装C,cmake,cmake tools插件 3.准备工作完成之后,按F1,选择cmake:Quick Start就可以创建一个cmake工程。 4.设置Cmake: G…

SpringMVC详解

文章目录 1 什么是MVC 1.1 MVC设计思想1.2 Spring MVC 2 SpringMVC快速入门3 SpringMVC处理请求 3.1 请求分类及处理方式 3.1.1 静态请求3.1.2 动态请求 3.2 处理静态请求 3.2.1 处理html文件请求3.2.2 处理图片等请求 3.3 处理动态请求 3.3.1 注解说明3.3.2 示例 3.4 常见问题…

【用deepseek和chatgpt做算法竞赛】——还得DeepSeek来 -Minimum Cost Trees_5

往期 【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_0:介绍了题目和背景【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_1:题目输入的格式说明,选择了邻接表…

面试题汇总

1. 判断大小端问题 大端:低字节存放在高地址; 小端:低字节存放在低地址 如 : 0x12345678 bool is_little_endian() {unsigned int x 1;return ((char*)&x)[0]; }bool is_big_endian() {unsigned int x 1;return !((char*)&x)[0];…

jsherp importItemExcel接口存在SQL注入

一、漏洞简介 很多人说管伊佳ERP(原名:华夏ERP,英文名:jshERP)是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能,但后面将会推出ERP的全部功能,有兴趣请帮点一下 二、漏洞影响 …

体验用ai做了个python小游戏

体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见,欢迎页面和结束页面背景是视频,游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…

动态存储斐波那契数列(递归优化)

递归 递归是c当中一种自身调用自身的算法。 普通递归解决斐波那契数列问题 #include<iostream> using namespace std; int f(int n){int sum;if(n<2){sum1;}else{sumf(n-1)f(n-2);}return sum; } int main() {int n;cin>>n;cout<<f(n);return 0;}当数据…

php文件上传

文章目录 文件上传机制文件上传脚本文件上传绕过php后缀替换为空web服务器的解析漏洞绕过nginxiisapache 高级文件上传nginx自定义配置文件&#xff08;默认三分钟刷新一次&#xff09;服务端内容检测结合伪协议使用配合日志包含只允许图片上传 上传实战训练 文件上传机制 文件…

播放器系列1——总概述

播放器核心架构 模块解释 文件读取 读取视频文件、读取网络文件、读取音频文件&#xff0c;大概分为这三种&#xff0c;目前代码中仅实现了读取视频文件播放&#xff0c;也就是当没有video数据的时候播放器不可使用。 解复用 容器指的是多媒体文件中的封装格式&#xff0c;…

【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较

常见中间件api操作及性能比较 ☝️ MySQL crud操作✌️ maven依赖✌️ 配置✌️ 定义实体类✌️ 常用api ☝️ Redis crud操作✌️ maven依赖✌️ 配置✌️ 常用api ☝️ MongoDB crud操作✌️ maven依赖✌️ 配置文件✌️ 定义实体类✌️ MongoDB常用api ☝️ ES crud操作 ⭐️…

【进程与线程】Linux 线程、同步以及互斥

每个用户进程有自己的地址空间。 线程是操作系统与多线程编程的基础知识。 系统为每个用户进程创建一个 task_struct 来描述该进程&#xff1a;该结构体中包含了一个指针指向该进程的虚拟地址空间映射表&#xff1a; 实际上 task_struct 和地址空间映射表一起用来表示一个进程…

实现动态翻转时钟效果的 HTML、CSS 和 JavaScript,附源码

实现动态翻转时钟效果的 HTML、CSS 和 JavaScript 在现代网页设计中&#xff0c;动画效果可以极大地增强用户体验。本文将介绍如何利用 HTML、CSS 和 JavaScript 创建一个动态翻转时钟的效果&#xff0c;模拟经典机械翻页时钟的视觉效果。我们将通过详细的步骤讲解如何实现时钟…

Spring Boot与MyBatis

Spring Boot与MyBatis的配置 一、简介 Spring Boot是一个用于创建独立的、基于Spring的生产级应用程序的框架&#xff0c;它简化了Spring应用的初始搭建以及开发过程。MyBatis是一款优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。将Spring Boot和MyBa…

1.16作业

1 进注册界面&#xff0c;第一次以为抓包选把isadmin ture了就好 第二次尝试&#xff0c;勾选is admin&#xff0c;有需要invitecode&#xff08;经典&#xff09; 2 p r**5 r**4 - r**3 r**2 - r 2023 q r**5 - r**4 r**3 - r**2 r 2023 n 25066797992811602609904…