博客專欄

        EEPW首頁 > 博客 > 聆思CSK6大模型語音控制風(fēng)扇(上)

        聆思CSK6大模型語音控制風(fēng)扇(上)

        發(fā)布人:ListenAI 時間:2024-08-09 來源:工程師 發(fā)布文章
        前言

        本文介紹如何實現(xiàn)大模型+語音交互對風(fēng)扇實現(xiàn)開關(guān)控制,示例使用的硬件是聆思CSK6大模型開發(fā)板,大模型接的是星火大模型。本文將先詳細(xì)介紹大模型云端從獲取交互語音到下發(fā)控制指令的全過程,包括整合上下文、配置提示詞、語義意圖分類、提取關(guān)鍵信息以及控制指令的執(zhí)行等關(guān)鍵環(huán)節(jié)。


        語音控制風(fēng)扇云端流程配置創(chuàng)建應(yīng)用

        登錄LSplatform,創(chuàng)建新應(yīng)用


        下載工程示例:風(fēng)扇控制.json

        導(dǎo)入工程示例:點擊右上角”≡“找到”導(dǎo)入“


        點擊之后選擇”導(dǎo)入節(jié)點文件”,導(dǎo)入下載的”風(fēng)扇控制.json“示例工程文件


        二、示例工程講解

        流程分為主要兩個部分,第一部分為進(jìn)行語音交互,將用戶的語音輸入識別為文字后利用第一個提示詞節(jié)點(分類提示詞),將用戶的語音命令進(jìn)行意圖分類。



        第二部分是根據(jù)前面的意圖識別結(jié)果進(jìn)行多分支處理。畫圖(第一個分支)的分支是調(diào)用星火大模型的文生圖功能生成圖片。風(fēng)扇控制(第二個分支)的分支是再次利用提示詞(控制風(fēng)扇提示詞)調(diào)用星火大模型從用戶的語音內(nèi)容中提取關(guān)鍵的控制信息,如“打開/關(guān)閉風(fēng)扇”控制gpio上下電來實現(xiàn)控制風(fēng)扇狀態(tài),最后一個分支是閑聊分支是用于完成語音的基本問答功能。


        三、  關(guān)鍵節(jié)點講解第一部分


        第一部分主要講解提示詞語義改寫落域結(jié)果判斷部分

        提示詞(分類提示詞)


        按照提示詞的一般設(shè)計原則,首先要對大模型進(jìn)行角色設(shè)定(“你是一個分類專家”)。然后對其進(jìn)行任務(wù)設(shè)定(“你需要將用戶的句子歸為“風(fēng)扇控制”、“畫畫”、“閑聊”中的一類”)。接下來就是給大模型一些例子進(jìn)行學(xué)習(xí)理解以提高分類的準(zhǔn)確性。

        語義改寫

        語義改寫可以幫我們改寫用戶的問題,當(dāng)有多輪提問的時候,使用語義改寫可以將用戶的多個問題改寫成一個完整的問題,提高流程的處理效果。

        當(dāng)判斷到有歷史對話時,語義改寫節(jié)點會整合用戶的多個問題為一個完整問題,再傳到提示詞節(jié)點進(jìn)行分類。

        當(dāng)判斷到?jīng)]有歷史對話時,直接會傳到提示詞節(jié)點進(jìn)行分類。

        落域結(jié)果判斷

        這里有三個落域,分別是畫畫控制GPIO閑聊三個落域,它會通過前面的分類提示詞來判斷是哪個落域,每個落域?qū)?yīng)不同的分支,如要再增添落域,點擊左下角”添加“即可


        第二部分



        前置處理函數(shù)、后置處理函數(shù)都是使用function節(jié)點來編寫javascript代碼,其主要作用

        前置處理:主要用來提取上一個節(jié)點的輸出參數(shù)轉(zhuǎn)換或組裝成下一個節(jié)點的輸入?yún)?shù)

        后置處理:主要用來提取上一個節(jié)點的輸出參數(shù)生成語音播放內(nèi)容以及NLP結(jié)果推送給端側(cè),會比前置處理單純提取參數(shù)復(fù)雜一些。


        第二部分我們只看第二條分支(風(fēng)扇分支),前置處理與”閑聊”的前置處理相同,直接照抄即可。這里關(guān)鍵講解“提示詞”與“后置處理”節(jié)點

        風(fēng)扇控制提示詞

        風(fēng)扇控制的提示詞的作用是從用戶的命令中提取關(guān)鍵信息(打開/關(guān)閉)來實現(xiàn)并返回風(fēng)扇狀態(tài)的十進(jìn)制值,打開即為“1”,關(guān)閉即為“0”,采用自然語言處理(NLP)比采用通配符匹配有更好的識別效果


        風(fēng)扇控制后置處理節(jié)點

        后置處理這里分為設(shè)置語音提示、創(chuàng)建數(shù)據(jù)模板、獲取用戶指令、識別指令、執(zhí)行操作、構(gòu)造消息發(fā)送反饋和日志打印,這里主要部分為創(chuàng)建數(shù)據(jù)模板、獲取用戶指令、識別指令、執(zhí)行操作。

        創(chuàng)建數(shù)據(jù)模板

        數(shù)據(jù)模板是用于告訴系統(tǒng)我們想要執(zhí)行什么操作。模板里包含了一個意圖(“SET")和一個結(jié)果列表,這個列表里包含了一個ID,一個類型("integer",表示我們用的是整數(shù)),和一個值(初始設(shè)為0,代表風(fēng)扇是關(guān)閉的)。不建議直接修改。

        獲取用戶指令

        系統(tǒng)會通過讀取msg.payload來獲取用戶指令,這里面包含了用戶的輸入。不需修改。

        識別指令

        系統(tǒng)會檢查用戶說了什么,如果用戶說“打開風(fēng)扇”,系統(tǒng)就設(shè)置一個值為1(代表風(fēng)扇打開),并準(zhǔn)備說“風(fēng)扇已打開”。如果用戶說“關(guān)閉風(fēng)扇”,系統(tǒng)就設(shè)置值為0(代表風(fēng)扇關(guān)閉)

        并準(zhǔn)備說“風(fēng)扇已關(guān)閉”。如果用戶說的系統(tǒng)沒聽懂,就準(zhǔn)備一句“很抱歉,我沒有明白您的指令,請再說一遍”。

        執(zhí)行操作

        如果系統(tǒng)識別了用戶的指令,把值設(shè)置為GPIO的值(1或0),然后準(zhǔn)備發(fā)送語音提示。

        另外,正常情況下,節(jié)點將產(chǎn)生兩個數(shù)據(jù),其中nluMsg是一個JSON字符串,發(fā)送給開發(fā)板進(jìn)行數(shù)據(jù)處理,其格式是由intentTemplate變量定義的,修改時要注意不要出錯。而ttsMsg是發(fā)給TTS合成語音節(jié)點的,生成語音數(shù)據(jù)發(fā)送給開發(fā)板直接進(jìn)行播放。



        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: 人工智能

        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 永清县| 广丰县| 青海省| 平山县| 隆子县| 湖南省| 乌拉特后旗| 金乡县| 措美县| 阿图什市| 龙泉市| 恩施市| 凌云县| 普洱| 香港| 广昌县| 东方市| 香格里拉县| 即墨市| 丹江口市| 永州市| 凌源市| 正蓝旗| 武川县| 巴马| 宝丰县| 库车县| 郁南县| 清徐县| 鄄城县| 湟中县| 嘉兴市| 邮箱| 永修县| 赫章县| 麦盖提县| 龙游县| 临邑县| 西平县| 东平县| 长沙县|