最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

釋放 OpenAI 和 ESP-BOX 的力量:ChatGPT 與樂(lè)鑫 SoC 融合指南

2023-06-13 18:12 作者:樂(lè)鑫信息科技  | 我要投稿

當(dāng)前,我們正見(jiàn)證著一場(chǎng)技術(shù)革命,而 OpenAI 正處于這場(chǎng)變革的最前沿。其中最激動(dòng)人心的創(chuàng)新之一就是ChatGPT,它運(yùn)用自然語(yǔ)言處理的力量,打造出更加引人入勝、直觀的用戶體驗(yàn)。而將 OpenAI 的 API 與物聯(lián)網(wǎng)設(shè)備相結(jié)合,更是為我們打開(kāi)了無(wú)限可能。

本文將探索 ChatGPT 與 ESP-BOX 的潛力,這對(duì)強(qiáng)大的組合可以將物聯(lián)網(wǎng)設(shè)備提升到一個(gè)新的水平。?

?本文主要分為三個(gè)部分,分別介紹本項(xiàng)目的關(guān)鍵內(nèi)容:

  • 第一部分將詳細(xì)介紹 ESP-BOX,闡述其功能和特點(diǎn)。

  • 第二部分為案例研究,描述如何從零開(kāi)始一步步構(gòu)建項(xiàng)目。

  • 最后一部分為總結(jié),提供了相關(guān)資料的來(lái)源,便于您鞏固和加深對(duì)本項(xiàng)目的了解和理解。 (文末鏈接)

ESP-BOX 簡(jiǎn)介?

ESP-BOX 是新一代 AIoT 開(kāi)發(fā)平臺(tái),包含 ESP32-S3-BOX 和 ESP32-S3-BOX-Lite 開(kāi)發(fā)板,二者搭載 ESP32-S3 Wi-Fi + Bluetooth 5 (LE) SoC,為開(kāi)發(fā)集成各種傳感器、控制器和網(wǎng)關(guān)的 AIoT 應(yīng)用提供了靈活可定制的解決方案。?

ESP32-S3-BOX

ESP-BOX 擁有豐富的功能,使其成為理想的 AIoT 開(kāi)發(fā)平臺(tái)。 接下來(lái)將為您介紹其中一些關(guān)鍵功能:

1. 雙麥克風(fēng)遠(yuǎn)場(chǎng)語(yǔ)音互動(dòng)

ESP-BOX 支持雙麥克風(fēng)遠(yuǎn)場(chǎng)語(yǔ)音互動(dòng),實(shí)現(xiàn)與設(shè)備遠(yuǎn)距離互動(dòng)。?

2. 離線中英文語(yǔ)音指令識(shí)別,識(shí)別率高

ESP-BOX 提供離線的中英文語(yǔ)音指令識(shí)別,具有高識(shí)別率,可輕松開(kāi)發(fā)支持語(yǔ)音的設(shè)備。?

3. 200+ 中英文語(yǔ)音指令可重新配置

開(kāi)發(fā)人員可根據(jù)需求輕松配置 200 多個(gè)中英文語(yǔ)音指令。?

4. 持續(xù)識(shí)別和喚醒中斷

ESP-BOX 支持持續(xù)識(shí)別和喚醒中斷,確保設(shè)備始終做好接收語(yǔ)音指令的準(zhǔn)備。?

5. 靈活可復(fù)用的 GUI 框架

ESP-BOX 配備靈活可復(fù)用的 GUI 框架,讓開(kāi)發(fā)人員可以為應(yīng)用程序創(chuàng)建個(gè)性化的用戶界面。?

6. 端到端的 AIoT 開(kāi)發(fā)框架 ESP-RainMaker

ESP-BOX 基于端到端的AIoT 開(kāi)發(fā)框架 ESP-RainMaker,為開(kāi)發(fā)人員提供創(chuàng)建強(qiáng)大智能設(shè)備所需的工具。?

7. 兼容 Pmod? 接口,支持外設(shè)模塊擴(kuò)展

ESP-BOX 具備兼容 Pmod? 的接口,可輕松擴(kuò)展設(shè)備功能,與各種外設(shè)模塊互動(dòng)無(wú)障礙。?

案例研究?

本案例使用 ESP-BOX 和 OpenAI API 開(kāi)發(fā)一款語(yǔ)音控制的聊天機(jī)器人 (chatbot)。?

