万物皆AI:联发科技 Genio 130 与 ChatGPT 的火花 - 基于 MTK Genio 130 结合 ChatGPT 功能的解决方案

news2024/11/26 7:48:20

随着人工智慧(AI)在2022-2023的爆炸性成长,我们迎来了AI世代,无论是交通、工业、金融、制造、医疗等各领域,AI已被广泛的应用来解决各类问题与加速发展。伴随著AI走入我们的生活,我们也在所拥有的各类智慧装置上,看到各式各样的AI工具与产品的身影。

MediaTek Genio 130 chip


图一:MediaTek Genio 130 chip (资料内容取自 MediaTek)

ChatGPT,我们熟知且广泛使用的自然语言生成式模型;ChatGPT 由 OpenAI 所开发并在2022推出。透过 ChatGPT,我们除了能以人类自然语言与其互动外。还可传递文字、音讯、图像、多媒体等资讯,为使用者提出的询问给予近乎真人且基于深度学习后相应的回应内容。

这样的先进的AI技术,被广泛的应用在各类领域、场景。在 IoT 领域,联发科技将自家解决方案:Genio 130,为一款单芯片整合了 Arm Cortex-M33 MCU、Wi-Fi 6 和蓝牙 5.2 连接子系统、电源管理单元(PMU)和可选音频 DSP 为基础,结合 OpenAI API,打造新一代智慧联网 AI 装置,可应用在各类 IoT 场景及情境。
 

MediaTek Genio 130 block diagram

图二:MediaTek Genio 130 block diagram

本篇方案将进一步介绍 Genio 130 结合 ChatGPT 功能的解决方案 :

  • Genio 130 环境 & SDK 架设
  • OpenAI API 导入 & 行为设计
  • 实际操作展示

Genio 130 环境 & SDK 架设

MediaTek Genio 130 EVK

图三:MediaTek Genio 130 EVK (资料内容取自 AcSip)

透过搭建 Linux 开发环境(ex. VM + Ubuntu 20.04 LTS)后,导入 Genio 130 SDK,便可开始进行 OpenAI 功能实作。

关于如何架设 Genio 130 开发环境,并进一步建置专案、烧录专案 binary file 到 Genio 130 EVK,详细可以参考大大通博文:MediaTek Genio 130/130A 快速上手(一)

在导入 OpenAI API 之前,我们需要将以下功能实作,以配合 OpenAI API 所需,Genio 130 SDK 已具备部分功能。

  • Audio data capture from microphone:撷取麦克风音讯。
  • Audio playback:用以播放 OpenAI 回应内容。
  • HTTP Client:收发 Genio 130 与 OpenAI Server 网路封包。

OpenAI API 导入 & 行为设计

参考 OpenAI 开发文件,我们可以从中查找各类 OpenAI API 并整合在 Genio 130 上,利用 HTTP Request 来完成,以下是一个使用 Chat Completions API 的 HTTP Request 范例:

​
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."                                                                             
      },
      {
        "role": "user",
        "content": "What is a LLM?"
      }
    ]
  }'

​

值得一提的是,开发 OpenAI API 需要在 OpenAI 注册帐号并取得 OpenAI API Key(须付费)。

详细可参考 : OpenAI Platform

在 Genio 130 上我们设计使用 EVK 上的按钮(SW2)来触发麦克风收音,再透过 HTTP Requet 封包发送到 OpenAI Server,接着取得经过 OpenAI Server 处理后返回的音讯回应,最后利用 Audio playback 功能于 Speaker 播放结果。

MediaTek Genio 130 EVK 

图四:MediaTek Genio 130 EVK 

实际操作展示

接下来是 Genio 130 实际操作 ChatGPT 功能展示,我们可以简单的将 Speaker 与 Genio 130 EVK 连接,完成后将 Gneio 130 EVK 连接电源,Gneio 130 EVK 将会快速的完成初始化并等待使用者执行下一步动作。

