ASR(语音识别)

支持的芯片[ RTL8726E ][ RTL8713E ][ RTL8730E ]

概述

ASR 是用于把语音信号识别为文本的模块。

AIVoice 提供了离线语音命令词检测的 ASR 算法,适用于需要快速、可靠且无需网络连接的语音交互应用。

核心特性

  • 连续交互:一次唤醒,多轮识别,无需重复唤醒

  • 语言:当前仅支持 中文普通话

  • 命令词数量:支持 200 条 以内

  • 资源组成:识别资源包括 模型文件FST 文件 (有限状态机),更换或自定义命令词仅需替换 FST 文件,无需改动模型

预置与自定义

  • SDK 默认提供一套包含 打开空调关闭空调 等 40 条 空调场景的预置命令词识别算法。

  • 如需自定义命令词,可通过我们提供的 在线工具 生成对应的 FST 资源文件,快速集成至您的应用中。

定制服务

若项目需求超出以下标准范围,请联系商务团队以获取定制化解决方案:

  • 命令词数量超过 200 条

  • 需要支持其他语种

  • 针对特定场景进行深度性能优化或算法定制

配置

ASR 可配参数:

sensitivity:

提供预先调好阈值的三档灵敏度,灵敏度越高,更容易识别到命令词,但误触发也越多。

详情请参考 ${aivoice_lib_dir}/include/aivoice_asr_config.h

自定义命令词指南

硬件要求

  • 芯片型号

    • RTL8713ECM-VA4-CG

    • RTL8730EAM-VA6-CG

  • Flash 大小: >= 16MB

  • 双麦间距 50mm

  • 双麦、回采路依次对应:

    • RTL8713ECM-VA4-CG: AMIC1、AMIC2、AMIC3

    • RTL8730EAM-VA6-CG: AMIC1、AMIC3、AMIC5

  • 一个外接扬声器

软件要求

准备 ameba-rtos 仓库,下称 ${SDK}。

  • Master 分支: 参考 SDK 下载 中的扩展 XDK 下载方法。

  • 1.1 分支:

git clone https://github.com/Ameba-AIoT/ameba-rtos.git
cd ameba-rtos
git checkout remotes/origin/release/v1.1 -b release/v1.1

操作说明

  1. 使用 在线工具,按要求上传命令词和播报音 Excel 表格,后台编译完成后,下载 download.zip 文件并解压

  2. 将改动的文件拷贝到 SDK,并打补丁

cp -r ${download}/patch/* ${SDK}
git apply --reject speechmind_custom_cmd.patch

备注

git apply 这步如果报错,说明当前 SDK 版本与生成补丁的版本差异较大,请手动将补丁中的修改合入 SDK 对应文件中。

  1. 切换到 SDK 的 GCC 项目目录,并运行 menuconfig.py 进入配置界面

cd {SDK}/amebalite_gcc_project
./menuconfig.py
  1. 导航至以下菜单路径开启 DSP

--------MENUCONFIG FOR General---------
CONFIG DSP Enable  --->
   [*] Enable DSP
  1. 导航至以下菜单路径配置 Link

  • Master 分支:

--------MENUCONFIG FOR General---------
CONFIG Link Option  --->
   IMG2(Application) running on FLASH or PSRAM?
      (X) FLASH
      ( ) PSRAM
   IMG2 Data and Heap in SRAM or PSRAM?  --->
      ( ) SRAM
      (X) PSRAM
  • v1.1 分支:

--------MENUCONFIG FOR General---------
CONFIG Link Option  --->
   IMG2(Application) running on FLASH or PSRAM?
      (X) CodeInXip_DataHeapInPsram
      ( ) CodeInPsram_DataHeapInSram
      ( ) CodeInPsram_DataHeapInPsram
      ( ) CodeInXip_DataHeapInSram
  1. 开启 VFS LITTLEFS

--------MENUCONFIG FOR General---------
CONFIG VFS  --->
   [*] Enable VFS LITTLEFS
  1. 开启 AIVoice

--------MENUCONFIG FOR General---------
CONFIG TrustZone  --->
...
CONFIG APPLICATION  --->
   GUI Config  --->
   ...
   AI Config  --->
      [ ] Enable TFLITE MICRO
      [*] Enable AIVoice
  1. 开启 SpeechMind

--------MENUCONFIG FOR General---------
CONFIG TrustZone  --->
...
CONFIG APPLICATION  --->
   GUI Config  --->
   ...
   AI Config  --->
      [ ] Enable TFLITE MICRO
      [*] Enable AIVoice
      [*] Enable SpeechMind
  1. 编译

./build.py
  1. 使用 Flash 烧写工具 烧录以下固件:

  • km4_boot_all.bin:默认地址

  • kr4_km4_app.bin:默认地址

  • tts.bin:烧录地址 0x083E0000, 0x087E0000

  • dsp_all.bin:烧录地址 0x087E0000, 0x08A00000

  • aivoice_models.bin:烧录地址 0x08A00000, 0x08E00000

运行与预期结果

在开发板上烧录固件后,可体验以下语音交互功能:

  • 语音唤醒

    通过说 小强小强你好小强 进行唤醒,如果成功唤醒,会打印日志并播放回复音 主人我在

  • 超时

    唤醒后一段时间内没有交互,会播报语音 主人我先退下了, 有需要请再唤醒我,后续交互需要重新唤醒。超时的时长可以在 ${SDK}/component/application/speechmind/src/speech_mind.c 代码中通过以下参数调整:

    aivoice_param.timeout = 10;
    
  • 命令词识别

    唤醒后,可以通过自定义的语音指令进行连续交互,如果成功识别,会打印日志并播放对应的回复音 命令 x 已执行。支持的命令词列表见开机后的日志。

    如果需要更换回复音频,请根据 ${download}/patch/component/application/speechmind/src/speech_tts.c 中的 tts_content_name 音频名,参考 AIVoice 开发指南 中的示例二,自行更换音频准备 tts.bin 文件。

  • 声源定位

    当声源定位功能开启时,每次唤醒后,都会检测说话人所在角度。唤醒后日志会打印角度并播放回复音 xx 。声源定位功能可以在 ${SDK}/component/application/speechmind/src/speech_mind.c 代码中通过以下宏开关:

    #define ENABLE_SSL_DOA 1