博通BK7258 AI开发板集成阿里云多模态交互开发套件的探索
背景
目前智能硬件行业普遍都在关注AI玩具/AI情感陪伴机器人。
硬件方面,博通的BK7258的AI玩具开发板(如下图)是行业内的选择之一。

本文基于硬件博通BK7258 AI玩具开发板,进行AI情感陪伴机器人相关的探索。
注:本文是第一次接触硬件嵌入式开发的新手的自学记录,适合没有接触过相关内容的同学阅读,也欢迎相关行业的专家老师多批评指正。
基础功能上手和环境搭建
这是我第一次接触硬件开发,还没有建立起基础的技术价值观。
首先参考官网文档和网上相关教程进行基础操作和设置。
快速上手指南
BK7258 AI开发套件出厂默认集成了官方SDK,可以直接启动。
这里要吐槽下,博通提供的官方文档和教程散落在多处,更新也不是很及时,对于初学者来说不是特别友好。
官方的《AI开发套件快速使用指南》详见如下链接
https://dl.bekencorp.com/armino_sdk_resource/bk_aidk/ai_board_introduct
可参考文档直接进行搭建。
这里强调下,默认环境只有声网云服务里的豆包模型这一个选项,其他选项默认灰色不可选,需要额外配进行编译烧录。

完成相关配置后,可以直接跟开发板做语音对话,开发板上的屏幕可以显示眼睛。
开发环境搭建
本文基于Windows电脑构建开发环境,这里参考B站官方教程 https://www.bilibili.com/video/BV1dudLY7E1u 进行配置。
文档里有些内容实际操作会遇到问题,本文记录实际操作过程。
Armino AIDK SDK代码下载
踩坑点:
- 官方文档里gitlab代码下载需要gitlab账号,个人用户没有该账号不建议使用这种方法;
- 文档里通过git下载github环境,如果本地没有科学上网环境,下载可能失败;
- 尝试手动下载 https://github.com/bekencorp/bk_aidk# 版本v2.0.1 下载后bk_aidk-ai_release-v2.0.1解压失败,文件夹架构不完整;
- 尝试手动下载 https://github.com/bekencorp/bk_idk,下载后bk_idk-release-v2.0.1解压失败,文件夹架构不完整;
最后验证可用的方案如下。
访问如下官方下载链接 https://dl.bekencorp.com/SDK/bk_aidk,下载文件bk_aidk-ai_release-v2.0.1.9.tar.xz,并进行两次解压,得到文件夹bk_aidk-ai_release-v2.0.1.9,本示例中文件夹路径为 C:\Users\LeoYu\armino\bk_aidk-ai_release-v2.0.1.9,里面文件结构如下图。

Docker环境部署
该步骤主要参考如下官方文档 https://docs.bekencorp.com/arminodoc/bk_idk/bk7258/zh_CN/v2.0.1/get-started/env-docker.html。
从 Beken 官方下载站点获取 Docker 镜像bekencorp-armino-idk-v1.2.tar:下载地址 https://dl.bekencorp.com/tools/arminosdk/docker_img/armino-idk
踩坑点:该Docker镜像有三个版本v1.0,v1.1,v1.2,需要使用当下最新版本v1.2,否则后续构建会失败。
本例中,下载的文件bekencorp-armino-idk-v1.2.tar放在C:\Users\LeoYu\armino中。
然后需要访问https://www.docker.com/找到Docker Desktop进行下载、安装和启动(很简单,过程略)。
然后电脑端打开PowerShell执行如下指令加载该armino-idk镜像:
cd C:\Users\LeoYu\armino
docker load -i bekencorp-armino-idk-v1.2.tar
进行编译
进入SDK根目录,Windows系统PowerShell执行命令进行编译测试:
cd C:\Users\LeoYu\armino\bk_aidk-ai_release-v2.0.1.9\bk_avdk\bk_idk
./dbuild.ps1 make bk7258
踩坑点:这里使用的是Armino AIDK SDK包中的 bk_avdk\bk_idk 这个路径下的环境进行的编译,请特别留意路径。
编译结束后,PowerShell输出结果如下。

此时,C:\Users\LeoYu\armino\bk_aidk-ai_release-v2.0.1.9\bk_avdk\bk_idk\build\app\bk7258 路径下会得到如下内容,证明能正常生成固件,编译功能可用。

软件烧录初尝试
本节内容主要参考B站官方教程视频https://www.bilibili.com/video/BV1MLXVYRE6v/。
Armino 支持在 Windows/Linux 平台进行固件烧录, 烧录方法参考烧录工具中指导文档。 app工程在编译完成后,在build/app/bk7258目录下生成all-app.bin,使用此bin文件烧录即可。安全工程首次烧录时,需要先烧录bootloader.bin,再烧录all-app.bin。
具体说明可参考文档 https://docs.bekencorp.com/arminodoc/bk_idk/bk7258/zh_CN/v_ai_2.0.1/get-started/index.html。
安装烧录工具
首先安装烧录工具(BKFIL),https://dl.bekencorp.com/tools/flash/ 在此目录下获取最新版本,如:BEKEN_BKFIL_V2.1.12.2_20251030(zip).zip
解压后得到BKFIL.exe,启动后如下图;

编译特定项目
下面我们参考视频教程,编译beken_genie这个project。
踩坑点:bk_aidk-ai_release-v2.0.1.9\bk_avdk\bk_idk\projects中默认是没有beken_genie个project的,如果从bk_aidk-ai_release-v2.0.1.9\projects中复制beken_genie这个project到bk_aidk-ai_release-v2.0.1.9\bk_avdk\bk_idk\projects中,后续会有一系列报错需要解决。所以我们直接在bk_aidk-ai_release-v2.0.1.9\这个文件夹下进行编译。
cd C:\Users\LeoYu\armino\bk_aidk-ai_release-v2.0.1.9\
./dbuild.ps1 make bk7258 PROJECT=beken_genie
执行结束后截图如下:

编译结束后,在\bk_aidk-ai_release-v2.0.1.9\build\beken_genie\bk7258路径下,可以得到烧录所需的all-app.bin文件。

进行烧录
将开发板设备开机,并与电脑通过type-C口连接;
打开烧录工具BKFIL,选择串口

选择正确的bin文件路径,并点击烧录。

烧录完成后,可以看到如下日志,显示All Finished Successfully。

烧录完成后,开机,再次按照“快速上手指南”章节的内容进行配对连接,即可进行对话。

定制化功能开发尝试
后面主要是嵌入式硬件设备的开发了,我之前从来没有接触过,下面进行尝试。
我们这里尝试让硬件接入阿里云百炼的多模态交互开发套件。
百炼多模态交互开发套件开通
访问 https://bailian.console.aliyun.com/cn-beijing/?spm=5176.29619931.J_C-NDPSQ8SFKWB4aef8i6I.1.140510d7M6f6N4&tab=app#/app/app-market/multi-modal-app 开通多模态交互开发套件的服务,并创建一个“多模态交互应用”,选择自定义创建,其他内容可以先保持默认配置,最后点击发布。


发布后,点击立即运行,并打开视频模式,可以直接进行对话,证明应用创建成功并可用。

注:下图红框的免费额度建议点击开通。

下载多模态交互开发套件SDK
访问链接 https://help.aliyun.com/zh/model-studio/mmi-rtos-sdk,按照下图下载对应版本的SDK。

多模态交互开发套件SDK集成
后面的部分,我们尝试让AI编码助手Qoder帮忙进行分析和处理。
把如下需求描述给Qoder:
背景:
在博通BK7258 AI开发板上,通过armino开发框架,基于beken_genie的项目工程做功能开发。
该项目的结构,以及后续的改动,请务必参考beken_genie的项目工程文档,链接如下 https://docs.bekencorp.com/arminodoc/bk_aidk/bk7258/zh_CN/v2.0.1/projects/beken_genie/index.html
需求:
该项目尝试用阿里云多模态交互开发套件的SDK替换beken_genie项目中的ASR+LLM+TTS,相关SDK软件已下载放到toQoder文件夹下的qwen_sdk中,
该SDK的使用文档,可以参考https://help.aliyun.com/zh/model-studio/mmi-rtos-sdk;
具体要求:
1. 阿里云多模态交互开发套件使用的是后付费模式,按照文档,“当不加载libc_license.a时为后付费模式。”
2. 对话模式使用: Duplex(全双工);
3. 必要的阿里云App ID、Workspace ID、API Key相关参数如下:
CONFIG_QWEN_APP_ID="<YOUR_APP_ID>"
CONFIG_QWEN_WS_ID="<YOUR_WORKSPACE_ID>"
CONFIG_QWEN_API_KEY="<YOUR_API_KEY>"
Qoder分析需求后对项目文件进行相应的修改,随后就可以通过如下指令在Powershell进行编译。
cd C:\Users\LeoYu\armino\bk_aidk-ai_release-v2.0.1.9\
./dbuild.ps1 make bk7258 PROJECT=beken_genie
编译后把得到的得到all-app.bin文件烧录到开发板中。

