新聞中心

        EEPW首頁 > 智能計算 > 設(shè)計應(yīng)用 > 基于 MTK Genio 130 結(jié)合 ChatGPT 功能的解決方案

        基于 MTK Genio 130 結(jié)合 ChatGPT 功能的解決方案

        作者: 時間:2024-09-24 來源:大大通 收藏

        隨著人工智慧(AI)在2022-2023的爆炸性成長,我們迎來了AI世代,無論是交通、工業(yè)、金融、制造、醫(yī)療等各領(lǐng)域,AI已被廣泛的應(yīng)用來解決各類問題與加速發(fā)展。伴隨著AI走入我們的生活,我們也在所擁有的各類智慧裝置上,看到各式各樣的AI工具與產(chǎn)品的身影。

        本文引用地址:http://www.104case.com/article/202409/463150.htm

         MediaTek Genio 130 chip
        圖一:MediaTek chip (資料內(nèi)容取自 MediaTek)

         

        ,我們熟知且廣泛使用的自然語言生成式模型; 由 OpenAI 所開發(fā)并在2022推出。透過 ,我們除了能以人類自然語言與其互動外。還可傳遞文字、音訊、圖像、多媒體等資訊,為使用者提出的詢問給予近乎真人且基于深度學(xué)習(xí)后相應(yīng)的回應(yīng)內(nèi)容。

         

        這樣的先進的AI技術(shù),被廣泛的應(yīng)用在各類領(lǐng)域、場景。在 IoT 領(lǐng)域,聯(lián)發(fā)科技將自家解決方案:,為一款單芯片整合了 Arm Cortex-M33 MCU、Wi-Fi 6 和藍(lán)牙 5.2 連接子系統(tǒng)、電源管理單元(PMU)和可選音頻 DSP 為基礎(chǔ),結(jié)合 OpenAI API,打造新一代智慧聯(lián)網(wǎng) AI 裝置,可應(yīng)用在各類 IoT 場景及情境。
        MediaTek Genio 130 block diagram

        圖二:MediaTek block diagram

         

        本篇方案將進一步介紹 Genio 130 結(jié)合 ChatGPT 功能的解決方案 :

         

        • Genio 130 環(huán)境 & SDK 架設(shè)

        • OpenAI API 導(dǎo)入 & 行為設(shè)計

        • 實際操作展示

         

        Genio 130 環(huán)境 & SDK 架設(shè)

         MediaTek Genio 130 EVK

        圖三:MediaTek Genio 130 EVK (資料內(nèi)容取自 AcSip

         

        透過搭建 Linux 開發(fā)環(huán)境(ex. VM + Ubuntu 20.04 LTS)后,導(dǎo)入 Genio 130 SDK,便可開始進行 OpenAI 功能實作。

         

        關(guān)于如何架設(shè) Genio 130 開發(fā)環(huán)境,并進一步建置專案、燒錄專案 binary file 到 Genio 130 EVK,詳細(xì)可以參考大大通博文:MediaTek Genio 130/130A 快速上手(一)

         

        在導(dǎo)入 OpenAI API 之前,我們需要將以下功能實作,以配合 OpenAI API 所需,Genio 130 SDK 已具備部分功能。

         

        • Audio data capture from microphone:擷取麥克風(fēng)音訊。

        • Audio playback:用以播放 OpenAI 回應(yīng)內(nèi)容。

        • HTTP Client:收發(fā) Genio 130 OpenAI Server 網(wǎng)路封包。

         

        OpenAI API 導(dǎo)入 & 行為設(shè)計

         

        參考 OpenAI 開發(fā)文件,我們可以從中查找各類 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?"
              }
            ]
          }'

         

        值得一提的是,開發(fā) OpenAI API 需要在 OpenAI 注冊帳號并取得 OpenAI API Key(須付費)。

         

        詳細(xì)可參考 : OpenAI Platform

         

        Genio 130 我們設(shè)計使用 EVK 上的按鈕(SW2)來觸發(fā)麥克風(fēng)收音,再透過 HTTP Requet 封包發(fā)送到 OpenAI Server,接著取得經(jīng)過 OpenAI Server 處理后返回的音訊回應(yīng),最后利用 Audio playback 功能于 Speaker 播放結(jié)果。

         

        MediaTek Genio 130 EVK 

         

        圖四:MediaTek Genio 130 EVK 

         

        實際操作展示

         

        接下來是 Genio 130 實際操作 ChatGPT 功能展示,我們可以簡單的將 Speaker Genio 130 EVK 連接,完成后將 Gneio 130 EVK 連接電源,Gneio 130 EVK 將會快速的完成初始化并等待使用者執(zhí)行下一步動作。

         

        MediaTek Genio 130 EVK

         

        圖五:MediaTek Genio 130 EVK

         

        接著,我們需要將 Gneio 130 EVK 連接上已知的 WIFI AP;透過一連串的 WIFI CLI command 來建立 Gneio 130 EVK 的網(wǎng)路連線,這個 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 服務(wù)

         

        $ 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": "你好!我是聊天機器人助手,旨在回答問題、提供資訊和幫助解決各種需求。不論是學(xué)習(xí)新知識、尋找建議、撰寫文本,還是其他各種話題,我都可以提供幫助。如果你有任何問題或需求,隨時告訴我!",

                "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: 你好!我是聊天機器人助手,旨在回答問題、提供資訊和幫助解決各種需求。不論是學(xué)習(xí)新知識、尋找建議、撰寫文本,還是其他各種話題,我都可以提供幫助。如果你有任何問題或需求,隨時告訴我!

         

        [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再除以2 有小數(shù)點嗎?小數(shù)點是多少?

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

         

        recv data_size:76,

        {

          "text": "計算952加33再除以2 有小數(shù)點嗎?小數(shù)點是多少?"

        }

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

        req: 計算952加33再除以2 有小數(shù)點嗎?小數(shù)點是多少?

        [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 )。nn[n952 + 33 = 985n]nn接下來,將這個結(jié)果除以  2:nn[nfrac{985}{2} = 492.5n]nn因此,計算結(jié)果有小數(shù)點,且小數(shù)點是 **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 )。nn[n952 + 33 =  985n]nn接下來,將這個結(jié)果除以 2:nn[nfrac{985}{2} =  492.5n]nn因此,計算結(jié)果有小數(shù)點,且小數(shù)點是 **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 !


        ?場景應(yīng)用圖

        ?展示板照片

        ?方案方塊圖

        ?核心技術(shù)優(yōu)勢

        品佳集團代理的 MediaTek Genio 130(MT7931/MT7933)微處理器產(chǎn)品,為基于Arm Cortex-M33架構(gòu)處理器,時脈可達(dá)300MHz,內(nèi)建最高8MB UHS PSRAM,提供高效運算能力。并提供 WiFi 6、BT 5.2 等無線連接技術(shù),并具備雙頻(2.4GHz 和 5GHz)連接;此外,Genio 130 (MT7933 版本)內(nèi)建 HiFi4 DSP、3 個 ADC、2 個 DAC 通道,提供語音活動檢測和觸發(fā)詞功能,適合開發(fā)支援語音助理云服務(wù)的 IoT 設(shè)備。

        ?方案規(guī)格

        聯(lián)發(fā)科技(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 連接子系統(tǒng)  ? 藍(lán)牙 5.2 連接子系統(tǒng)  ? 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 開發(fā) SDK 及多個范例專案,縮短開發(fā)時程 注一: HiFi4 DSP, USB 2.0 為 MT7933 支援之功能。




        關(guān)鍵詞: MTK Genio 130 ChatGPT

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 延寿县| 祁连县| 西华县| 陇南市| 和田县| 永康市| 都安| 上犹县| 德格县| 屯留县| 平度市| 邹平县| 盐边县| 云安县| 大悟县| 太康县| 宝丰县| 辽阳县| 安泽县| 镇安县| 乌兰县| 揭西县| 枞阳县| 迁安市| 东兰县| 新民市| 宜君县| 奉贤区| 西昌市| 富锦市| 沙坪坝区| 商河县| 天峨县| 佳木斯市| 盐源县| 和静县| 滁州市| 铜梁县| 丰顺县| 筠连县| 黄平县|