File size: 6,715 Bytes
87337b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# 声网 ESP32 大模型智能对话
*简体中文| [English](README.md)*
## 例程简介
本例程演示了如何通过乐鑫 ESP32-S3 Korvo V3 开发板,模拟一个典型的大模型智能对话场景,可以演示进入大模型进行实时智能对话。
### 文件结构
```
├── CMakeLists.txt
├── components Agora iot sdk component
│ ├── agora_iot_sdk
│ │ ├── CMakeLists.txt
│ │ ├── include Agora iot sdk header files
│ │ │ ├── agora_rtc_api.h
│ │ └── libs Agora iot sdk libraries
│ │ ├── libagora-cjson.a
│ │ ├── libahpl.a
│ │ ├── librtsa.a
├── main LLM Demo code
│ ├── ai_agent.h
│ ├── app_config.h
│ ├── common.h
│ ├── audio_proc.h
│ ├── rtc_proc.h
│ ├── CMakeLists.txt
│ ├── Kconfig.projbuild
| ├── ai_agent.c
| ├── audio_proc.c
| ├── rtc_proc.c
│ └── llm_main.c
├── partitions.csv partition table
├── README.en.md
├── README.md
├── sdkconfig.defaults
└── sdkconfig.defaults.esp32s3
```
## 环境配置
### 硬件要求
本例程目前仅支持`ESP32-S3-Korvo-2 V3`开发板。
## 编译和下载
### Agora IOT SDK
编译运行本示例需要 Agora IoT SDK。Agora IoT SDK 可以在 [这里](https://rte-store.s3.amazonaws.com/agora_iot_sdk.tar) 下载。
将 `agora_iot_sdk.tar` 放到 `esp32-client/components` 目录下,并运行如下命令:
```bash
cd esp32-client/components
tar -xvf agora_iot_sdk.tar
```
### Linux 操作系统
#### 默认 IDF 分支
本例程支持 IDF tag v[5.2.3] 及以后的,例程默认使用 IDF tag v[5.2.3] (commit id: c9763f62dd00c887a1a8fafe388db868a7e44069)。
选择 IDF 分支的方法,如下所示:
```bash
cd $IDF_PATH
git checkout v5.2.3
git pull
git submodule update --init --recursive
```
本例程支持 ADF v2.7 tag (commit id: 9cf556de500019bb79f3bb84c821fda37668c052)
#### 打上 IDF 补丁
本例程还需给 IDF 合入1个 patch, 合入命令如下:
```bash
export ADF_PATH=~/esp/esp-adf
cd $IDF_PATH
git apply $ADF_PATH/idf_patches/idf_v5.2_freertos.patch
```
#### 编译固件
将本例程(esp32-client)目录拷贝至 ~/esp 目录下。请运行如下命令:
```bash
$ . $HOME/esp/esp-idf/export.sh
$ cd ~/esp/esp32-client
$ idf.py set-target esp32s3
$ idf.py menuconfig --> Agora Demo for ESP32 --> (配置 WIFI SSID 和 Password)
$ idf.py build
```
配置freertos的前向兼容能力
在menuconfig中Component config --> FreeRTOS --> Kernel设置configENABLE_BACKWARD_COMPATIBILITY
### Windows 操作系统
#### 默认 IDF 分支
下载IDF,选择v5.2.3 offline版本下载,例程默认使用 IDF tag v[5.2.3]
https://docs.espressif.com/projects/esp-idf/zh_CN/v5.2.3/esp32/get-started/windows-setup.html
下载ADF,ADF目录Espressif/frameworks,为支持ADF v2.7 tag (commit id: 9cf556de500019bb79f3bb84c821fda37668c052)
https://docs.espressif.com/projects/esp-adf/zh_CN/latest/get-started/index.html#step-2-get-esp-adf
#### 打上 IDF 补丁
方法一.系统设置中将ADF_PATH添加到环境变量
E:\esp32s3\Espressif\frameworks\esp-adf
方法二.命令行中将ADF_PATH添加到环境变量
```bash
$ setx ADF_PATH Espressif/frameworks/esp-adf
```
注意:ADF_PATH环境变量设置后,重启ESP-IDF 5.2 PowerShell生效
本例程还需给 IDF 合入1个 patch, 合入命令如下:
```bash
cd $IDF_PATH
git apply $ADF_PATH/idf_patches/idf_v5.2_freertos.patch
```
#### 编译固件
将本例程(esp32-client)目录拷贝至 Espressif/frameworks 目录下。请运行如下命令:
```bash
$ cd ../esp32-client
$ idf.py set-target esp32s3
$ idf.py menuconfig --> Agora Demo for ESP32 --> (配置 WIFI SSID 和 Password)
$ idf.py build
```
配置freertos的前向兼容能力
在menuconfig中Component config --> FreeRTOS --> Kernel设置configENABLE_BACKWARD_COMPATIBILITY
### 下载固件
请运行如下命令:
```bash
$ idf.py -p /dev/ttyUSB0 flash monitor
```
注意:Linux系统中可能会遇到 /dev/ttyUSB0 权限问题,请执行 sudo usermod -aG dialout $USER
下载成功后,本例程会自动运行,待设备端加入RTC频道完成后,可以看到串口打印:"Agora: Press [SET] key to Join the Ai Agent ..."。
## 如何使用例程
### 五分钟快速体验
注意:
1. 请确认开发板上已至少接入一个扬声器。
### 配置你自己的 AI Agent
1. 请在 `app_config.h` 文件中配置你自己的 AI Agent。
2. 修改 `TENAI_AGENT_URL` 为你自己的 TEN-Agent 服务器 URL (一般为你通过 `task run` 启动的8080服务)。
3. 修改 `AI_AGENT_CHANNEL_NAME` 为你自己的 AI Agent Channel 名称。
4. 如果你之前就配置过 `openai_v2v` graph,那在配置好服务器URL后,你就可以开始体验了。
5. 如果你没有配置过 `openai_v2v` graph 或者想使用其他 graph,你需要在 `ai_agent.c` 的 `_build_start_json` 函数中修改启动的相关参数。
6. 重新编译后烧录到芯片上。
#### Demo:大模型AiAgent实时语音对话
1. 按键 `SET` 表示启动大模型
2. 按键 `MUTE` 表示停止大模型
3. 按键 `VOL+` 表示增大音量,一次增大10,最大到100
4. 按键 `VOL-` 表示减小音量,一次减小10,最小到0
5. 设备开机后,设备自动连接到服务器生成APPID对应的Channel频道内。按下 `SET` 键,开始启动大模型,开始进行实时语音对话;按下 `MUTE` 键,停止大模型。
## 关于声网
声网音视频物联网平台方案,依托声网自建的底层实时传输网络 Agora SD-RTN™ (Software Defined Real-time Network),为所有支持网络功能的 Linux/RTOS 设备提供音视频码流在互联网实时传输的能力。该方案充分利用了声网全球全网节点和智能动态路由算法,与此同时支持了前向纠错、智能重传、带宽预测、码流平滑等多种组合抗弱网的策略,可以在设备所处的各种不确定网络环境下,仍然交付高连通、高实时和高稳定的最佳音视频网络体验。此外,该方案具有极小的包体积和内存占用,适合运行在任何资源受限的 IoT 设备上,包括乐鑫 ESP32 全系列产品。
## 技术支持
请按照下面的链接获取技术支持:
- 如果发现了示例代码的 bug 和有其他疑问,可以直接联系社区负责人
我们会尽快回复。
|