这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » max78000实现语音识别1---环境安装

共2条 1/1 1 跳转至

max78000实现语音识别1---环境安装

菜鸟
2026-07-23 22:42:15     打赏

# Windows 下搭建 MAX78000FTHR 语音识别开发环境

本文使用 Analog Devices 官方 MSDK 中的 kws20_demo,在 MAX78000FTHR 开发板上实现离线英文关键词识别。

示例能够识别 20 个英文关键词:

up, down, left, right, stop, go, yes, no, on, off,
one, two, three, four, five, six, seven, eight, nine, zero

其他语音和环境噪声会被分类为 Unknown。

官方资料:

1. 硬件与软件环境

本次使用的环境:

操作系统:Windows 11
Linux 环境:Ubuntu 24.04 WSL2
开发板:MAX78000FTHR
编译器:Arm GNU Toolchain 13.2.1
构建工具:GNU Make 4.3
下载器:板载 DAPLink
调试串口:115200 8-N-1

开发板通过 USB 连接后,会出现:

  • 一个名为 DAPLINK 的移动磁盘;

  • 一个 USB 串口,例如 COM5;

  • 一个 CMSIS-DAP 调试接口。

可以打开 DAPLink 磁盘中的 DETAILS.TXT 确认板型:

URL: http://www.maximintegrated.com/max78000fthr

2. 安装 WSL2

以管理员身份打开 PowerShell:

wsl --install -d Ubuntu-24.04

安装完成后重启 Windows,然后检查 WSL 状态:

wsl --list --verbose

正常情况下可以看到:

NAME            STATE      VERSION
Ubuntu-24.04    Stopped    2

如果系统中已经安装 Ubuntu,则无需重复安装。

3. 获取 MSDK 源码

建议把工程放在不包含空格和中文的路径下,例如:

D:\Code\MAX78000

进入该目录:

cd D:\Code\MAX78000

拉取官方 MSDK:

git clone --depth 1 --recurse-submodules --shallow-submodules `
  https://github.com/analogdevicesinc/msdk.git msdk

语音识别示例位于:

msdk\Examples\MAX78000\CNN\kws20_demo

如果 GitHub 网络不稳定,也可以下载仓库 ZIP 或使用官方 MSDK 安装器,然后确保 下面两个目录完整存在:

msdk\Examples
msdk\Libraries

4. 安装 Arm 交叉编译工具链

本文使用 WSL 中的 Ubuntu 软件源安装工具链。

执行:

wsl -d Ubuntu-24.04 -u root -- apt-get update

安装 GNU Make、Arm GCC 和 Newlib:

wsl -d Ubuntu-24.04 -u root -- env `
  DEBIAN_FRONTEND=noninteractive `
  apt-get install -y --no-install-recommends `
  make gcc-arm-none-eabi libnewlib-arm-none-eabi

这里使用 --no-install-recommends,可以避免下载体积很大的、当前 C 固件不需要的 C++ 标准库。

检查版本:

wsl -d Ubuntu-24.04 -- arm-none-eabi-gcc --version
wsl -d Ubuntu-24.04 -- make --version

本次安装结果为:

arm-none-eabi-gcc 13.2.1
GNU Make 4.3

5. 配置开发板型号

打开:

msdk\Examples\MAX78000\CNN\kws20_demo\project.mk

MAX78000FTHR 使用的板级支持包名称为:

BOARD=FTHR_RevA

也可以不修改文件,直接在编译命令中传入:

BOARD=FTHR_RevA

如果使用的是大尺寸 MAX78000EVKIT,则应改为:

BOARD=EvKit_V1

6. 确认麦克风识别模式

打开示例的 main.c,确认以下宏处于启用状态:

#define ENABLE_MIC_PROCESSING

它表示从开发板麦克风实时采集音频。

如果注释掉该宏,程序会使用头文件中的测试向量,而不是实时麦克风:

// #define ENABLE_MIC_PROCESSING

7. 编译 KWS20 语音识别示例

Windows 的:

D:\Code\MAX78000

在 WSL 中对应:

/mnt/d/Code/MAX78000

执行编译:

wsl -d Ubuntu-24.04 -- bash -lc `
  'cd /mnt/d/Code/MAX78000/msdk/Examples/MAX78000/CNN/kws20_demo && make -j$(nproc) BOARD=FTHR_RevA'

编译成功后可以看到类似结果:

Memory region         Used Size  Region Size  %age Used
FLASH:                    380 KB       512 KB     74.22%
SRAM:                   38112 B       128 KB     29.08%

生成的 ELF 文件位于:

msdk\Examples\MAX78000\CNN\kws20_demo\build\max78000.elf

8. 生成 DAPLink 所需的 HEX 文件

使用 arm-none-eabi-objcopy 将 ELF 转换为 Intel HEX:

wsl -d Ubuntu-24.04 -- arm-none-eabi-objcopy `
  -O ihex `
  /mnt/d/Code/MAX78000/msdk/Examples/MAX78000/CNN/kws20_demo/build/max78000.elf `
  /mnt/d/Code/MAX78000/msdk/Examples/MAX78000/CNN/kws20_demo/build/max78000.hex

