非常流畅、丝滑
袋鼠帝,公众号:袋鼠帝AI客栈体验完字节送的迷你AI硬件,后劲太大了...
PS:上篇文章评论区本来是置顶了AI硬件的购买链接,但是后面莫名其妙消失了,估计是被公众号官方隐藏了...
主要是上次我演示的时候使用的默认音色,确实莫得感情,然后大模型也没有经过prompt调整,就显得很话痨。但主要亮点还是在实时回复,实时打断,实时接话上面,以及客服端和服务端代码开源,支持高自由度的DIY
建议大家先看看教程,如果觉得搞不定,或者没有达到预期,就不要随便购买哦。
1.AI硬件(客户端)
2.服务端(可自己部署):可以自定义大模型的prompt,自定义配置大模型地址,比如可以切换成fastgpt智能体,OpenAI的大模型,硅基流动,n8n等等...
3.火山引擎:提供实时、丝滑的TTS(文本转语音)和STT(语音识别)服务,同时也可以提供智能体、大模型调用服务。
PS:虽然这个AI硬件很nice,但毕竟是新出的,所以安装啥的步骤忒多,比较原始,本次教程应该是目前我出的所有喂饭级教程里面,难度最高的,我愿称之为地狱级难度!
欢迎大家迎接这次挑战~
教程的内容还包含之前遇到过的一些问题,可以帮大家避避坑~
也可参考火山官方文档:
https://www.volcengine.com/docs/6348/1315561
一、前置准备
其实Windows应该也能烧录,但是可能需要一个转接线(一头是Type-c,一头是USB)
二、服务端
pip3 install requests 或者 pip install requests安装依赖
2.下载并配置工程(服务端)
服务端代码是开源的,Github地址:
gitclonehttps://github.com/volcengine/rtc-aigc-embedded-demo.git
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/10007 获取DEFAULT_VOICE_ID="zh_female******_bigtts"# 语音识别大模型-流式语音识别大模型 APPID 前往 https://console.volcengine.com/speech/service/10011 获取ASR_APP_ID="274****256"# 音频生成大模型-语音合成大模型 APPID,前往 https://console.volcengine.com/speech/service/10007 获取TTS_APP_ID="274****256"# 服务端监听端口号,你可以根据实际业务需求设置端口号PORT=8080
大模型推理接入点
获取DEFAULT_VIOCE_ID
获取ASR_APP_ID
获取TTS_APP_ID
由于某些原因,火山的这个开源服务端代码,还未更新到最新版。所以需要把源码中的服务端代码文件(RtcAigcService.py),替换一下
在公众号后台私信:“字节硬件” 获取服务端最新RtcAigcService.py文件
然后把原来的替换掉
位置:rtc-aigc-embedded-demo/server/src/
并且需要打开RtcAigcService.py,在161行,改一个配置
将token更换成自己的token,然后保存
token在下图位置获取
python3RtcAigcService.py
三、设备端
打开终端
安装 CMake 和 Ninja 编译工具
brewinstallcmakeninjadfu-util
clone 乐鑫ADF 框架
gitclonehttps://github.com/espressif/esp-adf.git
进入esp-adf目录
cdesp-adf
切换到乐鑫ADF指定版本
gitreset--hard0d76650198ca96546c40d10a7ce8963bacdf820b
同步各子仓代码
gitsubmoduleupdate--init--recursive
安装乐鑫 esp32s3 开发环境相关依赖
./install.shesp32s3
成功安装所有依赖后,命令行会出现如下提示
All done! You can now run:
. ./export.sh
有遇到上图问题的朋友去GitHub上面找,这是Github的截图
设置环境变量
PS:每次打开命令行窗口均需要运行该命令进行设置
../export.sh
2.下载并配置工程
我们需要先将实时对话式 AI 硬件示例工程 clone 到 乐鑫 ADF examples 目录下
进入 esp-adf/examples 目
cd$ADF_PATH/examples
clone 实时对话式 AI 硬件示例工程
gitclonehttps://github.com/volcengine/rtc-aigc-embedded-demo.git
打开设备端配置文件
rtc-aigc-embedded-demo/client/espressif/esp32s3_demo/main/Config.h
设置如下参数(从服务端配置里面拿过来即可)
// 你的服务端地址:监听端口号#defineDEFAULT_SERVER_HOST"192.168.x.x:8080"
// 服务端设置的大模型 EndPointId#defineDEFAULT_BOT_ID"ep-20240729********"
// 服务端设置的音频生成大模型-语音合成大模型 Voice_type#defineDEFAULT_VOICE_ID"zh_female_*******_bigtts"
// 服务端设置的实时音视频 APPID#defineDEFAULT_RTC_APP_ID"5c833ef********"
注意:上面填的服务端地址,如果服务端是在本地,一定要填电脑的局域网IP地址(内网地址)
接下来禁用乐鑫工程中的火山组件
进入 esp-adf 目录
cd$ADF_PATH
禁用乐鑫工程中的火山组件
gitapply$ADF_PATH/examples/rtc-aigc-embedded-demo/0001-fix-disable-volc-engine-in-esp.patch
更新 AtomS3R 开发板补丁
gitapply$ADF_PATH/examples/rtc-aigc-embedded-demo/0001-add-atoms3r-board.patch
3.编译固件
esp-adf/examples/rtc-aigc-embedded-demo/client/espressif/esp32s3_demo目录下编译固件
进入 esp32s3_demo 目录
cd$ADF_PATH/examples/rtc-aigc-embedded-demo/client/espressif/esp32s3_demo
设置编译目标平台
idf.pyset-targetesp32s3
设置WIFI账号密码
idf.pymenuconfig
进入Example Connection Configuration菜单,在WiFi SSID及WiFi Password中填入你的 WIFI 账号和密码,保存并退出配置菜单。
WIFI SSID,其实就是你的wifi名称
用键盘的上下键来控制选择,回车是打开,也是保存,保存最终的配置请按s,保存之后连续按键盘的esc退出。
进入Audio HAL菜单,在Audio board中选择你的开发板型号。(例如: 方舟开发板选择M5STACK-ATOMS3R)保存并退出配置菜单
编译固件
idf.pybuild
4.烧录并运行示例Demo
最后,我们需要将调整好的客户端配置和代码通过数据线传输进AI硬件中,这个过程有个专业术语叫做「烧录」
先打开乐鑫开发板电源开关
烧录固件
idf.pyflash
运行示例 Demo 并查看串口日志输出
idf.pymonitor
启动之后,正常会先回复一个欢迎语(带声音的)
如果想要退出日志,请按 control + 】
如果启动后发现跑不起来,可以复制红色的报错内容丢给AI(Claude、Gemini2.5 pro、DeepSeek等)
或者把Flash Size 从16MB改成8MB
还是先执行 idf.py menuconfig 进入菜单配置
然后进入Serial flasher config菜单,把Flash Size 从16MB改成8MB
保存,退出。
注意:无论是修改menuconfig还是修改客户端的Config.h,修改之后都需要保存,并重新执行编译、烧录流程
idf.pybuildidf.pyflashidf.pymonitor
好了,以上就是本期所有啦ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;white-space-collapse: preserve;color: rgb(0, 0, 0);">
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |