小愛音箱接入大模型DeepSeek及TTS

簡介

????????相信看過鋼鐵俠的朋友們,都夢想擁有一個像賈維斯這樣全能的人工智能管家。而現在隨著AI的發展,這個愿景將隨我們越來越近。現階段,我們可以將小愛音箱接入DeepSeek,將其從“人工智障”進化成上知天文,下懂地理的半智能管家。

下面將逐步講解如何將小愛音箱接入DeepSeek并更換默認的音色為海綿寶寶。

一、Windows安裝Docker Desktop

????????Docker是一個開源的容器化平臺,旨在簡化應用程序的開發、部署和運行過程。它通過將應用程序及其所有依賴項打包成一個輕量級的、可移植的容器來實現這一目標。這些容器可以在任何支持Docker的系統上運行,確保應用程序在不同環境中以一致的方式運行?。

? ? ? ?因為Docker是基于Hyper-V虛擬化技術來運行的,因此我們在Windows上面安裝Docker Desktop之前,需要先開啟Hyper-V。

? ? ? ? 步驟:Windows設置 -> 應用 -> 程序和功能(右上角)-> 啟用或關閉Windows功能 -> 找到Hyper-V并打勾,點擊確認后將開始安裝Hyper-V(注意:安裝完成后需要重啟電腦,請保存相關文檔!!!

? ? ? ? 按照上述教程安裝好Hyper-V后,訪問Docker 官網Docker: Accelerated Container Application Development,下載安裝包。安裝包下載完畢后,就按默認方式就行安裝就行。

打開Docker Desktop,右上角設置,Docker Engine里面配置鏡像如下:

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.1panel.live","https://dockerpull.org","https://docker.1ms.run","https://lispy.org","https://dytt.online","https://func.ink","http://mirrors.ustc.edu.cn","http://mirror.azure.cn","https://docker.zhai.cm","https://a.ussh.net","https://docker.zhai.cm"]
}

右下角Terminal打開,輸入docker info,可查看配置信息。輸出沒問題的話,至此docker就安裝好了。

二、火山引擎注冊 - 在線推理

登錄?賬號登錄-火山引擎,搜索“火山方舟”

點擊“在線推理” -> “創建推理接入點”

如下圖,自己填寫基本信息,模型選擇這里有字節跳動的豆包,還有deepseek等等。我們選擇Deepseek-R1,然后點擊“確認接入”

