当前位置: 首页 > news >正文

做一个能和你互动玩耍的智能机器人之七-接入对话和大模型

接入科大迅飞的语音识别:

private void printResult(RecognizerResult results) {String text = JsonParser2.parseIatResult(results.getResultString());String sn = null;// 读取json结果中的sn字段try {JSONObject resultJson = new JSONObject(results.getResultString());sn = resultJson.optString("sn");} catch (JSONException e) {e.printStackTrace();}mIatResults.put(sn, text);StringBuffer resultBuffer = new StringBuffer();for (String key : mIatResults.keySet()) {resultBuffer.append(mIatResults.get(key));}String s = mEditTextMessage.getText().toString();mEditTextMessage.setText(s + resultBuffer.toString());mEditTextMessage.setSelection(mEditTextMessage.length());}/*** 听写UI监听器*/private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {// 返回结果public void onResult(RecognizerResult results, boolean isLast) {Log.i("jiaABC", "results"+results.toString());printResult(results);}// 识别回调错误public void onError(SpeechError error) {//showTip(error.getPlainDescription(true));Log.i("jiaABC", "error"+error.toString());}};//科大迅飞语音识别@NeedsPermission(Manifest.permission.RECORD_AUDIO)public void startDialog(){buffer.setLength(0);//mEditTextMessage.setText(null);// 清空显示内容mIatResults.clear();// 显示听写对话框// 初始化识别无UI识别对象// 使用SpeechRecognizer对象,可根据回调消息自定义界面;//mIat = SpeechRecognizer.createRecognizer(HomeActivity.this, mInitListener);// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer// 使用UI听写功能,请根据sdk文件目录下的notice.txt,放置布局文件和图片资源RecognizerDialog  mIatDialog = new RecognizerDialog(HomeActivity.this, mInitListener);//mSharedPreferences = getSharedPreferences(PREFER_NAME, Activity.MODE_PRIVATE);mIatDialog.setListener(mRecognizerDialogListener);mIatDialog.show();}private void printResult(RecognizerResult results) {String text = JsonParser2.parseIatResult(results.getResultString());String sn = null;// 读取json结果中的sn字段try {JSONObject resultJson = new JSONObject(results.getResultString());sn = resultJson.optString("sn");} catch (JSONException e) {e.printStackTrace();}mIatResults.put(sn, text);StringBuffer resultBuffer = new StringBuffer();for (String key : mIatResults.keySet()) {resultBuffer.append(mIatResults.get(key));}String s = mEditTextMessage.getText().toString();mEditTextMessage.setText(s + resultBuffer.toString());mEditTextMessage.setSelection(mEditTextMessage.length());}/*** 听写UI监听器*/private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {// 返回结果public void onResult(RecognizerResult results, boolean isLast) {Log.i("jiaABC", "results"+results.toString());printResult(results);}// 识别回调错误public void onError(SpeechError error) {//showTip(error.getPlainDescription(true));Log.i("jiaABC", "error"+error.toString());}};//科大迅飞语音识别@NeedsPermission(Manifest.permission.RECORD_AUDIO)public void startDialog(){buffer.setLength(0);//mEditTextMessage.setText(null);// 清空显示内容mIatResults.clear();// 显示听写对话框// 初始化识别无UI识别对象// 使用SpeechRecognizer对象,可根据回调消息自定义界面;//mIat = SpeechRecognizer.createRecognizer(HomeActivity.this, mInitListener);// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer// 使用UI听写功能,请根据sdk文件目录下的notice.txt,放置布局文件和图片资源RecognizerDialog  mIatDialog = new RecognizerDialog(HomeActivity.this, mInitListener);//mSharedPreferences = getSharedPreferences(PREFER_NAME, Activity.MODE_PRIVATE);mIatDialog.setListener(mRecognizerDialogListener);mIatDialog.show();}

rerofit调用百度的大模型,yi_34b_chat 可以免费接入,玩玩还是不错的,rxjava请求token可以自动刷新token,而且能合并请求一步到位

 @Headers({"Content-type:application/json;charset=UTF-8"})@POST("rpc/2.0/ai_custom/v1/wenxinworkshop/chat/yi_34b_chat")Call<Baidu> getBaidu(@Query("access_token") String access_token, @Body RequestBody route);//oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'@GET("oauth/2.0/token")Call<BaiduTocken> getBaiduToken(@Query("grant_type") String grant_type, @Query("client_id") String client_id,@Query("client_secret") String client_secret);@GET("oauth/2.0/token")Observable<BaiduTocken> getBaiduToken2(@Query("grant_type") String grant_type, @Query("client_id") String client_id,@Query("client_secret") String client_secret);

retrofit初始化固定的,自己照着搞一个就行。

public static ApiService getApiService() {//星火//return RetrofitClient.getSingleClient("https://spark-api-open.xf-yun.com/").create(ApiService.class);//百度return RetrofitClient.getSingleClient("https://aip.baidubce.com/").create(ApiService.class);}public static void getBaidu(String access_token, RequestBody rb, Callback<Baidu> callback) {getApiService().getBaidu(access_token, rb).enqueue(callback);}public static void getBaiduToken(String client_id, String client_secret, Callback<BaiduTocken> callback) {getApiService().getBaiduToken("client_credentials", client_id, client_secret).enqueue(callback);}

测试:

  getBaidu("token", body, new Callback<Baidu>() {@Overridepublic void onResponse(Call<Baidu> call, Response<Baidu> response) {System.out.println("getGPT--------------Success"+call.request().toString());System.out.println("getGPT--------------Success"+response.code());System.out.println("getGPT--------------Success"+response.message());System.out.println("getGPT--------------Success"+response.raw());System.out.println("getGPT--------------Success"+response.body());}@Overridepublic void onFailure(Call<Baidu> call, Throwable t) {System.out.println("getGPT--------------onFailure"+call.request().toString());System.out.println("getGPT------------onFailure"+t.toString());}});getBaiduToken("API kEY", "Secret key", new Callback<BaiduTocken>() {@Overridepublic void onResponse(Call<BaiduTocken> call, Response<BaiduTocken> response) {System.out.println("getGPT--------------Success"+call.request().toString());System.out.println("getGPT--------------Success"+response.code());System.out.println("getGPT--------------Success"+response.message());System.out.println("getGPT--------------Success"+response.raw());System.out.println("getGPT--------------Success"+response.body());}@Overridepublic void onFailure(Call<BaiduTocken> call, Throwable t) {System.out.println("getGPT--------------onFailure"+call.request().toString());System.out.println("getGPT------------onFailure"+t.toString());}});

大模型用到的请求和接收model


public class Msg {private List<MessagesBean> messages;public static class MessagesBean {private String role;private String content;public String getRole() {return role;}public void setRole(String role) {this.role = role;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}@Overridepublic String toString() {return "MessagesBean{" +"role='" + role + '\'' +", content='" + content + '\'' +'}';}}public List<MessagesBean> getMessages() {return messages;}public void setMessages(List<MessagesBean> messages) {this.messages = messages;}@Overridepublic String toString() {return "Msg{" +"messages=" + messages +'}';}
}public class Baidu {private String id;private String object;private Integer created;private String result;private Boolean is_truncated;private Boolean need_clear_history;private UsageBean usage;public static class UsageBean {private Integer prompt_tokens;private Integer completion_tokens;private Integer total_tokens;public Integer getPrompt_tokens() {return prompt_tokens;}public void setPrompt_tokens(Integer prompt_tokens) {this.prompt_tokens = prompt_tokens;}public Integer getCompletion_tokens() {return completion_tokens;}public void setCompletion_tokens(Integer completion_tokens) {this.completion_tokens = completion_tokens;}public Integer getTotal_tokens() {return total_tokens;}public void setTotal_tokens(Integer total_tokens) {this.total_tokens = total_tokens;}@Overridepublic String toString() {return "UsageBean{" +"prompt_tokens=" + prompt_tokens +", completion_tokens=" + completion_tokens +", total_tokens=" + total_tokens +'}';}}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getObject() {return object;}public void setObject(String object) {this.object = object;}public Integer getCreated() {return created;}public void setCreated(Integer created) {this.created = created;}public String getResult() {return result;}public void setResult(String result) {this.result = result;}public Boolean getIs_truncated() {return is_truncated;}public void setIs_truncated(Boolean is_truncated) {this.is_truncated = is_truncated;}public Boolean getNeed_clear_history() {return need_clear_history;}public void setNeed_clear_history(Boolean need_clear_history) {this.need_clear_history = need_clear_history;}public UsageBean getUsage() {return usage;}public void setUsage(UsageBean usage) {this.usage = usage;}@Overridepublic String toString() {return "Baidu{" +"id='" + id + '\'' +", object='" + object + '\'' +", created=" + created +", result='" + result + '\'' +", is_truncated=" + is_truncated +", need_clear_history=" + need_clear_history +", usage=" + usage +'}';}
}public class BaiduTocken {private String refresh_token;private Integer expires_in;private String session_key;private String access_token;private String scope;private String session_secret;public String getRefresh_token() {return refresh_token;}public void setRefresh_token(String refresh_token) {this.refresh_token = refresh_token;}public Integer getExpires_in() {return expires_in;}public void setExpires_in(Integer expires_in) {this.expires_in = expires_in;}public String getSession_key() {return session_key;}public void setSession_key(String session_key) {this.session_key = session_key;}public String getAccess_token() {return access_token;}public void setAccess_token(String access_token) {this.access_token = access_token;}public String getScope() {return scope;}public void setScope(String scope) {this.scope = scope;}public String getSession_secret() {return session_secret;}public void setSession_secret(String session_secret) {this.session_secret = session_secret;}@Overridepublic String toString() {return "BaiduTocken{" +"refresh_token='" + refresh_token + '\'' +", expires_in=" + expires_in +", session_key='" + session_key + '\'' +", access_token='" + access_token + '\'' +", scope='" + scope + '\'' +", session_secret='" + session_secret + '\'' +'}';}
}

唉,我的Arduino nano接了lcd屏显示速度很慢,也不知道哪里出了问题,唉,估计要买四条腿的,8条腿带不动

相关文章:

做一个能和你互动玩耍的智能机器人之七-接入对话和大模型

接入科大迅飞的语音识别&#xff1a; private void printResult(RecognizerResult results) {String text JsonParser2.parseIatResult(results.getResultString());String sn null;// 读取json结果中的sn字段try {JSONObject resultJson new JSONObject(results.getResult…...

阿里巴巴商家联系方式采集软件使用教程

以下是一个批量访问阿里巴巴商家店铺的Python代码示例&#xff1a; import requestsdef visit_shop(shop_url):try:response requests.get(shop_url)if response.status_code 200:print(f"成功访问店铺&#xff1a;{shop_url}")else:print(f"访问店铺失败&am…...

Golang | Leetcode Golang题解之第326题3的幂

题目&#xff1a; 题解&#xff1a; func isPowerOfThree(n int) bool {return n > 0 && 1162261467%n 0 }...

人大金仓(Kingbase)数据库高阶函数详解

人大金仓&#xff08;Kingbase&#xff09;数据库高阶函数详解 人大金仓&#xff08;Kingbase&#xff09;数据库是一款基于 PostgreSQL 的国产关系型数据库(PostgreSQL 高阶函数详解&#xff1a;全面深入的功能与实用示例 )&#xff0c;提供了丰富的高阶函数&#xff0c;以支…...

云原生真机实验

基于Proxmox VE构建中小企业云计算平台 首先Proxmox VE是什么&#xff1f;能用来做什么&#xff1f; Proxmox VE是一个完整的企业虚拟化开源平台。借助内置的 Web 界面&#xff0c;可以在单个解决方案上轻松管理 VM(开虚拟机的) 和容器、软件定义的存储和网络、高可用性群集以…...

【电子电路学习笔记】——模电笔记

关于专栏&#xff1a;本专栏用于分享学习电子电路过程中记录的笔记。模电部分使用的教材是高等教育出版社&#xff0c;华成英主编的《模拟电子技术基础&#xff08;第六版&#xff09;》&#xff08;其他版本的内容差不多&#xff0c;建议使用最新版教材&#xff09;&#xff1…...

部署伪分布式 Hadoop集群

部署伪分布式 Hadoop集群 一、JDK安装配置1.1 下载JDK1.2 上传解压1.3 java环境配置 二、伪分布式 Hadoop 安装配置2.1 Hadoop 下载2.2 上传解压2.3 Hadoop 文件目录介绍2.4 Hadoop 配置2.4.1 修改 core-site.xml 配置文件2.4.2 修改 hdfs-site.xml 配置文件2.4.3 修改 hadoop-…...

十九、虚拟机VMware Workstation(CentOSDebian)的安装

目录 &#x1f33b;&#x1f33b; 一、安装 VMware Workstation1.1 安装 VMware Workstation1.2 虚拟机上安装 CentOS1.3 虚拟机安装 Debian 二、配置Debian方便第三方工具远程连接2.1 配置debian2.2 安装远程SSH工具并连接 一、安装 VMware Workstation 官网下载 本地资源库…...

理解Android framework之AOSP:从内核到应用层

一、AOSP Android framework确保设备的各个部件和程序顺利协同工作。对于想要全面了解 Android 设备内部工作原理、开发高质量应用、优化设备性能以及充分利用 Android 生态系统潜力的人来说&#xff0c;了解 Android 框架也是必不可少的。它是连接用户、开发者和 Android 平台…...

杂谈c语言——3.内存对齐

先看两个例子&#xff1a; typedef struct S {int a;double b;char c; }S;typedef struct B {int a;char b;double c; }B;int main() {printf("S : %d\n", sizeof(S));printf("B : %d\n", sizeof(B));return 0; } 结果为&#xff1a; S:24; B:16&#xff…...

瑞芯微Android设备指定应用开启性能模式

本文档主要针对特定应用&#xff08;如 安兔兔&#xff09;如何进行加速及性能的提升做相关说明。 快速开启方法 开启与关闭 在 device/rockchip/rk3xxx/下配置文件:package_performance.xml&#xff0c;在其中的节点中加入需要使用性能模式的包名&#xff1a;&#xff08;…...

ASP.NET Core基础 - 简介

目录 一. 简介 A、跨平台性 B、高性能 C、开源性 D、模块化与可扩展性 E、集成现代前端技术 二. ASP.NET 4.x 和 ASP.NET Core 比较 A、架构与平台支持 B、性能 C、开发体验 D、社区支持与生态系统 三. NET 与 .NET Framework 比较 A、概念范围 B、跨平台能力 C…...

Flask+LayUI开发手记(一):LayUI表格的前端数据分页展现

用数据表格table展示系统数据&#xff0c;是LayUI的基本功能&#xff0c;编码十分简单&#xff0c;就是通过table.render()渲染&#xff0c;把属性配置好就OK了&#xff0c;十分方便&#xff0c;功能也十分强大。 不过&#xff0c;在实现时&#xff0c;把table的有个功能却理解…...

Vulnhub靶场DC-9练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 发现SQL注入点2. Sqlmap跑数据3. 文件包含4. SSH爆破端口敲门服务5. 提权&#xff08;写入/etc/passwd&#xff09; 0x04 总结 0x00 准备 下载链接&#xff1a;https://download.vulnhub.com/dc/DC-9.z…...

Java对象内存布局和对象头

文章目录 面试题Object object new Object() 谈谈你对这句话的理解&#xff1f; 对象在堆内存中存储布局权威定义&#xff08;周志明老师JVM第三版&#xff09;对象在堆内存中的存储布局详解对象头的MarkWord源码对象标记源码 对象内存布局&#xff08;使用JOL证明&#xff09…...

python:基于YOLO框架和遥感图像的目标检测

作者&#xff1a;CSDN _养乐多_ 本文将介绍如何通过YOLO框架和遥感图像进行目标检测的代码。 文章目录 一、数据集下载与格式转换1.1 NWPU VHR-10&#xff08;73.1 MB&#xff09;1.2 DIOR&#xff08;7.06 GB&#xff09;1.3 配置data.yaml 二、训练三、训练结果 一、数据集…...

DAMA学习笔记(十一)-元数据管理

1.引言 元数据最常见的定义是“关于数据的数据”。它描述了数据本身&#xff08;如数据库、数据元素、数据模型&#xff09;&#xff0c;数据表示的概念&#xff08;如业务流程、应用系统、软件代码、技术基础设施&#xff09;&#xff0c;数据与概念之间的联系&#xff08;关系…...

密码学基本理论

密码学是研究信息安全保护的科学,实现信息的保密性、完整性、可用性以及抗抵赖性 根据密码分析者在破译时已经具备的前提条件,密码分析攻击类型分类: 唯密文攻击:已知密文;未知明文+秘钥已知明文攻击:已知部分明文和密文对;未知秘钥+算法选择明文攻击:已知明文+算法--…...

【深度学习】【语音TTS】vits 论文,Variational Inference Text-to-Speech(1)

代码:https://github.com/jaywalnut310/vits 论文:https://arxiv.org/abs/2106.06103 文章目录 摘要1. 引言2. 方法2.1. 变分推理2.1.1. 概述2.1.2. 重构损失2.1.3. KL散度2.2. 对齐估计2.2.1. 单调对齐搜索2.2.2. 从文本预测时长2.3. 对抗训练2.4. 最终损失2.5. 模型架构2.5…...

javascript中 window 相关知识点以及代码演示

一.了解window 在JavaScript中&#xff0c;window对象是浏览器的全局对象&#xff0c;它不仅代表了浏览器窗口&#xff0c;同时也充当了ECMAScript中的Global对象的角色。因此&#xff0c;深入了解和掌握window对象的属性和方法对于JavaScript开发者来说至关重要。 以下内容将…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...