介紹?

本案例將介紹如何使用 ESP-BOX 和 OpenAI API 開(kāi)發(fā)一款語(yǔ)音控制的聊天機(jī)器人。該系統(tǒng)可以接收用戶的語(yǔ)音指令,將其展示在屏幕上,并調(diào)用 OpenAI API 進(jìn)行處理,生成相應(yīng)的回復(fù)?;貜?fù)將顯示在 ESP-BOX 屏幕上,然后播放出來(lái)。我們將按照下文中的開(kāi)發(fā)流程,逐步深入了解如何巧妙地融合這些技術(shù),打造出高效的語(yǔ)音控制聊天機(jī)器人。?


案例研究的開(kāi)發(fā)流程

環(huán)境設(shè)置?

為了避免錯(cuò)誤,需設(shè)置合適的環(huán)境并安裝正確的軟件版本。?

  • ESP-IDF?

在本示例中,我們將使用 ESP-IDF 5.0 版本(主分支)。如果你需要關(guān)于如何設(shè)置 ESP-IDF 的指導(dǎo),請(qǐng)參考官方《ESP-IDF 編程指南》了解更多信息。?

*截至撰寫(xiě)本文時(shí),IDF 提交頭為 df9310ada2。?

  • ChatGPT API?

ChatGPT 是一個(gè)基于 GPT-3.5 架構(gòu)的強(qiáng)大語(yǔ)言模型,要使用 ChatGPT,請(qǐng)先前往 OpenAI 平臺(tái)上創(chuàng)建賬戶,獲取免費(fèi)或付費(fèi)的 API 密鑰。通過(guò) API 密鑰,可獲取很多功能和能力,例如自然語(yǔ)言處理與生成、文本補(bǔ)全以及對(duì)話建模等,還可根據(jù)自己的需求定義這些功能。更多信息請(qǐng)?jiān)L問(wèn)官方 API 參考。?

*請(qǐng)務(wù)必保障 API 密鑰的機(jī)密性和安全性,防止未經(jīng)授權(quán)訪問(wèn)您的賬戶和數(shù)據(jù)。?

賦能離線語(yǔ)音識(shí)別?

樂(lè)鑫開(kāi)發(fā)的創(chuàng)新性語(yǔ)音識(shí)別框架 ESP-SR 能夠使設(shè)備在不依賴外部云服務(wù)的情況下識(shí)別口語(yǔ)詞匯和短語(yǔ),因此非常適合離線語(yǔ)音識(shí)別應(yīng)用。?

ESP-SR 框架包含多個(gè)模塊,包括音頻前端 (AFE)、喚醒詞引擎 (WakeNet)、語(yǔ)音指令詞識(shí)別 (MultiNet) 和語(yǔ)音合成(目前僅支持中文)。請(qǐng)查閱 ESP-SR 官方文檔獲取更多信息。 ?

集成 OpenAI API?

OpenAI API 提供了許多功能,開(kāi)發(fā)人員可以利用這些功能來(lái)增強(qiáng)他們的應(yīng)用程序。我們的項(xiàng)目使用了音頻轉(zhuǎn)文本 API 和補(bǔ)全 API,以及基于 ESP-IDF 的 C 語(yǔ)言代碼。下文簡(jiǎn)要介紹我們所使用的代碼。?

  • 音頻轉(zhuǎn)文本?

我們使用 HTTPS 和 OpenAI 音頻 API 從音頻中提取文本,以下為實(shí)現(xiàn)代碼。?

這段代碼是一個(gè)名為 whisper_from_record 的函數(shù),它接受一個(gè)指向包含音頻數(shù)據(jù)的緩沖區(qū)的指針和一個(gè)表示音頻數(shù)據(jù)長(zhǎng)度的整數(shù) audio_len。該函數(shù)向 OpenAI API 端點(diǎn)發(fā)送一個(gè) POST 請(qǐng)求,對(duì)給定的音頻數(shù)據(jù)進(jìn)行轉(zhuǎn)錄。?

該函數(shù)首先初始化 OpenAI API 的 URL,并使用持有者令牌 (bearer token) 的OPENAI_API_KEY 設(shè)置授權(quán)頭。然后,配置并初始化 HTTP 客戶端,包括配置 URL、HTTP 方法、事件處理程序、緩沖區(qū)大小、超時(shí)和 SSL 證書(shū)等。?