開通模型并創建接入點后,查看API調用方法,需要保存如下三個信息:ID/model(即ep-xxxxx),API key,調用路徑(https://ark.cn-beijing.volces.com/api/v3)

三、下載mi-gpt并配置

? ? ? ? GitHub地址:?mi-gpt,可通過git clone或者直接download zip的方式下載(如果無法訪問的話,可以訪問國內鏡像 ffgithub-migpt)

git clone https://github.com/idootop/mi-gpt.git

? ? ? ? 項目下載好后,找到兩個example文件".env"以及".migpt.js",后續將配置這兩個文件。

.env配置說明:
  • OPENAI_MODEL:填上面保存的model ID,即ep-xxxxx那串
  • OPENAI_API_KEY: 填上面保存的API key的值
  • OPENAI_BASE_URL:填調用路徑(https://ark.cn-beijing.volces.com/api/v3)
.migpt.js配置說明

具體的配置說明見下方樣例,里面有注釋。

// 注意:如果你是使用 Docker 啟動,配置文件更新后需要重啟 Docker 才會生效。
// 若重啟后仍未生效(比如:修改名稱簡介),請刪除舊的 Docker 實例后重新創建。// 小愛音箱扮演角色的簡介
const botProfile = `
性別:男
姓名:海綿寶寶
出自:美國動畫《海綿寶寶》
性格:幽默風趣,活潑可愛
`.trim();// 小愛音箱主人(你)的簡介
const masterProfile = `
性別:男
姓名:派大星
出自:美國動畫《海綿寶寶》
性格:憨厚老實
其他:是海綿寶寶的好朋友。
`.trim();// 系統 Prompt 模板,可以更靈活的控制 AI 的各種行為規則,和是否需要攜帶上下文等
const systemTemplate = `
請重置所有之前的上下文、文件和指令。現在,你將扮演一個名為{{botName}}的角色,使用第一人稱視角回復消息。## 關于你
你的名字是{{botName}}。下面是你的個人簡介:
<start>
{{botProfile}}
</end>## 你的對話伙伴
你正在與{{masterName}}進行對話。這是關于{{masterName}}的一些信息:
<start>
{{masterProfile}}
</end>## 你們的群組
你和{{masterName}}所在的群組名為{{roomName}}。這是群組的簡介:
<start>
{{roomIntroduction}}
</end>## 聊天歷史回顧
為了更好地接入對話,請回顧你們之間的最近幾條消息:
<start>
{{messages}}
</end>## 短期記憶
你可以記住一些短期內的細節,以便更緊密地貼合話題:
<start>
{{shortTermMemory}}
</end>## 長期記憶
你還保留著一些長期的記憶,這有助于讓你的對話更加豐富和連貫:
<start>
{{longTermMemory}}
</end>## 回復指南
在回復{{masterName}}時,請遵循以下準則:
- 認為自己正是{{botName}},擁有獨立的個性、興趣和愛好。
- 根據你的性格特點、說話風格和興趣愛好與{{masterName}}進行交流。
- 保持對話輕松友好,回復簡潔有趣,同時耐心傾聽和關心對方。
- 參考雙方的個人簡介、聊天記錄和記憶中的信息,確保對話貼近實際,保持一致性和相關性。
- 如果對某些信息不確定或遺忘,誠實地表達你的不清楚或遺忘狀態,避免編造信息。## Response format
請遵守下面的規則
- Response the reply message in Chinese。
- 不要在回復前面加任何時間和名稱前綴,請直接回復消息文本本身。Good example: "我是{{botName}}"
Bad example: "2024年02月28日星期三 23:01 {{botName}}: 我是{{botName}}"## 開始
請以{{botName}}的身份,直接回復{{masterName}}的新消息,繼續你們之間的對話。
`.trim();export default {systemTemplate,bot: {name: "海綿寶寶",profile: botProfile,},master: {name: "派大星",profile: masterProfile,},speaker: {/*** 🏠 賬號基本信息*/// 小米 IDuserId: "123456789", // 注意:不是手機號或郵箱,請在「個人信息」-「小米 ID」查看// 賬號密碼password: "pwd123",// 小愛音箱 DID 或在米家中設置的名稱did: "小米AI音箱", // 注意空格、大小寫和錯別字(音響 👉 音箱)/*** 💡 喚醒詞與提示語*/// 當消息以下面的關鍵詞開頭時,會調用 AI 來回復消息callAIKeywords: ["請", "你", "海綿寶寶"],// 當消息以下面的關鍵詞開頭時,會進入 AI 喚醒狀態wakeUpKeywords: ["打開", "進入", "召喚"],// 當消息以下面的關鍵詞開頭時,會退出 AI 喚醒狀態exitKeywords: ["關閉", "退出", "再見"],// 進入 AI 模式的歡迎語onEnterAI: ["你好,派大星。"], // 設為空數組時可關閉提示語// 退出 AI 模式的提示語onExitAI: ["再見,派大星。"], // 為空時可關閉提示語// AI 開始回答時的提示語onAIAsking: ["你準備好了嗎?"], // 為空時可關閉提示語// AI 結束回答時的提示語onAIReplied: ["派大星,你還有其他問題嗎"], // 為空時可關閉提示語// AI 回答異常時的提示語onAIError: ["誰準備好了,我準備好了。"], // 為空時可關閉提示語/*** 🧩 MIoT 設備指令** 常見型號的配置參數 👉 https://github.com/idootop/mi-gpt/issues/92*/// TTS 指令,請到 https://home.miot-spec.com 查詢具體指令ttsCommand: [5, 1],// 設備喚醒指令,請到 https://home.miot-spec.com 查詢具體指令wakeUpCommand: [5, 3],// 查詢是否在播放中指令,請到 https://home.miot-spec.com 查詢具體指令// playingCommand: [3, 1, 1], // 默認無需配置此參數,查詢播放狀態異常時再嘗試開啟/*** 🔊 TTS 引擎*/// TTS 引擎 --默認xiaoaitts: "xiaoai",// 切換 TTS 引擎發言人音色關鍵詞,只有配置了第三方 TTS 引擎時才有效// switchSpeakerKeywords: ["把聲音換成"], // 以此關鍵詞開頭即可切換音色,比如:把聲音換成 xxx/*** 💬 連續對話** 查看哪些機型支持連續對話 👉 https://github.com/idootop/mi-gpt/issues/92*/// 是否啟用連續對話功能,部分小愛音箱型號無法查詢到正確的播放狀態,需要關閉連續對話streamResponse: true,// 連續對話時,無響應多久后自動退出exitKeepAliveAfter: 30, // 默認 30 秒,建議不要超過 1 分鐘// 連續對話時,下發 TTS 指令多長時間后開始檢測設備播放狀態(默認 3 秒)checkTTSStatusAfter: 5, // 當小愛長文本回復被過早中斷時,可嘗試調大該值// 連續對話時,播放狀態檢測間隔(單位毫秒,最低 500 毫秒,默認 1 秒)checkInterval: 1000, // 調小此值可以降低小愛回復之間的停頓感,請酌情調節/*** 🔌 其他選項*/// 是否啟用調試debug: false, // 一般情況下不要打開// 是否跟蹤 Mi Service 相關日志(打開后可以查看設備 did)enableTrace: false, // 一般情況下不要打開// 網絡請求超時時長(單位毫秒,默認 5 秒)timeout: 5000,},
};

四、部署migpt至docker

".env"以及".migpt.js"配置好后,我們就可以在docker中部署migpt了(注意:小愛音箱需要跟電腦處于同一網絡下面)

打開Terminal,運行以下指令,注意路徑需要更換成你自己的

docker run -d --env-file F:/projects/mi-gpt-main/.env -v F:/projects/mi-gpt-main/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest

然后我們在images及containers可以看到有對應的實例生產出來了。

五、測試

1.?streamResponse連續對話功能關閉的情況

音頻就不發了,log如下

2.?streamResponse連續對話功能打開的情況

修改streamResponse為true,并重新部署

六、TTS(Text To Speech)

詳細可參考:https://github.com/idootop/mi-gpt-tts/blob/main/docs/mi-gpt.md

1. 火山引擎搜索“語音合成”,選擇“語音技術”,創建應用,可參考如下(要勾選語音合成)

創建好后,在“語音技術” -> “語音合成” 里面找到并保存自己的APP ID以及Access Token

2.??下載mi-gpt-tts

GitHub地址:mi-gpt-tts, 可通過git clone或者直接download zip的方式下載(如果無法訪問的話,可以訪問國內鏡像 ffgithub-mi-gpt-tts)

git clone https://github.com/idootop/mi-gpt-tts.git

3. 配置mi-gpt-tts的env文件

重命名本項目根目錄下的 .env.example 文件為 .env。

然后,將里面的環境變量修改成你自己的,參數含義如下:

環境變量名稱描述示例
VOLCANO_TTS_APP_ID火山引擎語音合成 APP ID123456
VOLCANO_TTS_ACCESS_TOKEN火山引擎語音合成 Access Tokenxxxxxx
TTS_DEFAULT_SPEAKER(可選)默認音色名稱或 ID(查看完整音色列表和費用詳情)BV700_streaming
SECRET_PATH(可選)接口訪問秘密路徑,相當于訪問密碼。推薦長度大于 6,由字母、數字、- 和 _ 組成,為空時每次啟動隨機生成。Are-You-OK?(不要直接用這個!)

注意:出于安全考慮,從 v3.0.0 版本開始,訪問語音合成接口需要帶上?SECRET_PATH?防止他人盜刷接口。 如果?SECRET_PATH?環境變量為空,每次啟動服務則會生成隨機訪問密碼。

?樣例參考:

# 基礎配置
# SECRET_PATH=你的接口訪問秘密路徑,比如:are-you-ok(可選)
# 音色列表可查看: https://www.volcengine.com/docs/6561/97465
# BV063_streaming 是海綿寶寶的音色
TTS_DEFAULT_SPEAKER=BV063_streaming# 火山引擎,官方文檔:https://www.volcengine.com/docs/6561/79817
VOLCANO_TTS_APP_ID=123456789
VOLCANO_TTS_ACCESS_TOKEN=xxxxxxxxxxx
#VOLCANO_TTS_USER_ID=火山引擎賬號 ID(可選)# 微軟必應 Read Aloud,官方文檔:https://www.microsoft.com/zh-cn/edge/features/read-aloud
# EDGE_TTS_TRUSTED_TOKEN=你的必應 trust token,比如:6A5A-xxxx# OpenAI TTS,官方文檔:https://platform.openai.com/docs/guides/text-to-speech
# OPENAI_API_KEY=你的 OpenAI API Key,比如:sk-proj-xxxx
# OPENAI_TTS_MODEL=tts-1
# OPENAI_BASE_URL=https://api.openai.com/v1

4. 部署mi-gpt-tts

docker run -d --env-file F:/projects/mi-gpt-tts-main/.env -p 4322:3000 idootop/mi-gpt-tts:latest

注意:需要將路徑替換成自己的

5. 測試mi-gpt-tts

在測試之前,需要先打開cmd,輸入ipconfig查詢下本機的ip地址。

然后,在部署完成后,點進container可以看到有一個接口地址

把這個鏈接調整下:http://{本機的ip}:4322/d983911d/api/tts.mp3

在瀏覽器直接訪問這個鏈接,會出現一段音頻(你好,很高興認識你),說明部署成功了。

6. 修改mi-gpt默認的TTS引擎

更改.migpt.js中tts的參數為custom

修改.env中TTS_BASE_URL為上述的鏈接

7. 重新部署mi-gpt

docker run -d --env-file F:/projects/mi-gpt-main/.env -v F:/projects/mi-gpt-main/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest

8. 測試

migpt? log

migpt-tts log

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/76658.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76658.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/76658.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件架構評估利器:質量效用樹全解析

質量效用樹是軟件架構評估中的一種重要工具&#xff0c;它有助于系統地分析和評估軟件架構在滿足各種質量屬性方面的表現。以下是關于質量效用樹的詳細介紹&#xff1a; 一、定義與作用 質量效用樹是一種以樹形結構來表示軟件質量屬性及其相關效用的模型。它將軟件的質量目標…

[IEEE TIP 2024](cv即插即用模塊分享)IdeNet信息增強模塊 性能提升必備!

論文地址&#xff1a;https://ieeexplore.ieee.org/document/10661228 代碼地址&#xff1a;https://github.com/whyandbecause/IdeNet 什么是偽裝目標檢測&#xff08;COD&#xff09;&#xff1f; 偽裝目標檢測&#xff08;Camouflaged Object Detection, COD&#xff09;是…

biblatex 的 Biber 警告??:tex文件運行無法生成參考文獻和目錄

原因??&#xff1a;使用了 biblatex 管理參考文獻&#xff0c;但未運行 biber 生成參考文獻數據。 ??解決??&#xff1a;更新 LaTeX Workshop 配置 修改你的 settings.json&#xff0c;添加 biber 工具并更新編譯流程&#xff1a; {"latex-workshop.latex.tools&…

thingsboard3.9.1編譯問題處理

問題1&#xff1a; [ERROR] Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.12:invoke (default) on project http: Execution default of goal org.thingsboard:gradle-maven-plugin:1.0.12:invoke failed: Plugin org.thingsboard:gradle-maven-plugin:1.…

深入淺出Redis 緩存使用問題 | 長文分享

目錄 數據一致性 先更新緩存&#xff0c;后更新數據庫【一般不考慮】 先更新數據庫&#xff0c;再更新緩存【一般不考慮】 先刪除緩存&#xff0c;后更新數據庫 先更新數據庫&#xff0c;后刪除緩存【推薦】 怎么選擇這些方案&#xff1f;采用哪種合適&#xff1f; 緩存…

Express中間件(Middleware)詳解:從零開始掌握(2)

1. 請求耗時中間件的增強版 問題&#xff1a;原版只能記錄到控制臺&#xff0c;如何記錄到文件&#xff1f; 改進點&#xff1a; 使用process.hrtime()是什么&#xff1f;獲取更高精度的時間支持將日志寫入文件記錄更多信息(IP地址、狀態碼)工廠函數模式使中間件可配置 con…

如何設置Ubuntu服務器版防火墻

在Ubuntu服務器中&#xff0c;默認使用 ufw&#xff08;Uncomplicated Firewall&#xff09;作為防火墻管理工具。它是對iptables的簡化封裝&#xff0c;適合快速配置防火墻規則。以下是設置防火墻的詳細步驟&#xff1a; 1. 安裝與啟用 ufw 安裝&#xff08;通常已預裝&…

暢游Diffusion數字人(23):字節最新表情+動作模仿視頻生成DreamActor-M1

暢游Diffusion數字人(0):專欄文章導航 前言:之前有很多動作模仿或者表情模仿的工作,但是如果要在實際使用中進行電影級的復刻工作,僅僅表情或動作模仿還不夠,需要表情和動作一起模仿。最近字節跳動提出了一個表情+動作模仿視頻生成DreamActor-M1。 目錄 貢獻概述 核心動…

模型開發中的微調是干什么

在模型開發中&#xff0c;微調&#xff08;Fine-tuning&#xff09; 是指利用預訓練模型&#xff08;Pre-trained Model&#xff09;的參數作為初始值&#xff0c;在特定任務或數據集上進一步調整模型參數的過程。它是遷移學習&#xff08;Transfer Learning&#xff09;的核心…

vue3中,element-plus中el-select隱藏下拉箭頭

需求&#xff1a;el-select需要隱藏下拉箭頭 <el-select v-model"apply.dataType" readonly><el-option :key"1" label"樣品檢相同項目" :value"1" /><el-option :key"2" label"樣品檢不同項目" :…

英語學習4.9

cordial 形容詞&#xff1a; 熱情友好的&#xff0c;誠懇的 表示一個人態度溫和、親切&#xff0c;給人溫暖和善的感覺。 令人愉快的&#xff0c;和睦的 形容關系融洽、氛圍和諧。 例句??&#xff1a; The two leaders had a ??cordial?? but formal discussion. &am…

類似東郊到家的上門按摩預約服務系統小程序APP源碼全開源

&#x1f525; 為什么上門按摩正在席卷全國&#xff1f; 萬億藍海市場爆發 2024年中國按摩市場規模突破8000億&#xff0c;上門服務增速達65% 90后成消費主力&#xff0c;**72%**白領每月至少使用1次上門按摩&#xff08;數據來源&#xff1a;艾媒咨詢&#xff09; 傳統痛點…

驅動學習專欄--寫在前面

此專欄基于正點原子的文檔【正點原子】I.MX6U嵌入式Linux驅動開發指南V1.81 開發板為luckfox的rv1106開發板&#xff0c;之前參加過一個CM1相機的開源項目&#xff0c;與其吃灰不如作為一個學習的工具來發揮余熱 所以文檔中的一些東西需要對應的在rv1106平臺上做修改&#xff…

第二篇:Python函數與模塊化編程深度教程

第一章:函數定義與調用 1.1 函數基礎架構 1.1.1 函數定義規范 函數定義采用def關鍵字,遵循PEP8命名規范(小寫字母+下劃線) def calculate_circle_area(radius):"""計算圓的面積""" # 文檔字符串PI = 3.14159return PI * radius ?**? …

3.1.3.3 Spring Boot使用Filter組件

在Spring Boot中使用Filter組件&#xff0c;可以通過創建一個類實現Filter接口&#xff0c;并使用Component注解將其標記為Spring組件。通過Order注解可以指定過濾器的執行順序&#xff0c;數字越小優先級越高。在LoggingFilter類中&#xff0c;重寫init、doFilter和destroy方法…

目標追蹤Hyperspectral Adapter for Object Tracking based on Hyperspectral Video

論文作者&#xff1a;Long Gao,Yunhe Zhang,Langkun Chen,Yan Jiang,Weiying Xie,Yunsong Li 作者單位&#xff1a;Xidian University;the University of Sheffield 論文鏈接&#xff1a;http://arxiv.org/abs/2503.22199v1 內容簡介&#xff1a; 1&#xff09;方向&#x…

Python及C++中的排序

一、Python中的排序 &#xff08;一&#xff09;內置排序函數sorted() 基本用法 sorted()函數可以對所有可迭代對象進行排序操作&#xff0c;返回一個新的列表&#xff0c;原列表不會被修改。例如&#xff0c;對于一個簡單的數字列表nums [3, 1, 4, 1, 5, 9, 2, 6]&#xff…

詳解springcloud nacos使用

1.nacos server安裝 下載 Nacos Server 2.5.1 https://nacos.io/download/nacos-server/?spm5238cd80.2ef5001f.0.0.3f613b7clM2t6D 部署文檔&#xff1a;https://nacos.io/docs/latest/manual/admin/deployment/deployment-standalone/?spm5238cd80.6a33be36.0.0.25b41e5d…

第三篇:Python數據結構深度解析與工程實踐

第一章:列表與字典 1.1 列表的工程級應用 1.1.1 動態數組實現機制 Python列表底層采用動態數組結構,初始分配8個元素空間,當空間不足時按0,4,8,16,25,35...的公式擴容,每次擴容增加約12.5%的容量 通過sys模塊可驗證擴容過程: import sys lst = [] prev_size = 0 for …

NOIP2015提高組.運輸計劃

目錄 題目算法標簽: 樹上倍增, l c a lca lca, 前綴和, 樹上差分, 二分思路代碼* v e c t o r vector vector存鄰接表會超時 題目 521. 運輸計劃 算法標簽: 樹上倍增, l c a lca lca, 前綴和, 樹上差分, 二分 思路 注意到答案是具有二分性質的, 對于某個時間 m i d mid …