最终生成:

msdk\Examples\MAX78000\CNN\kws20_demo\build\max78000.hex

9. 通过 DAPLink 烧录

开发板连接电脑后,会出现名为 DAPLINK 的磁盘。假设盘符是 E:,执行:

Copy-Item `
  .\msdk\Examples\MAX78000\CNN\kws20_demo\build\max78000.hex `
  E:\max78000-kws20.hex

复制过程可能持续几十秒。烧录完成后 DAPLink 会自动重新挂载,并复位 MAX78000。

检查是否存在:

E:\FAIL.TXT

如果没有 FAIL.TXT,通常表示烧录成功。

还可以查看:

E:\DETAILS.TXT

其中的 Remount count 会在烧录后增加。

10. 打开串口监视器

串口配置:

波特率:115200
数据位:8
校验位:None
停止位:1
流控:None

可以使用 PuTTY、MobaXterm、串口助手,也可以使用 PowerShell 脚本。

程序启动后应输出:

ANALOG DEVICES
Keyword Spotting Demo
Ver. 3.2.3

***** Init *****

*** I2S & Mic Init ***

*** READY ***

MAX78000FTHR 上:

  • SW4 是复位按键;

  • SW1/PB1 用于启动或继续语音识别 Demo。

运行串口监视器后按下 SW1,然后对着板载麦克风说关键词。

识别成功时会输出:

Detected word: YES (94.2%)

没有匹配到关键词时会输出:

Detected word: Unknown

本次板上验证中,CNN 单次推理时间约为:

CNN Time: 1849 us

11. 一键脚本

当前工作区已经准备好以下脚本:

# 安装 WSL 编译环境
.\scripts\setup-wsl.ps1

# 编译并生成 ELF/HEX
.\scripts\build.ps1

# 编译、烧录并捕获启动日志
.\scripts\flash.ps1

# 持续监视识别结果
.\scripts\monitor.ps1

如需清理后重新编译:

.\scripts\build.ps1 -Clean

12. 常见问题

12.1 Git Clone 长时间停在零字节

可以改用官方仓库 ZIP,或者配置 GitHub 代理。只要 Examples 和 Libraries完整,KWS20 示例就可以构建。

12.2 找不到 arm-none-eabi-gcc

检查 WSL 中是否安装成功:

wsl -d Ubuntu-24.04 -- which arm-none-eabi-gcc

预期输出:

/usr/bin/arm-none-eabi-gcc

12.3 编译时提示 MAXIM_PATH is not set

如果工程仍位于标准 MSDK 目录结构中,Makefile 会自动推导 MSDK 根目录,这条警告 通常不影响编译。

也可以显式指定:

wsl -d Ubuntu-24.04 -- bash -lc `
  'cd /mnt/d/Code/MAX78000/msdk/Examples/MAX78000/CNN/kws20_demo && MAXIM_PATH=/mnt/d/Code/MAX78000/msdk make BOARD=FTHR_RevA'

12.4 串口没有输出

依次检查:

  1. 串口是否为 DAPLink 对应的 COM 口;

  2. 波特率是否为 115200;

  3. 是否有其他串口软件占用端口;

  4. 先打开串口,再按 SW4 复位;

  5. USB 是否连接到板子的 CN1 USB/PWR 接口。

12.5 串口输出乱码

确认配置为:

115200、8 位数据位、无校验、1 位停止位、无流控

建议先关闭其他串口工具,再重新打开端口并复位开发板。

13. 后续开发方向

官方 KWS20 示例属于离线关键词识别,并不是完整的连续语音转文字系统。

如果要识别自定义中文词语,后续流程是:

  1. 确定中文唤醒词或命令词表;

  2. 采集不同说话人的音频;

  3. 加入背景噪声和未知词数据;

  4. 使用 ai8x-training 训练量化模型;

  5. 使用 ai8x-synthesis 生成 MAX78000 CNN 配置和权重;

  6. 替换示例中的 cnn.c、cnn.h 和 weights.h;

  7. 重新编译、烧录并测试准确率。


院士
2026-07-24 11:32:46     打赏
2楼

一切问题皆源于网络。

唉,没有梯子,有的时候真是麻烦。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]