MediaTek Genio 130 EVK

图五:MediaTek Genio 130 EVK

接着,我们需要将 Gneio 130 EVK 连接上已知的 WIFI AP;透过一连串的 WIFI CLI command 来建立 Gneio 130 EVK 的网路连线,这个 WIFI AP profile 也可储存在 Gneio 130 EVK 的 NVDM 中,之后的开机都将会自动套用 profile 进行 WIFI 连线。

$ wifi init

$ wifi config set ssid 0 SSID

$ wifi config set sec 0 7 6

$ wifi config set psk 0 PASSWORD

$ wifi config set reload

再来,我们透过已实作好的 ChatGPT CLI command 启动 ChatGPT 服务

$ chatgpt_start

完成后,我们便可透过按下 SW2 按钮,并使用自然语言做提问:你好,请自我介绍

通过 OpenAI API 一连串的处理:audio/transcriptions --> chat/completions --> audio/speech。完成了一次的"对话",以下以封包形式展示:

​
[249093]<633>[common][I][openAI_chatGPT_task][1289]send audio data complete!

recv data_size:38,

{

  "text": "你好,请自我介绍"

}

[249637]<634>[common][I][openAI_chatGPT_task][1294]httpclient_post https://api.openai.com/v1/audio/transcriptions success !

req: 你好,请自我介绍

[249639]<635>[common][I][openAI_chatGPT_task][1335]send chat request !

[249645]<636>[common][I][openAI_chatGPT_task][1351]send chat request complete!

recv data_size:757,

{

  "id": "chatcmpl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "object": "chat.completion",

  "created": 1724683334,

  "model": "gpt-4o-mini-2024-07-18",

  "choices": [

    {

      "index": 0,

      "message": {

        "role": "assistant",

        "content": "你好!我是聊天机器人助手,旨在回答问题、提供资讯和帮助解决各种需求。不论是学习新知识、寻找建议、撰写文本,还是其他各种话题,我都可以提供帮助。如果你有任何问题或需求,随时告诉我!",

        "refusal": null

      },

      "logprobs": null,

      "finish_reason": "stop"

    }

  ],

  "usage": {

    "prompt_tokens": 13,

    "completion_tokens": 74,

    "total_tokens": 87

  },

  "system_fingerprint": "fp_507c9469a1"

}

[251591]<637>[common][I][openAI_chatGPT_task][1355]httpclient_post https://api.openai.com/v1/chat/completions success !

req txt: 你好!我是聊天机器人助手,旨在回答问题、提供资讯和帮助解决各种需求。不论是学习新知识、寻找建议、撰写文本,还是其他各种话题,我都可以提供帮助。如果你有任何问题或需求,随时告诉我!

[251594]<638>[common][I][openAI_chatGPT_task][1397]send text!

[251601]<639>[common][I][openAI_chatGPT_task][1413]send text complete!

mp3_codec_start_play,829

[MP3 Codec]Open codec

[MP3 Codec]: mp3_decode_buffer 0x1067c0c8 (len 41000), mp3_codec_internal_handle 0x1057a1f0 (size 220), handle 0x1057a1f0

[MP3 Codec]mp3_codec_task_main create

[MP3 Codec Demo] first write data 4095.mp3_codec_start_play,848

[MP3 Codec Demo] play +

[MP3 Codec] mp3_codec_play_internal ++

[MP3 Codec] mp3_codec_play_internal --

[MP3 Codec Demo] play -

recv data done:total size:340800, this block:14400

[260847]<649>[common][I][openAI_chatGPT_task][1434]httpclient_post https://api.openai.com/v1/audio/speech success !

​

另一个操作展示:计算95233再除以有小数点吗?小数点是多少?

​
[9323894]<699>[common][I][openAI_chatGPT_task][1289]send audio data complete!

recv data_size:76,

{

  "text": "计算952加33再除以2 有小数点吗?小数点是多少?"

}

