ARCS 语音解决方案

基于 ARCS SDK 的语音交互解决方案,支持多项目的语音解决方案定制功能。

项目概述

本项目是一个完整的语音助手解决方案,集成了语音唤醒、语音识别、云端交互、本地播放等功能。

主要特性

  • 语音唤醒和识别
  • 云端语音服务对接
  • 本地音频播放
  • WiFi/BLE 网络连接

环境搭建

参考SDK的开发文档

工程结构

顶层目录

voiceassistant/
├── apps/              # 应用方案工程集合
├── arcs-sdk/          # ARCS SDK 核心框架
├── modules/           # 项目级第三方模块
├── res/               # 资源文件(固件、配置、音频、图片等)
├── src/               # 语音交互核心代码
├── tools/             # 开发工具和脚本
├── yaml/              # 配置文件
└── build.sh           # 工程构建脚本

详细目录说明

apps/ - 应用程序

包含多个应用方案项目,详细说明请参考对应工程下的README.MD如有

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项目为例,用户根据自己的实际项目路径选择:

./build.sh -S ./apps/arcs-evb -C

编译成功后,固件文件位于 build/arcs-evb.bin

固件烧录

FLASH 分区说明

参考对应app的资源分配置表说明文件

烧录方式

方式一: ROM 升级模式(空板烧录)

适用于首次烧录或 boot 程序损坏的情况。

进入 ROM 升级模式:

  1. 将开发板的 boot 引脚接地
  2. 复位开发板
  3. 开发板进入 ROM 升级模式

烧录 boot 程序:

# 连接串口 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: 进入恢复模式

adb shell recovery

步骤 2: 烧录固件和资源

参考对应app的资源分配置表说明文件,烧录所有分区数据.

步骤 3: 重启设备

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

参考文档

许可证

本项目遵循相应的开源许可证,详见各模块的 LICENSE 文件。

Description
No description provided
Readme 962 MiB
Languages
C 94.8%
C++ 1.2%
Shell 1.1%
Python 0.6%
Assembly 0.5%
Other 1.5%