完成烧录后,把开发板通过type-c线接入电脑,在电脑端使用console软件MobaXterm查看COM口日志信息,发现如下问题:
- 栈溢出问题:
出现 “Usage fault is caused by indicates that a stack overflow (hardware check) has taken place” 错误 - Qwen SDK 未初始化:
显示 “Qwen voice chat not initialized”
说明 Qwen SDK 的初始化过程由于栈溢出而中断 - 同时也有部分组件启动成功:
系统能够成功启动并显示 “INITED” 状态
CPU1 启动成功
bk_genie_core_init success 初始化成功
电池监控初始化成功
把启动日志和相关现象同步给Qoder,进行功能修复和优化。
踩坑点:
1. 编译过程中遇到ninja: error: loading ‘build.ninja’: No such file or directory错误,这是构建系统问题(build.ninja 文件丢失),可通过如下指令清理后重新构建:
cd c:\Users\LeoYu\armino\bk_aidk-ai_release-v2.0.1.9; Remove-Item -Recurse -Force build\beken_genie\bk7258_cp2 -ErrorAction SilentlyContinue; .\dbuild.ps1 make bk7258 PROJECT=beken_genie
2. 遇到TTS播放大模型声音卡顿的问题,是因为player_rb_size缓冲区不足,导致大量音频数据溢出丢失,云端TTS音频推送速率 ~120KB/s,本文中将 player_rb_size 增大到 900KB解决了该问题;
3. make 是增量编译,通常只编译修改过的文件,所以步骤上也比第一次编译少很多,但是如果有以下情况:
- 修改了Kconfig配置(如make menuconfig后)
- 切换了项目或配置文件
- 编译出现奇怪的错误(如找不到头文件、链接错误)
- 修改了CMakeLists.txt结构
那可以执行如下清除指令后再进行编译
清除后重新编译
.\dbuild.ps1 make bk7258 PROJECT=beken_genie distclean
.\dbuild.ps1 make bk7258 PROJECT=beken_genie
4. 目前音频采样率,上下行都是16kHz,验证可用,具体涉及到的相关配置,总结如下表