[9324831]<700>[common][I][openAI_chatGPT_task][1294]httpclient_post https://api.openai.com/v1/audio/transcriptions success !

req: 计算952加33再除以2 有小数点吗?小数点是多少?

[9324833]<701>[common][I][openAI_chatGPT_task][1335]send chat request !

[9324840]<702>[common][I][openAI_chatGPT_task][1351]send chat request complete!

recv data_size:707,

{

  "id": "chatcmpl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "object": "chat.completion",

  "created": 1724692409,

  "model": "gpt-4o-mini-2024-07-18",

  "choices": [

    {

      "index": 0,

      "message": {

        "role": "assistant",

        "content": "首先,我们先计算 \\( 952 + 33 \\)。\n\n\\[\n952 + 33 = 985\n\\]\n\n接下来,将这个结果除以 2:\n\n\\[\n\\frac{985}{2} = 492.5\n\\]\n\n因此,计算结果有小数点,且小数点是 **0.5**。",

        "refusal": null

      },

      "logprobs": null,

      "finish_reason": "stop"

    }

  ],

  "usage": {

    "prompt_tokens": 27,

    "completion_tokens": 77,

    "total_tokens": 104

  },

  "system_fingerprint": "fp_f3db212e1c"

}

[9326680]<703>[common][I][openAI_chatGPT_task][1355]httpclient_post https://api.openai.com/v1/chat/completions success !

req txt: 首先,我们先计算 \\( 952 + 33 \\)。\n\n\\[\n952 + 33 = 985\n\\]\n\n接下来,将这个结果除以 2:\n\n\\[\n\\frac{985}{2} = 492.5\n\\]\n\n因此,计算结果有小数点,且小数点是 **0.5**。

[9326683]<704>[common][I][openAI_chatGPT_task][1397]send text!

[9326690]<705>[common][I][openAI_chatGPT_task][1413]send text complete!

mp3_codec_start_play,829

[MP3 Codec]Open codec

[MP3 Codec]: mp3_decode_buffer 0x1067c0c8 (len 41000), mp3_codec_internal_handle 0x1057a1f0 (size 220), handle 0x1057a1f0

[MP3 Codec]mp3_codec_task_main create

[MP3 Codec Demo] first write data 4095.mp3_codec_start_play,848

[MP3 Codec Demo] play +

[MP3 Codec] mp3_codec_play_internal ++

[MP3 Codec] mp3_codec_play_internal --

[MP3 Codec Demo] play -

recv data done:total size:296640, this block:2880

[9330700]<715>[common][I][openAI_chatGPT_task][1434]httpclient_post https://api.openai.com/v1/audio/speech success !

​

参考资料:

MediaTek Genio 130(MT7931/MT7933)

  • Website : MediaTek | MediaTek | Genio 130 Family | IoT Products
  • Datasheet : https://d86o2zu8ugzlg.cloudfront.net/mediatek-craft/documents/MT7933CT_Datasheet.pdF
  • Genio 130A (MT7933) EVK User Guide:https://mediatek-marketing.files.svdcdn.com/production/documents/EK-AI7933CLD_User-Guide-Ver.E.pdf?dm=1684470662

OpenAI

  • Website: https://platform.openai.com/docs/overview

►场景应用图

►展示板照片

►方案方块图

►核心技术优势

品佳集团代理的 MediaTek Genio 130(MT7931/MT7933)微处理器产品,为基于Arm Cortex-M33架构处理器,时脉可达300MHz,内建最高8MB UHS PSRAM,提供高效运算能力。并提供 WiFi 6、BT 5.2 等无线连接技术,并具备双频(2.4GHz 和 5GHz)连接;此外,Genio 130 (MT7933 版本)内建 HiFi4 DSP、3 个 ADC、2 个 DAC 通道,提供语音活动检测和触发词功能,适合开发支援语音助理云服务的 IoT 设备。

►方案规格

联发科技(MediaTek)Genio 130 系列(MT7931/MT7933),具备:

• Arm Cortex-M33 处理器,时脉 300MHz

• Embedded 1MB SRAM and 8MB UHS(Ultra High Speed) PSRAM

• WiFi 6与双频 IEEE 802.11 a/b/g/n/ac/ax 2.4G/5G 连接子系统

• 蓝牙 5.2 连接子系统

• Audio Cadence® Tensilica® HiFi4 DSP@600MHz(注一)

• 硬体加密引擎(AES/DES/3DES/SHA/ECC/TRNG)

• 电源管理单元

• 支援 USB 2.0 OTG(注一)

• 丰富的周边界面如: USB、SDIO、SPI master/slave、I2C、I2S、UART、AUXADC、PWM 以及 最多46组 GIPO

• 提供 FreeRTOS 及 Arduino 开发 SDK 及多个范例专案,缩短开发时程 注一: HiFi4 DSP, USB 2.0 为 MT7933 支援之功能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

农田杂草检测数据集 2900张 杂草检测 带标注 voc yolo

这是一个关于农田杂草的图像识别数据集&#xff0c;包含了2900张带标注的图片&#xff0c;可以用于训练计算机视觉算法&#xff0c;如VOC或YOLO等目标检测模型。 该数据集中包含以下10类农田杂草&#xff1a; Carpetweeds&#xff08;450张&#xff09;Crabgrass&#xff08;1…

基于JavaWeb开发的Java+SpringMvc+vue+element实现上海汽车博物馆平台

基于JavaWeb开发的JavaSpringMvcvueelement实现上海汽车博物馆平台 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接…

GIS数据采集软件:地理信息与遥感技术的智慧之眼

在信息时代&#xff0c;数据如同血液&#xff0c;滋养着各行各业的创新与进步&#xff0c;而地理信息与遥感领域中的数据采集软件&#xff0c;正是这股生命之源&#xff0c;它不仅为科学研究、城市规划、环境保护、灾害监测、资源管理等提供了精确数据支持&#xff0c;更是智慧…

Qt发送http请求

需要在.pro项目文件中添加网络模块&#xff0c;不然无法使用http相关的类获取数据 QT core gui network 用于http通信的类为QNetworkAccessManager 发送Get请求 通过调用QNetworkAccessManager::get方法 QNetworkReply *QNetworkAccessManager::get(const QNetworkReques…

跨部门SOP与统一知识库:打破信息孤岛,促进团队协作

引言&#xff1a; 在当今这个快速变化且高度竞争的商业环境中&#xff0c;企业面临着前所未有的挑战&#xff0c;其中之一便是如何高效地跨越部门界限&#xff0c;实现无缝协作。传统的组织结构往往导致信息孤岛的出现&#xff0c;不同部门间流程不一致、信息不共享&#xff0…

系统架构师考试学习笔记第五篇——架构设计补充知识(23)知识产权

本章考点&#xff1a; 第23课时主要学习国家与行业标准、知识产权的内容。根据考试大纲,本课时知识点会涉及单项选择题,按以往全国计算机技术与软件专业技术资格(水平)考试的出题规律约占3分。本课时内容属于补充知识范畴,考题类型固定。本课时知识架构如图23.1所示。 一、知识…

Python(PyTorch)和MATLAB及Rust和C++结构相似度指数测量导图

&#x1f3af;要点 量化检查图像压缩质量低分辨率多光谱和高分辨率图像实现超分辨率分析图像质量图像索引/多尺度结构相似度指数和光谱角映射器及视觉信息保真度多种指标峰值信噪比和结构相似度指数测量结构相似性图像分类PNG和JPEG图像相似性近似算法图像压缩&#xff0c;视频…

Linux服务器中在指定python环境中新建notebook

在指定环境下建立新的IPython内核pip install ipykernel生成ipykernel的配置文件&#xff1a;python -m ipykernel install --user --name netCLR 其中--user是指在用户级别生成&#xff0c;如果没有--user就会在系统中安装&#xff0c;如果不是管理员的话就会没有权限生成&…