接下來(lái),將內(nèi)容類型 (content type) 和多部分表單數(shù)據(jù) (multipart/form_data) 請(qǐng)求的邊界字符串設(shè)置為 HTTP 客戶端的頭部,還設(shè)置了文件數(shù)據(jù)和文件大小,并構(gòu)建了一個(gè)多部分表單數(shù)據(jù)請(qǐng)求。使用 malloc() 函數(shù)分配 form_data 緩沖區(qū),并添加必要的信息,包括音頻文件的文件名、內(nèi)容類型、文件內(nèi)容以及將用于轉(zhuǎn)錄的模型名稱。?

一旦構(gòu)建了 form_data,它就被設(shè)置為 HTTP 客戶端的 POST 字段,并且客戶端將 POST 請(qǐng)求發(fā)送到 OpenAI API 端點(diǎn)。如果請(qǐng)求過(guò)程中出現(xiàn)錯(cuò)誤,該函數(shù)會(huì)記錄錯(cuò)誤消息。最后,清理 HTTP 客戶端,并釋放為 form_data 分配的資源。?

該函數(shù)返回一個(gè) esp_err_t 錯(cuò)誤代碼,指示 HTTP 請(qǐng)求是否成功。?

  • 聊天補(bǔ)全?

我們使用 OpenAI 聊天補(bǔ)全 (Chat Completion) API 發(fā)送 HTTPS 請(qǐng)求來(lái)進(jìn)行聊天補(bǔ)全。這個(gè)過(guò)程使用 create_chatgpt_request 函數(shù),該函數(shù)接受一個(gè)表示輸入文本的 content 參數(shù),并將參數(shù)內(nèi)容輸入 GPT-3.5 模型。?

該函數(shù)首先設(shè)置了用于 HTTP POST 請(qǐng)求的 URL、模型和頭部信息,然后創(chuàng)建一個(gè)包含模型、最大 token 數(shù)和內(nèi)容的 JSON 負(fù)載。?

接下來(lái),函數(shù)設(shè)置了 HTTP 請(qǐng)求的頭部信息,并將 JSON 負(fù)載設(shè)置為請(qǐng)求的 POST 字段。

使用 esp_http_client_perform() 發(fā)送 HTTP POST 請(qǐng)求,如果請(qǐng)求失敗,將記錄錯(cuò)誤消息。?

最后,清理 HTTP 客戶端并返回錯(cuò)誤代碼。?

  • 處理響應(yīng)?

ESP-IDF HTTP 客戶端庫(kù)使用回調(diào)函數(shù) response_handler 來(lái)處理在 HTTP 請(qǐng)求/響應(yīng)交換過(guò)程中發(fā)生的事件。?

在 HTTP_EVENT_ON_DATA 事件發(fā)生時(shí),該函數(shù)為接收到的數(shù)據(jù)分配內(nèi)存空間,將數(shù)據(jù)復(fù)制到緩沖區(qū),并相應(yīng)地增加 data_len 變量的值。這樣做是為了累積響應(yīng)數(shù)據(jù)。?

在 HTTP_EVENT_ON_FINISH 事件發(fā)生時(shí),該函數(shù)打印一條消息,指示 HTTP 交換已完成,然后調(diào)用 parsing_data 函數(shù)來(lái)處理累積的原始數(shù)據(jù),釋放內(nèi)存并將數(shù)據(jù)和 data_len 變量重置為零,釋放分配的內(nèi)存并將緩沖區(qū)及其長(zhǎng)度重置為零。?

最后,該函數(shù)返回 ESP_OK,表示操作成功。?

  • 解析原始數(shù)據(jù)

我們使用 JSON 解析器組件解析從 ChatGPT API 和 Whisper AI API 獲取的 HTTPS 原始響應(yīng)。為了完成這個(gè)任務(wù),我們使用一個(gè)調(diào)用解析器組件的函數(shù)。有關(guān)該工具的更多細(xì)節(jié),請(qǐng)參考 GitHub。?

集成 TTS API?

目前,OpenAI 并未公開(kāi)提供其文本轉(zhuǎn)語(yǔ)音 (TTS) API 的訪問(wèn)權(quán)限。然而,市面上有多種其他的 TTS API 可供選擇,包括 Voicerss、TTSmaker會(huì)話精靈 (TalkingGenie)。這些 API 可以根據(jù)文本輸入生成語(yǔ)音,你可以在它們的網(wǎng)站上找到更多相關(guān)信息。?

