微信扫码
添加专属顾问
我要投稿
苍何手搓字节AI硬件打造五一智能旅行小装置,万字沉浸式教程带你体验! 核心内容: 1. 火山开发者见面会后,苍何如何从零开始手搓AI硬件 2. 字节AI硬件介绍及搭建流程详解 3. 沉浸式教程:苍何的踩坑经历与心得分享
前段时间参加完火山开发者见面会,官方给送了个 AI 硬件,回家后,我就特别想玩。
并在介绍字节新出的MCP应用DeepSearch 这篇文章中放出狠话,说要针对 AI 硬件单独出一篇文章。
但却被工作一直耽搁着,这几天,终于有时间可以倒腾了。
一开始,我把 AI 硬件想的过于简单,配个大模型,通个电,就直接可以开始对话了。
事实证明,这是我单纯的狗屁想法?。
纯手搓(包含设备端烧录和服务端搭建)一个 AI 硬件,可没这么简单。
PS:这当然是针对于我这种没有任何硬件基础的秘制祖传小白来说。
过程是痛苦的,结果却是快乐的,放个视频,大家先感受下。
整个对话的自然和丝滑,就仿佛是在和真人聊天一样。这么一个小玩意,我直接拿着他充当我五一出行小助手,随着携带不要太方便。
而且,服务端代码直接运行在我本地,设备的配置我也可以随时调整并烧录,真正做到高度定制化。
这个 AI 硬件也足够的轻量小巧,随便放在什么玩具、家居等设备中,丝毫没有任何负担。(所以我直接做成了旅行小装置,随身携带,充当我的导游)
此时此刻,或许你脑子里蹦出了不少创业想法吧。我是感觉自己随身带了个药老?
废话不多说,下面我将带你沉浸式感受下我的手搓开发 AI 硬件之旅。
全文一共 10746 字,23 张图,不信你滑到底,看看要花多久?
这里放个小彩蛋,如果本文赞赞超过 100,下一篇,将安排 AI 硬件接入智能体,MCP 教程,体验硬件带来的更实际应用场景化落地。
在此之前,有必要感谢一下字节大佬们的帮助,以及袋鼠帝、云中江树两位大佬的经验传授,谢谢啦\(^ ^)/
我手画了一个搭建流程,大家可以先看看:
以下教程是在官方示例教程的基础上,结合自己踩过的坑做的沉浸式教程。不多 BB,开整。
先熟悉下这个新的 AI 硬件产品吧。
字节的这个 AI 硬件是火山引擎 RTC 与嵌入式芯片厂商合作内置一站式解决方案,通过在芯片侧集成先进的音频处理(包括自动唤醒功能、音频 3A 等)。
在云侧深度整合大模型、语音识别、语音合成、 Function calling、知识库等技术,快速实现用户与硬件之间流畅、自然、真人感觉的实时通话功能,在智能玩具、智能家居、智能穿戴设备、智能教育设备、AI 机器人等领域赋予硬件全新的使用体验。
这是一张来自官方的流程图:
要想完整跑通,我认为必不可少的几大条件:
1、开通对应的火山引擎服务,包括实时音视频、语音合成、语音识别等服务。
2、服务端启动,并可完全访问
3、设备端参数配置,并正常编译。
这是我理解的一个简单的转换过程。
一次对话,完成了端到云的全套流程,说实话,能做到如此响应速度,还是相当厉害的。
下面开始进入踩坑环节(哦不,是沉浸式体验环节)
为了保证以下的操作都能正常跑通,官方是提供了一个无代码跑通实时对话式 AI Demo 的,按照要求填入响应参数。
这个是在刚才获取 RTC_APP_ID 的那个页面首页能找到,角色权限开通:
只有确保在平台上都能正常对话了,才能继续下一步,不然会各种权限的问题。
服务端是真实和大模型交互的口子,可以本地部署,也可以远程服务器部署,这里苍何用的是阿里云服务器部署的方式。
记得开启服务端防火墙端口。
PC 服务器 (Linux 建议使用 ubuntu 18.04 及以上版本),我服务器版本如下:
服务器现在压力还是很大的,同时运行了太多的服务?
前期安装 Python 环境和 pip。
pip install requests
如果没有 pip 也可以运行命令:
python3 -m pip install requests
这里官方提供了服务端详细的示例 Demo,我们这次运行的也是基于官方的 Demo,做了一些改动。
1、克隆实时对话式 AI 硬件 Demo 示例
git clone https://github.com/volcengine/rtc-aigc-embedded-demo.git
2、进入服务端 Demo 目录
cd rtc-aigc-embedded-demo/server/src
3、更改设备配置文件
进入服务端配置文件 rtc-aigc-embedded-demo/server/src/RtcAigcConfig. py,设置如下参数:
# 鉴权 AK/SK。前往 https://console.volcengine.com/iam/keymanage 获取
AK = "yzitS6Kx0x*****fo08eYmYMhuTu"
SK = "xZN65nz0CFZ******lWcAGsQPqmk"
# 实时音视频 App ID。前往 https://console.volcengine.com/rtc/listRTC 获取或创建
RTC_APP_ID = "678e1574*****b9389357"
# 实时音视频 APP KEY。前往 https://console.volcengine.com/rtc/listRTC 获取
RTC_APP_KEY = "dc7f8939d23*******bacf4a329"
# 大模型推理接入点 EndPointId 前往 https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?config=%7B%7D 创建
DEFAULT_BOT_ID = "ep-202******36-plsp5"
# 音频生成大模型-语音合成大模型 Voice_type,前往 https://console.volcengine.com/speech/service/8 获取
DEFAULT_VOICE_ID = "BV05******aming"
# 语音识别-流式语音识别 APPID 前往 https://console.volcengine.com/speech/service/16 获取
ASR_APP_ID = "274****256"
# 音频生成-语音合成 APPID,前往 https://console.volcengine.com/speech/service/8 获取
TTS_APP_ID = "274****256"
# 服务端监听端口号,你可以根据实际业务需求设置端口号
PORT = 8080
去对应的开通相关服务即可。
这里注意最新的硬件要使用大模型,而不是原先的语音合成服务。这里踩了很大的坑,分别把容易搞错的几个参数截图说明一下吧。
主要容易搞混的,第一个是 DEFAULT_VOICE_ID,这里要选择语音合成大模型的音色。
4、需要更改一下 RtcAigcService. py 文件,现在官方的 demo 还没更新,你可以用我的这个代码,只需要调整 161 行代码的值为自己的 token。
直接后台回复:硬件,获取代码。
token 的话就是在刚才的页面复制语音合成大模型下面的 token 即可。
python3 RtcAigcService.py
这里以 Mac 系统为例。
乐鑫 ESP 32-S 3-Korvo-2 或者 AtomS 3 R 开发板。
USB 数据线(两条 A 转 Micro-B 数据线,一条作为电源线,一条作为串口线)。(AtomS 3 R 开发板需要 Typc-C 数据线)
PC(Windows、Linux 或者 macOS)。
1、安装 CMake 和 Ninja 编译工具
brew install cmake ninja dfu-util
如果没有 brew 的可以用中科大的镜像来安装:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
2、将乐鑫 ADF 框架克隆到本地,并同步各子仓(submodule)代码
a、clone 乐鑫 ADF 框架
git clone https://github.com/espressif/esp-adf.git // cloneADF框架
b、进入 esp-adf 目录
cd esp-adf
c、切换到乐鑫 ADF 指定版本
git reset --hard 0d76650198ca96546c40d10a7ce8963bacdf820b
d、同步各子仓代码
git submodule update --init --recursive
这一步会很耗时,也不知道是我电脑卡,还是咋啦,花了快 20 分钟了。
总之,很慢,很慢。(也可能是我网速慢)
3、安装乐鑫 esp 32 s 3 开发环境相关依赖
./install.sh esp32s3
这个的过程也相当的慢。
不知道是不是我的网速问题,总之会持续一段时间。
成功安装所有依赖后,命令行会出现如下提示:
All done! You can now run: . ./export.sh
经历了大概 20 分钟,才搞好吧。
对于 macOS 用户,如在上述任何步骤中遇到以下错误:
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl. c:xxx)
可前往访达->应用程序->Python 文件夹,点击 Install Certificates. command 安装证书。
4、设置环境变量。
每次打开命令行窗口均需要运行该命令进行设置
. ./export.sh
1、将实时对话式 AI 硬件示例工程 clone 到乐鑫 ADF examples 目录下
进入 esp-adf/examples 目录
cd $ADF_PATH/examples
clone 实时对话式 AI 硬件示例工程
git clone https://github.com/volcengine/rtc-aigc-embedded-demo.git
2、打开设备端配置文件 rtc-aigc-embedded-demo/client/espressif/esp 32 s 3_demo/main/Config. h,设置如下参数
就是刚才下载的那个仓库
// 你的服务端地址:监听端口号#define DEFAULT_SERVER_HOST "127.0.0.1:8080"// 服务端设置的大模型 EndPointId#define DEFAULT_BOT_ID "ep-20240729********"// 服务端设置的音频生成-语音合成 Voice_type#define DEFAULT_VOICE_ID "zh_female_*******"// 服务端设置的实时音视频 APPID#define DEFAULT_RTC_APP_ID "5c833ef********"
3、禁用乐鑫工程中的火山组件
进入 esp-adf 目录
cd $ADF_PATH
禁用乐鑫工程中的火山组件
git apply $ADF_PATH/examples/rtc-aigc-embedded-demo/0001-fix-disable-volc-engine-in-esp.patch
$ADF_PATH 替换成自己的实际安装路径,比如我这里是:/Users/canghe/responsibility/study/esp-adf
那么命令应该是:
git apply /Users/canghe/responsibility/study/esp-adf/examples/rtc-aigc-embedded-demo/0001-fix-disable-volc-engine-in-esp.patch
更新 AtomS 3 R 开发板补丁
git apply $ADF_PATH/c/0001-add-atoms3r-board.patch
1、进入 esp-adf/c 目录下编译固件
进入 esp 32 s 3_demo 目录:
cd $ADF_PATH
设置编译目标平台:
idf.py set-target esp32s3
有点坑,没找到,这个文件.
原来是没运行设置环境变量:
. ./export.sh
设置 WIFI 账号密码
idf.py menuconfig
进入 Example Connection Configuration 菜单,在 WiFi SSID 及 WiFi Password 中填入你的 WIFI 账号和密码,保存并退出配置菜单。
报错了:
运行目录不对,这是因为我切换到根目录去了,要切换回刚刚的目录,执行。
找到他:
输入 wifi 账号和密码:
按 S 保存,Q 退出。
设置开发版型号:
idf.py menuconfig
进入 Audio HAL 菜单,在 Audio board 中选择你的开发板型号。(例如: 方舟开发板选择 M 5 STACK-ATOMS 3 R) 保存并退出配置菜单
这里如果报错 flash 的话,需要调整这个值的大小
编译固件
idf.py build
这样就好了。
这一步相当于要将客户端的代码直接传到设备里面去,包括设备需要链接到哪个服务啊,默认音色这些都配置好了。
打开乐鑫开发板电源开关
烧录固件
idf.py flash
等他烧录吧:
idf.py monitor
在第一次烧录后,后面所有需要修改配置的地方,都要重新烧录,就可以走重新烧录流程了。(建议自己做成一个备忘,下次直接复制就好了)
配置环境变量
. ./export.sh
进入到 demo 目录:(换成自己的)
cd /Users/canghe/responsibility/study/esp-adf/examples/rtc-aigc-embedded-demo/client/espressif/esp32s3_demo
禁用乐新的火山组件:
git apply /Users/canghe/responsibility/study/esp-adf/examples/rtc-aigc-embedded-demo/0001-fix-disable-volc-engine-in-esp.patch
更新 AtomS 3 R 开发板补丁
git apply /Users/canghe/responsibility/study/esp-adf/examples/rtc-aigc-embedded-demo/0001-add-atoms3r-board.patch
设置编译目标平台
idf.py set-target esp32s3
设置 WIFI 账号密码:
idf.py menuconfig
进入 Example Connection Configuration 菜单,在 WiFi SSID 及 WiFi Password 中填入你的 WIFI 账号和密码,保存并退出配置菜单。
设置默认 flash,改为 8 M
设置开发版型号
idf.py menuconfig
进入 Audio HAL 菜单,在 Audio board 中选择你的开发板型号。(例如: 方舟开发板选择 M 5 STACK-ATOMS 3 R) 保存并退出配置菜单
编译固件:
idf.py clean
idf.py build
烧录固件
idf.py flash
运行示例 Demo 并查看串口日志输出
idf.py monitor
通过上面的所有操作,在 flash 烧录后,就能听到欢迎语了。
如果无法继续,只需要按住硬件的开关按钮即可。
烧录完成后,数据线可以不插到电脑上,也可以插到充电宝,只需要有个地方上电即可。
如果开了串口监控,需在电脑上,可以看到,每一次对话都要监控输出。
在服务端也会实时展示请求。
理论上,只要将设备连上手机 wifi,烧录好后,随身携带,没有任何问题。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-30
Browser Use - 让AI能够控制你的浏览器
2025-04-30
Deepseek时代,智能硬件能带来新的“GPT时刻”吗?
2025-04-30
什么?动动嘴就能让大模型帮你整理电脑桌面?!
2025-04-28
EdgeLLM:数据并行、端到端编译器与混合精度的 CPU-FPGA 加速架构
2025-04-28
Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态
2025-04-28
理想汽车AI新技术曝光,人工智能企业真不是李想说说而已。
2025-04-28
我见过最聪明的浏览器 Dia,别争论什么是AI Native产品了,这个就是!
2025-04-28
实测通过!这款云电脑 MCP,真的可以平替 Manus
2024-03-30
2024-05-09
2024-07-23
2024-07-07
2025-02-12
2024-07-01
2024-06-24
2024-06-23
2024-10-20
2024-06-08