当前位置: 首页 > 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开发者来说至关重要。 以下内容将…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...