【STM32】TIM输入捕获测量电平持续时间

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 前言 测量电平时间思路 配置中断 中断服务函数 捕获完成判断 代码示例 IC.h IC.c main.c 代码参考 前言 阅读本篇博客需了解定时器时基单元&#xff0c;更新中断和输入捕获 定时…

UWB定位系统在智能制造中的应用实践

UWB(Ultra-Wideband&#xff0c;超宽带)定位系统在智能制造中的应用实践已经取得了显著成效。以下是对其应用实践的详细阐述&#xff1a; 一、高精度定位与实时监控 高精度定位&#xff1a;UWB技术以其厘米级甚至毫米级的定位精度&#xff0c;远超传统的GPS和Wi-Fi等定位技术&a…

Endnote 插入参考文献 毕业论文

Endnote使用 1. 使用毕业论文参考文献格式1.1 GBT7714下载1.2 style导入1.3 选择GBT7714 2. 修改参考文献与编号之间的间隔2.1 点击三角2.2 修改Hanging 3. 将引用编号修改为右上角小字3.1 进入Endnote软件&#xff0c;点击Edit-->Output style-->Edit"Chinese Std …

【小鹏汽车用户平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

计算机网络408考研 2022

https://zhuanlan.zhihu.com/p/695446866 1 1 1SDN代表软件定义网络。它是一种网络架构&#xff0c;旨在通过将网络控制平面从数据转发平面分离出来&#xff0c;从而实现网络的灵活性和可编程性。在SDN中&#xff0c;网络管理员可以通过集中式控制器 来动态管理网络流量&…

了解Redis集群概念,集群如何选举主节点

请给胡广一个免费的三连吗&#xff1f;感谢&#xff01; 1. Redis集群 1.1 集群概念 Redis主从架构和Redis集群架构是两种不同的概念&#xff0c;大家刚接触Redis时经常弄混淆。胡广给大家贴下Redis官网对两者的解释。 &#xff08;1&#xff09;Redis主从架构 Redis主从实…

SpringBatch

Spring Batch Job instance(作业实例) 当作业运行时&#xff0c;会创建一个Job Instance(作业实例)&#xff0c;它代表作业的一次逻辑运行&#xff0c;可通过作业名称与作业标识参数进行区分。 比如一个业务需求&#xff1a; 每天定期数据同步&#xff0c;作业名称-daily-sync-…

基于SpringBoot+Vue的考务管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的考务管理…

vue 使用jszip,file-saver下载压缩包,自定义文件夹名,文件名打包下载为zip压缩包文件,全局封装公共方法使用。

记录一下后台管理全局封装一个压缩包下载方法&#xff0c;文件夹名自定义&#xff0c;文件名自定义&#xff0c;压缩包名自定义。 安装必要的库 npm install jszip npm install file-saver自定义一个公共方法全局注入 页面使用 /** 下载按钮操作 */handleDownload() {const i…

JAVA智能管理高效运营自营商城系统

智能管理&#xff0c;高效运营 —— 自营商城系统的魅力揭秘&#x1f680; &#x1f4c8; 开篇&#xff1a;告别繁琐&#xff0c;拥抱智能管理 你还在为商城运营的繁琐流程头疼吗&#xff1f;&#x1f92f; 还在为数据分析的复杂性而烦恼吗&#xff1f;&#x1f914; 那就让我…

Python设计模式实战:开启软件设计的精进之旅

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

企业工商信息查询-企业工商信息查询接口-企业工商信息api

1、接口介绍 通过企业名称/社会统一信用代码/工商注册号三者其中之一快速查询全国企业工商数据&#xff0c;可查得企业工商基本信息。如&#xff1a;企业工商基本信息&#xff0c;企业法人&#xff0c;经营状态&#xff0c;注册资本&#xff0c;以及股东&#xff0c;高管&#…