183 lines
4.6 KiB
Markdown
183 lines
4.6 KiB
Markdown
# ARCS 语音解决方案
|
||
|
||
基于 ARCS SDK 的语音交互解决方案,支持多项目的语音解决方案定制功能。
|
||
|
||
## 项目概述
|
||
|
||
本项目是一个完整的语音助手解决方案,集成了语音唤醒、语音识别、云端交互、本地播放等功能。
|
||
|
||
### 主要特性
|
||
|
||
- 语音唤醒和识别
|
||
- 云端语音服务对接
|
||
- 本地音频播放
|
||
- WiFi/BLE 网络连接
|
||
|
||
## 环境搭建
|
||
|
||
参考SDK的开发文档:
|
||
- [开发文档(在线)](https://docs2.listenai.com/arcs-sdk/v0.1.0/zh/html/get_started.html)
|
||
|
||
## 工程结构
|
||
|
||
### 顶层目录
|
||
|
||
```
|
||
voiceassistant/
|
||
├── apps/ # 应用方案工程集合
|
||
├── arcs-sdk/ # ARCS SDK 核心框架
|
||
├── modules/ # 项目级第三方模块
|
||
├── res/ # 资源文件(固件、配置、音频、图片等)
|
||
├── src/ # 语音交互核心代码
|
||
├── tools/ # 开发工具和脚本
|
||
├── yaml/ # 配置文件
|
||
└── build.sh # 工程构建脚本
|
||
```
|
||
|
||
### 详细目录说明
|
||
|
||
#### [apps/](apps/) - 应用程序
|
||
|
||
包含多个应用方案项目,详细说明请参考对应工程下的README.MD(如有)。
|
||
|
||
#### [src/](src/) - 语音交互核心代码
|
||
|
||
包含语音助手的核心业务逻辑、中间件和工具库:
|
||
|
||
```
|
||
src/
|
||
├── category/ # 品类相关代码
|
||
│ ├── comm/ # 品类通用代码
|
||
│ ├── evb/ # EVB 品类实现
|
||
│ └── yuba/ # YUBA 品类实现
|
||
├── framework/ # 核心框架
|
||
│ └── voice_msg.* # 语音消息处理
|
||
├── middleware/ # 中间件层
|
||
├── server/ # 语音服务
|
||
├── shell/ # 调试命令行
|
||
│ └── cmd/ # Shell 命令实现
|
||
├── system/ # 系统服务
|
||
│ ├── platform.c # 平台抽象层
|
||
│ └── remote_logger.*# 远程日志
|
||
└── utils/ # 工具库
|
||
```
|
||
|
||
**核心模块说明:**
|
||
|
||
- **category**: 不同产品品类的特定实现,封装品类差异
|
||
- **comm**: 品类间通用代码和共享组件
|
||
- **framework**: 核心框架,提供语音消息传递机制
|
||
- **middleware**: 提供硬件抽象和系统服务,供应用层调用
|
||
- **server**: 语音交互核心逻辑,包括云端通信和唤醒处理
|
||
- **shell**: 提供调试命令行接口,用于开发调试
|
||
- **system**: 系统级服务,包括平台抽象和远程日志
|
||
- **utils**: 通用工具库,提供事件、配置、编解码等基础功能
|
||
|
||
|
||
## 快速开始
|
||
|
||
### 编译工程
|
||
|
||
基本编译命令,这里以/apps/evb-arcs项目为例,用户根据自己的实际项目路径选择:
|
||
|
||
```bash
|
||
./build.sh -S ./apps/arcs-evb -C
|
||
```
|
||
|
||
编译成功后,固件文件位于 [build/arcs-evb.bin](build/arcs-evb.bin)
|
||
|
||
### 固件烧录
|
||
|
||
#### FLASH 分区说明
|
||
参考对应app的资源分配置表说明文件
|
||
|
||
#### 烧录方式
|
||
|
||
##### 方式一: ROM 升级模式(空板烧录)
|
||
|
||
适用于首次烧录或 boot 程序损坏的情况。
|
||
|
||
**进入 ROM 升级模式:**
|
||
|
||
1. 将开发板的 `boot` 引脚接地
|
||
2. 复位开发板
|
||
3. 开发板进入 ROM 升级模式
|
||
|
||
**烧录 boot 程序:**
|
||
|
||
```bash
|
||
# 连接串口 UART0(GPIOA2_RX0/GPIOA3_TX0)
|
||
cskburn -C arcs -s /dev/ttyACM0 -b 3000000 0x0 ./res/res_pack_a/boot.bin
|
||
```
|
||
|
||
> **注意:** boot 引脚和烧录串口引脚复用,烧录前需将 boot 引脚悬空
|
||
|
||
##### 方式二: ADB 烧录(推荐)
|
||
|
||
适用于已有 boot 程序的开发板,支持快速烧录。
|
||
|
||
**步骤 1: 进入恢复模式**
|
||
|
||
```bash
|
||
adb shell recovery
|
||
```
|
||
|
||
**步骤 2: 烧录固件和资源**
|
||
|
||
参考对应app的资源分配置表说明文件,烧录所有分区数据.
|
||
|
||
|
||
**步骤 3: 重启设备**
|
||
|
||
```bash
|
||
adb shell reboot hard
|
||
```
|
||
|
||
## 常见问题
|
||
|
||
### 编译问题
|
||
|
||
**Q: 找不到工具链**
|
||
```
|
||
A: 检查环境变量是否正确设置:
|
||
echo $NUCLEI_TOOLCHAIN_PATH
|
||
echo $LISTENAI_TOOLS_PATH
|
||
```
|
||
|
||
**Q: 编译失败**
|
||
```
|
||
A: 尝试清理后重新编译:
|
||
./build.sh -C
|
||
```
|
||
|
||
### 烧录问题
|
||
|
||
**Q: ADB 连接不上设备**
|
||
```
|
||
A: 1. 检查 USB 连接
|
||
2. 运行 adb devices 查看设备
|
||
3. 尝试重启 adb: adb kill-server && adb start-server
|
||
```
|
||
|
||
**Q: 烧录后无法启动**
|
||
```
|
||
A: 1. 检查是否烧录了所有必要分区
|
||
2. 查看串口日志定位问题
|
||
3. 尝试重新烧录 boot.bin
|
||
```
|
||
|
||
## 版本信息
|
||
|
||
- **当前分支**: master
|
||
- **主分支**: master
|
||
|
||
## 参考文档
|
||
|
||
- [ARCS SDK 文档](arcs-sdk/README.MD)
|
||
- [ebus 模块文档](modules/ebus/readme.md)
|
||
- [lschat 模块文档](modules/lschat/README.MD)
|
||
|
||
## 许可证
|
||
|
||
本项目遵循相应的开源许可证,详见各模块的 LICENSE 文件。
|