经过多轮优化,目前已实现如下对话功能:
- 语音唤醒: 支持语音唤醒词触发对话(目前使用的是beken_genie项目默认唤醒词:
hi armino或嗨阿米诺用于唤醒,byebye armino或拜拜阿米诺用于关闭) - 全双工对话: 采用 Duplex 模式,支持实时双向语音交互
- 语音识别(ASR): 阿里云百炼云端多模态交互开发套件ASR服务
- 大语言模型智能问答(LLM): 阿里云百炼云端多模态交互开发套件文本模型智能问答
- 语音合成(TTS): 阿里云百炼云端多模态交互开发套件TTS服务,音色为 CosyVoice-v3-Flash (龙菲菲)
最后,可以让Qoder生成需求文档如下,包含描述整个项目功能和基于beken_genie项目做的所有改动。
# BK7258 AI开发板 - 阿里云多模态交互开发套件集成 Spec 文档
## 1. 项目概述
### 1.1 背景
本项目基于博通(Beken)BK7258 AI开发板,使用 Armino AIDK SDK (v2.0.1.9) 开发框架,对官方 `beken_genie` 项目进行功能定制开发。目标是将BK7258 AI开发板原生集成的AI语音对话功能(ASR+LLM+TTS)替换为阿里云百炼多模态交互开发套件(MMI RTOS SDK),实现定制化的语音交互体验。
### 1.2 硬件平台
- **开发板**: 博通 BK7258 AI开发套件
- **芯片**: BK7258 双核处理器 (CPU0 + CPU1)
- **音频**: 16kHz PCM 采样,支持双麦克风输入和扬声器输出
- **网络**: Wi-Fi 连接
### 1.3 软件框架
- **SDK版本**: bk_aidk-ai_release-v2.0.1.9
- **开发框架**: Armino AIDK SDK
- **基础项目**: beken_genie
- **编译环境**: Docker + PowerShell (Windows)
---
## 2. 核心功能
### 2.1 语音唤醒与对话
- **语音唤醒**: 支持语音唤醒词触发对话(目前使用的是beken_genie项目默认唤醒词:hi armino 或 嗨阿米诺 用于唤醒,byebye armino 或 拜拜阿米诺 用于关闭)
- **全双工对话**: 采用 Duplex 模式,支持实时双向语音交互
- **语音识别(ASR)**: 阿里云百炼云端多模态交互开发套件ASR服务
- **大语言模型智能问答(LLM)**: 阿里云百炼云端多模态交互开发套件文本模型智能问答
- **语音合成(TTS)**: 阿里云百炼云端多模态交互开发套件TTS服务,音色为 CosyVoice-v3-Flash (龙菲菲)
### 2.2 网络连接
- **Wi-Fi连接**: 自动连接配置的Wi-Fi网络
- **WebSocket通信**: 与阿里云百炼服务建立WSS安全连接
- **自动重连**: 网络断开后自动重连机制
### 2.3 音频处理
- **音频采集**: 16kHz 16bit PCM 格式
- **音频播放**: 16kHz 16bit PCM 格式
- **音量控制**: 0-100级音量调节,与系统音量同步
- **AEC支持**: 支持回声消除
### 2.4 LED状态指示
- **绿色常亮**: 服务连接成功
- **红色常亮**: 服务断开
- **红色快闪**: 服务错误
---
## 3. 阿里云百炼服务配置
### 3.1 服务模式
采用**后付费模式**,按照阿里云文档说明,不加载 `libc_license.a` 库文件。
### 3.2 必要配置参数
```c
CONFIG_QWEN_APP_ID="<YOUR_APP_ID>"
CONFIG_QWEN_WS_ID="<YOUR_WORKSPACE_ID>"
CONFIG_QWEN_API_KEY="<YOUR_API_KEY>"
CONFIG_QWEN_DEVICE_NAME="beken_genie_device"
```
**获取方式**:
1. 登录 [阿里云百炼控制台](https://bailian.console.aliyun.com/)
2. 创建多模态交互应用
3. 在应用详情页获取 App ID、Workspace ID 和 API Key
### 3.3 工作模式
- **模式**: Duplex(全双工)
- **音频流模式**: PCM 格式
- **采样率**: 16kHz(上行和下行)
- **文本模式**: ASR和LLM文本同时返回
---
## 4. 项目结构改动
### 4.1 新增组件
#### 4.1.1 qwen_voice_chat 组件
**路径**: `projects/common_components/qwen_voice_chat/`
**文件结构**:
```
qwen_voice_chat/
├── CMakeLists.txt # 组件构建配置
├── Kconfig # 菜单配置选项
├── README.md # 组件说明文档
├── RESOURCE_OPTIMIZATION.md # 资源优化说明
├── include/
│ ├── qwen_audio_engine.h # 音频引擎头文件
│ ├── qwen_voice_chat.h # 主头文件
│ └── qwen_websocket.h # WebSocket传输层头文件
└── src/
├── qwen_audio_engine.c # 音频引擎实现(麦克风/扬声器管理)
├── qwen_sdk_hal.c # SDK HAL适配层(时间/内存/互斥锁等)
├── qwen_voice_chat.c # 核心功能实现
└── qwen_websocket.c # WebSocket传输层实现
```
**功能说明**:
- `qwen_voice_chat.c`: 核心模块,负责SDK初始化、配置管理、事件处理
- `qwen_audio_engine.c`: 音频引擎,管理BK7258音频硬件与SDK的数据交互
- `qwen_websocket.c`: WebSocket传输层,处理与阿里云服务的网络通信
- `qwen_sdk_hal.c`: 硬件抽象层适配,实现SDK所需的系统函数
#### 4.1.2 阿里云SDK
**获取路径**: https://help.aliyun.com/zh/model-studio/mmi-rtos-sdk
**文件结构**:
```
qwen_sdk/
├── ReleaseNote.md # SDK版本说明
├── include/
│ ├── c_mmi.h # MMI主接口
│ ├── c_mmi_config.h # 配置接口
│ ├── c_mmi_msg.h # 消息接口
│ ├── c_mmi_storage.h # 存储接口
│ ├── c_utils/ # 工具函数
│ ├── c_mmi_cmd/ # 命令接口
│ ├── lib_c_sdk.h # SDK基础接口
│ └── qwen_test.h # 测试接口
├── libs/
│ ├── libqwen_sdk.a # 核心SDK库(后付费模式)
│ ├── libc_mmi_cmd.a # 命令库
│ ├── libc_mmi_cmd_application.a
│ ├── libc_mmi_cmd_voice_translate.a
│ ├── libc_mmi_cmd_volume.a
│ └── libhal_dummy.a # HAL虚拟库
└── third_party/
├── cJSON/ # JSON解析库
└── tinycrypt/ # 加密库
```
### 4.2 修改的文件
#### 4.2.1 beken_genie 主项目
**路径**: `projects/beken_genie/`
**修改文件**:
1. **CMakeLists.txt**
- 添加 `qwen_voice_chat` 组件到 `EXTRA_COMPONENTS_DIRS`
- 添加 `qwen_voice_chat` 到依赖列表
2. **main/CMakeLists.txt**
- 在 `PRIV_REQUIRES` 中添加 `qwen_voice_chat` 依赖
3. **main/app_main.c** (主要改动)
- 添加条件编译支持 `CONFIG_QWEN_VOICE_CHAT`
- 当启用Qwen SDK时,禁用原有的 `audio_engine`、`video_engine` 初始化以避免资源冲突
- 添加Qwen事件回调函数 `qwen_event_callback()`
- 在 `user_app_main()` 中初始化Qwen语音对话功能
- 配置为Duplex全双工模式
- 延迟初始化以确保系统稳定性
- 在 `main()` 中跳过原有的 `audio_turn_on()` 调用(Qwen SDK独立管理音频)
4. **main/Kconfig.projbuild**
- 保留原有配置(未修改)
### 4.3 配置系统改动
#### 4.3.1 Kconfig 配置
**文件**: `projects/common_components/qwen_voice_chat/Kconfig`
**新增配置项**:
```
QWEN_VOICE_CHAT - 启用Qwen语音对话功能
QWEN_VOICE_CHAT_DEBUG - 启用调试日志
QWEN_APP_ID - 阿里云App ID
QWEN_WS_ID - 阿里云Workspace ID
QWEN_API_KEY - 阿里云API Key
QWEN_DEVICE_NAME - 设备名称
QWEN_MODE_DUPLEX - 全双工模式(默认)
QWEN_MODE_PUSH2TALK - 按键说话模式
QWEN_MODE_TAP2TALK - 点击说话模式
QWEN_RECORDER_BUFFER_SIZE - 录音缓冲区大小(KB)
QWEN_PLAYER_BUFFER_SIZE - 播放缓冲区大小(KB)
QWEN_INIT_DELAY_MS - 初始化延迟(ms)
QWEN_VOLUME_LEVEL - 默认音量级别
```
#### 4.3.2 sdkconfig 配置
**路径**: `build/beken_genie/bk7258/config/sdkconfig.h`
**生成的配置宏**:
```c
#define CONFIG_QWEN_VOICE_CHAT 1
#define CONFIG_QWEN_VOICE_CHAT_DEBUG 1
#define CONFIG_QWEN_APP_ID "<YOUR_APP_ID>"
#define CONFIG_QWEN_WS_ID "<YOUR_WORKSPACE_ID>"
#define CONFIG_QWEN_API_KEY "<YOUR_API_KEY>"
#define CONFIG_QWEN_DEVICE_NAME "beken_genie_device"
#define CONFIG_QWEN_MODE_DUPLEX 1
#define CONFIG_QWEN_RECORDER_BUFFER_SIZE 4
#define CONFIG_QWEN_PLAYER_BUFFER_SIZE 4
#define CONFIG_QWEN_INIT_DELAY_MS 4000
#define CONFIG_QWEN_VOLUME_LEVEL 80
```
---
## 5. 技术实现细节
### 5.1 音频数据流
```
麦克风采集 → BK7258音频驱动 → qwen_audio_engine.c → c_mmi_put_recorder_data() → Qwen SDK → WebSocket发送
WebSocket接收 → Qwen SDK → c_mmi_get_player_data() → qwen_websocket.c → BK7258音频驱动 → 扬声器播放
```
### 5.2 初始化流程
1. **系统启动**: `main()` 函数执行
2. **基础服务初始化**: `bk_init()`, `media_service_init()`
3. **用户应用启动**: `user_app_main()`
4. **Qwen初始化**:
- 配置App ID、Workspace ID、API Key
- 配置音频参数(16kHz PCM, Duplex模式)
- 初始化音频引擎
- 注册网络事件回调
- 检查Wi-Fi连接状态
5. **Wi-Fi连接后**:
- 触发 `EVENT_NETIF_GOT_IP4` 事件
- 启动WebSocket连接
- 启动音频采集和播放
### 5.3 事件处理机制
**Qwen SDK事件**:
- `C_MMI_EVENT_USER_CONFIG`: 用户配置事件
- `C_MMI_EVENT_DATA_INIT`: SDK初始化完成
- `C_MMI_EVENT_SPEECH_READY`: 语音服务就绪
- `C_MMI_EVENT_ASR_COMPLETE`: ASR识别完成
- `C_MMI_EVENT_TTS_START/TTS_END`: TTS开始/结束
- `C_MMI_EVENT_DATA_DEINIT`: SDK反初始化
**应用层事件回调**:
- `QWEN_EVENT_CONNECTED`: 服务连接成功
- `QWEN_EVENT_DISCONNECTED`: 服务断开
- `QWEN_EVENT_ERROR`: 服务错误
- `QWEN_EVENT_ASR_RESULT`: ASR识别结果
- `QWEN_EVENT_TTS_DATA`: TTS数据
### 5.4 资源管理
**内存使用**:
- 录音缓冲区: 8KB (可配置)
- 播放缓冲区: 900KB (匹配云端推送速率)
- WebSocket发送缓冲区: 8KB
- WebSocket接收缓冲区: 8KB
**线程**:
- 发送任务: 6KB栈空间,负责将SDK数据发送到WebSocket
- 播放定时器: 20ms周期,负责从SDK获取播放数据
---
## 6. 编译与烧录
### 6.1 编译命令
```powershell
cd C:\Users\LeoYu\armino\bk_aidk-ai_release-v2.0.1.9
.\dbuild.ps1 make bk7258 PROJECT=beken_genie
```
### 6.2 输出文件
- **固件**: `build/beken_genie/bk7258/all-app.bin`
- **应用**: `build/beken_genie/bk7258/app.bin`
- **映射文件**: `build/beken_genie/bk7258/app.map`
### 6.3 烧录步骤
1. 打开 BKFIL 烧录工具
2. 选择正确的COM端口
3. 选择 `all-app.bin` 文件
4. 点击烧录按钮
5. 等待烧录完成
---
## 7. 功能验证
### 7.1 测试项目
- [x] 语音唤醒功能
- [x] 语音对话功能
- [x] 音量调节功能
- [x] 设备重启功能
### 7.2 已知问题
- TTS输出在特定情况下可能存在轻微卡顿(已优化缓冲区配置)
---
## 8. 参考资料
### 8.1 官方文档
- [BK7258 AI开发套件文档](https://docs.bekencorp.com/arminodoc/bk_aidk/bk7258/zh_CN/v2.0.1/projects/beken_genie/index.html)
- [阿里云百炼MMI RTOS SDK文档](https://help.aliyun.com/zh/model-studio/mmi-rtos-sdk)
### 8.2 SDK版本
- **Qwen SDK版本**: v1.1.0
- **Armino AIDK SDK**: v2.0.1.9
---
## 9. 附录
### 9.1 文件变更汇总
| 文件路径 | 变更类型 | 说明 |
|---------|---------|------|
| `projects/common_components/qwen_voice_chat/` | 新增 | 完整的Qwen语音对话组件 |
| `toQoder/qwen_sdk/` | 新增 | 阿里云百炼SDK |
| `projects/beken_genie/CMakeLists.txt` | 修改 | 添加组件路径和依赖 |
| `projects/beken_genie/main/CMakeLists.txt` | 修改 | 添加qwen_voice_chat依赖 |
| `projects/beken_genie/main/app_main.c` | 修改 | 集成Qwen SDK初始化逻辑 |
| `projects/common_components/qwen_voice_chat/Kconfig` | 新增 | 配置菜单定义 |
### 9.2 关键API列表
**初始化与生命周期**:
- `qwen_voice_chat_init()` - 初始化
- `qwen_voice_chat_start()` - 启动服务
- `qwen_voice_chat_stop()` - 停止服务
- `qwen_voice_chat_deinit()` - 反初始化
**配置与控制**:
- `qwen_voice_chat_set_work_mode()` - 设置工作模式
- `qwen_voice_chat_set_voice_id()` - 设置音色
- `qwen_voice_chat_set_volume()` - 设置音量
- `qwen_voice_chat_get_volume()` - 获取音量
**状态查询**:
- `qwen_voice_chat_is_connected()` - 检查连接状态
- `qwen_voice_chat_reset_dialog()` - 重置对话上下文
---
## 10. 安全注意事项
### 10.1 API Key 安全
- **不要将真实的 API Key 提交到代码仓库**
- 使用环境变量或配置文件管理敏感信息
- 在 `sdkconfig` 文件中设置敏感配置
- 生产环境中考虑使用加密存储
### 10.2 配置示例
在 `sdkconfig` 或 `Kconfig` 中配置:
```
CONFIG_QWEN_APP_ID="mm_xxxxxxxxxxxxxxxxxxxx"
CONFIG_QWEN_WS_ID="llm-xxxxxxxxxxxxx"
CONFIG_QWEN_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
```
### 10.3 获取阿里云凭证
1. 访问 [阿里云百炼控制台](https://bailian.console.aliyun.com/)
2. 创建多模态交互应用
3. 在应用设置中获取:
- **App ID**: 应用唯一标识
- **Workspace ID**: 工作空间标识
- **API Key**: 访问密钥(请妥善保管)
---
*文档生成时间: 2026年2月20日*
*基于: bk_aidk-ai_release-v2.0.1.9*
*版本: 脱敏版*
效果demo展示
总结与后续计划
总结
这是第一次接触硬件嵌入式开发,还挺有意思的。
本文基于硬件博通BK7258 AI玩具开发板,搭建Armino AIDK SDK开发环境,并初次尝试了软件编译和软件烧录到硬件;随后尝试了把阿里云百炼的多模态交互开发套件集成到BK7258硬件中,实现了基础的全双工实时语音交互功能。
目前整体项目架构如下:
┌──────────────────────┐
│ 你的项目架构 │
├──────────────────────┤
│ 应用层: 语音对话逻辑 (qwen_voice_chat) │
├──────────────────────┤
│ 中间件: Armino SDK / FreeRTOS │
├──────────────────────┤
│ 硬件抽象: HAL层 (qwen_sdk_hal.c) │
├──────────────────────┤
│ 硬件层: BK7258芯片 │
│ ├── CPU0: 网络 + 应用逻辑 │
│ ├── CPU1: 音频/视频处理 │
│ ├── 音频编解码器 │
│ ├── Wi-Fi模块 │
│ └── GPIO/LED/电源管理 │
└──────────────────────┘
后续规划
本文仅做了简单的环境搭建,还有很多可以优化的方向:
- 多模态交互开发套件内的提示词优化;
- 多模态交互开发套件内的知识库、长期记忆、插件开启和使用;
- 多模态交互开发套件的视频功能接入;
- 唤醒词定制化;
- 自建长期记忆系统;
- 通过硬件摄像头接入VL模型实现人脸追踪或者多模态理解;
- 还有另外一条技术路线值得探索:让硬件分别调用ASR、LLM、TTS模型,自建更灵活的大模型调用链路;
我下一步会先首先尝试通过硬件摄像头接入VL模型。
发表回复