本教程使用的是 TalkingGenie API,它是目前可用的最佳選擇之一,可以生成高質(zhì)量、自然流暢的英文和中文語(yǔ)音。TalkingGenie 的一個(gè)特點(diǎn)是它能夠無(wú)縫地將混合語(yǔ)言文本(如中文和英文)轉(zhuǎn)化為語(yǔ)音。這對(duì)于面向全球受眾的內(nèi)容創(chuàng)作來(lái)說(shuō)是一個(gè)寶貴的工具。下面的代碼將 ChatGPT 生成的文本響應(yīng)發(fā)送給 TalkingGenie API,然后通過(guò) ESP-BOX 播放生成的語(yǔ)音。?

函數(shù) text_to_speech 接受一個(gè)消息字符串和 AUDIO_CODECS_FORMAT 參數(shù)作為輸入。消息字符串是將被合成為語(yǔ)音的文本,而 AUDIO_CODECS_FORMAT 參數(shù)指定語(yǔ)音應(yīng)該以 MP3 還是 WAV 格式進(jìn)行編碼。?

該函數(shù)首先使用 url_encode 函數(shù)對(duì)消息字符串進(jìn)行編碼,將一些非有效字符替換為相應(yīng)的 ASCII 代碼,然后將該代碼轉(zhuǎn)換為兩位十六進(jìn)制格式。接下來(lái)為生成的編碼字符串分配內(nèi)存,檢查 AUDIO_CODECS_FORMAT 參數(shù),并設(shè)置適當(dāng)?shù)木幗獯a器格式字符串,用于 url。?

然后,函數(shù)確定 TalkingGenie API 的 GET 請(qǐng)求需要多大的 url 緩沖區(qū),并分配相應(yīng)的內(nèi)存給 url 緩沖區(qū)。然后,將適當(dāng)?shù)膮?shù)寫(xiě)入 url 字符串,包括 voiceId(指定要使用的語(yǔ)音)、編碼的文本、語(yǔ)音的速度和音量以及音頻類型 (MP3 或 WAV)。?

接下來(lái),函數(shù)使用 url 和其他配置參數(shù)設(shè)置 esp_http_client_config_t 結(jié)構(gòu)體,并使用該結(jié)構(gòu)體初始化 esp_http_client_handle_t,然后使用 esp_http_client_perform 向 TalkingGenie API 發(fā)送 GET 請(qǐng)求。如果請(qǐng)求成功,函數(shù)返回 ESP_OK,否則返回錯(cuò)誤代碼。?

最后,函數(shù)釋放為 url 緩沖區(qū)和編碼消息分配的內(nèi)存,清理 esp_http_client_handle_t,并返回錯(cuò)誤代碼。?

  • 處理 TTS 響應(yīng)?

類似地,回調(diào)函數(shù) http_event_handler 可用于處理在 HTTP 請(qǐng)求/響應(yīng)交換過(guò)程中發(fā)生的事件。?

HTTP_EVENT_ON_DATA 事件用于處理從服務(wù)器接收到的音頻數(shù)據(jù)。音頻數(shù)據(jù)存儲(chǔ)在名為 record_audio_buffer 的緩沖區(qū)中,接收到的音頻數(shù)據(jù)的總長(zhǎng)度存儲(chǔ)在名為 file_total_len 的變量中。如果接收到的音頻數(shù)據(jù)的總長(zhǎng)度小于預(yù)定義的 MAX_FILE_SIZE,則將數(shù)據(jù)復(fù)制到 record_audio_buffer 中。?

最后,HTTP_EVENT_ON_FINISH 事件用于處理 HTTP 響應(yīng)的結(jié)束。在這種情況下,將 record_audio_buffer 傳遞給名為 audio_player_play 的函數(shù),用于播放音頻。?

顯示?

我們使用 LVGL 實(shí)現(xiàn)顯示功能。LVGL 是一個(gè)開(kāi)源的嵌入式圖形庫(kù),因其強(qiáng)大且具有視覺(jué)吸引力的特性和低內(nèi)存占用而日益受到歡迎。LVGL 還發(fā)布了一個(gè)名為 SquareLine Studio 的可視化拖放式 UI 編輯器。這是一個(gè)強(qiáng)大的工具,可幫助你輕松為應(yīng)用程序創(chuàng)建美觀的圖形界面。?

