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
操作说明
使用
在线工具,按要求上传命令词和播报音 Excel 表格,后台编译完成后,下载download.zip文件并解压将改动的文件拷贝到 SDK,并打补丁
cp -r ${download}/patch/* ${SDK}
git apply --reject speechmind_custom_cmd.patch
备注
git apply 这步如果报错,说明当前 SDK 版本与生成补丁的版本差异较大,请手动将补丁中的修改合入 SDK 对应文件中。
切换到 SDK 的 GCC 项目目录,并运行
menuconfig.py进入配置界面
cd {SDK}/amebalite_gcc_project
./menuconfig.py
导航至以下菜单路径开启 DSP
--------MENUCONFIG FOR General---------
CONFIG DSP Enable --->
[*] Enable DSP
导航至以下菜单路径配置 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
开启 VFS LITTLEFS
--------MENUCONFIG FOR General---------
CONFIG VFS --->
[*] Enable VFS LITTLEFS
开启 AIVoice
--------MENUCONFIG FOR General---------
CONFIG TrustZone --->
...
CONFIG APPLICATION --->
GUI Config --->
...
AI Config --->
[ ] Enable TFLITE MICRO
[*] Enable AIVoice
开启 SpeechMind
--------MENUCONFIG FOR General---------
CONFIG TrustZone --->
...
CONFIG APPLICATION --->
GUI Config --->
...
AI Config --->
[ ] Enable TFLITE MICRO
[*] Enable AIVoice
[*] Enable SpeechMind
编译
./build.py
使用 Flash 烧写工具 烧录以下固件:
km4_boot_all.bin:默认地址
kr4_km4_app.bin:默认地址
tts.bin:烧录地址 0x083E0000, 0x087E0000
dsp_all.bin:烧录地址 0x087E0000, 0x08A00000
aivoice_models.bin:烧录地址 0x08A00000, 0x08E00000
使用
在线工具,按要求上传命令词和播报音 Excel 表格,后台编译完成后,下载download.zip文件并解压将改动的文件拷贝到 SDK,并打补丁
cp -r ${download}/patch/* ${SDK}
git apply --reject speechmind_custom_cmd.patch
备注
git apply 这步如果报错,说明当前 SDK 版本与生成补丁的版本差异较大,请手动将补丁中的修改合入 SDK 对应文件中。
切换到 SDK 的 GCC 项目目录,并运行
menuconfig.py进入配置界面
cd {SDK}/amebalite_gcc_project
./menuconfig.py
导航至以下菜单路径开启 DSP
--------MENUCONFIG FOR General---------
CONFIG DSP Enable --->
[*] Enable DSP
导航至以下菜单路径配置 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
开启 VFS LITTLEFS
--------MENUCONFIG FOR General---------
CONFIG VFS --->
[*] Enable VFS LITTLEFS
开启 AIVoice
--------MENUCONFIG FOR General---------
CONFIG TrustZone --->
...
CONFIG APPLICATION --->
GUI Config --->
...
AI Config --->
[ ] Enable TFLITE MICRO
[*] Enable AIVoice
开启 SpeechMind
--------MENUCONFIG FOR General---------
CONFIG TrustZone --->
...
CONFIG APPLICATION --->
GUI Config --->
...
AI Config --->
[ ] Enable TFLITE MICRO
[*] Enable AIVoice
[*] Enable SpeechMind
编译
./build.py
使用 Flash 烧写工具 烧录以下固件:
km4_boot_all.bin:默认地址
kr4_km4_app.bin:默认地址
tts.bin:烧录地址 0x083E0000, 0x087E0000
dsp_all.bin:烧录地址 0x087E0000, 0x08A00000
aivoice_models.bin:烧录地址 0x08A00000, 0x08E00000
使用
在线工具,按要求上传命令词和播报音 Excel 表格,后台编译完成后,下载download.zip文件并解压将改动的文件拷贝到 SDK,并打补丁
cp -r ${download}/patch/* ${SDK}
git apply --reject speechmind_custom_cmd.patch
备注
git apply 这步如果报错,说明当前 SDK 版本与生成补丁的版本差异较大,请手动将补丁中的修改合入 SDK 对应文件中。
切换到 SDK 的 GCC 项目目录,并运行
menuconfig.py进入配置界面
cd {SDK}/amebasmart_gcc_project
./menuconfig.py
导航至以下菜单路径选择在 Flash 上跑应用
Master 分支:
--------MENUCONFIG FOR General---------
CONFIG Link Option --->
IMG2(Application) running on PSRAM or FLASH? --->
( ) PSRAM
(X) FLASH
v1.1 分支:
--------MENUCONFIG FOR General---------
CONFIG BOOT OPTION --->
[*] XIP_FLASH
开启 VFS LITTLEFS
--------MENUCONFIG FOR General---------
CONFIG VFS --->
[*] Enable VFS LITTLEFS
开启 AIVoice
--------MENUCONFIG FOR General---------
CONFIG TrustZone --->
...
CONFIG APPLICATION --->
GUI Config --->
...
AI Config --->
[ ] Enable TFLITE MICRO
[*] Enable AIVoice
开启 SpeechMind
--------MENUCONFIG FOR General---------
CONFIG TrustZone --->
...
CONFIG APPLICATION --->
GUI Config --->
...
AI Config --->
[ ] Enable TFLITE MICRO
[*] Enable AIVoice
[*] Enable SpeechMind
选择单核
MENUCONFIG FOR CA32 CONFIG --->
...
CONFIG SMP --->
Select Core Num --->
( ) DUAL
(X) SINGLE
编译固件
./build.py
使用 Flash 烧写工具 烧录以下固件:
km4_boot_all.bin:默认地址
km0_km4_ca32_app.bin:烧录地址 0x08020000, 0x08600000
tts.bin:烧录地址 0x08623000, 0x08A23000
运行与预期结果
在开发板上烧录固件后,可体验以下语音交互功能:
语音唤醒
通过说
小强小强或你好小强进行唤醒,如果成功唤醒,会打印日志并播放回复音主人我在。超时
唤醒后一段时间内没有交互,会播报语音
主人我先退下了, 有需要请再唤醒我,后续交互需要重新唤醒。超时的时长可以在${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