您可以使用樂(lè)鑫提供的官方軟件包管理工具將 LVGL 集成到項(xiàng)目中,該工具可直接將 LVGL 和相關(guān)的移植組件添加到項(xiàng)目中,極大程度地節(jié)省了時(shí)間和精力。有關(guān)更多信息,請(qǐng)參閱官方博客文檔。?


總結(jié)?

?OpenAI 的 ChatGPT 與樂(lè)鑫的 ESP-BOX 的完美融合,為創(chuàng)造強(qiáng)大而智能的物聯(lián)網(wǎng)設(shè)備開(kāi)創(chuàng)了新可能。ESP-BOX 提供靈活且可定制的 AIoT 開(kāi)發(fā)平臺(tái),擁有遠(yuǎn)場(chǎng)語(yǔ)音交互、離線語(yǔ)音命令識(shí)別和可復(fù)用的 GUI 框架等功能。當(dāng)這些功能與 OpenAI API 相結(jié)合時(shí),開(kāi)發(fā)者們即可打造語(yǔ)音控制的聊天機(jī)器人,提升物聯(lián)網(wǎng)應(yīng)用的用戶體驗(yàn)。?

ESP-BOX 聊天機(jī)器人展示

您可以查看樂(lè)鑫?GitHub 倉(cāng)庫(kù),獲取更多有關(guān) ESP-IoT-SolutionESP-SR ESP-BOX 的開(kāi)源案例。在 ESP-BOX 倉(cāng)庫(kù)的 examples 文件夾找到該項(xiàng)目的源代碼。未來(lái),我們計(jì)劃引入一個(gè)用于 OpenAI API 的組件,以便為用戶提供更多功能。?


相關(guān)資源

  • ESP-BOX

    https://github.com/espressif/esp-box

  • ESP32-S3

    https://products.espressif.com/#/product-selector?names=&filter=%7B%22Series%22%3A%5B%22ESP32-S3%22%5D%7D

  • 《ESP-IDF 編程指南》

    https://docs.espressif.com/projects/esp-idf/zh_CN/release-v5.0/esp32/index.html

  • OpenAI 平臺(tái)

    https://openai.com/

  • OpenAI API 參考

    https://platform.openai.com/docs/api-reference/introduction

  • ESP-SR

    https://github.com/espressif/esp-sr

  • ESP-SR 用戶指南

    https://docs.espressif.com/projects/esp-sr/zh_CN/latest/esp32/index.html

  • JSON 解析器組件

    https://components.espressif.com/components/espressif/json_parser

  • JSON Parser Github

    https://github.com/espressif/json_parser

  • Voicerss

    https://voicerss.org/api/

  • TTSmaker 和會(huì)話精靈?(TalkingGenie)

    https://www.talkinggenie.com/tts

  • SquareLine Studio

    https://squareline.io/

  • 樂(lè)鑫官方軟件包管理工?(LVGL)

    https://components.espressif.com/components/lvgl/lvgl

  • LVGL 相關(guān)博客

    https://blog.espressif.com/making-the-fancy-user-interface-on-esp-has-never-been-easier-e44e79c0ae3

  • LVGL 官方文檔

    https://docs.lvgl.io/master/index.html

  • 樂(lè)鑫?GitHub 倉(cāng)庫(kù)

    https://github.com/orgs/espressif/repositories

  • ESP-IoT-Solution

    https://github.com/espressif/esp-iot-solution

  • ESP-BOX

    https://github.com/espressif/esp-box


釋放 OpenAI 和 ESP-BOX 的力量:ChatGPT 與樂(lè)鑫 SoC 融合指南的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
五河县| 聂荣县| 毕节市| 滦南县| 肃北| 娱乐| 梁平县| 南阳市| 浦城县| 洪洞县| 五家渠市| 名山县| 麻城市| 资溪县| 吉林省| 哈密市| 南漳县| 肥乡县| 利津县| 岫岩| 岳阳市| 房山区| 湘阴县| 遵义县| 东丰县| 天全县| 普格县| 柳林县| 嘉禾县| 罗城| 岱山县| 炉霍县| 高邮市| 雅江县| 邛崃市| 时尚| 刚察县| 长岭县| 沾化县| 江永县| 盐边县|