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}, 具体参考
SDK 下载
中的 XDK 下载方法。
操作说明
使用
在线工具,按要求上传命令词和播报音 Excel 表格,后台编译完成后,下载download.zip文件并解压将改动的文件拷贝到 SDK,并打补丁
cp -r ${download}/patch/* ${SDK}
cd ${SDK}/
python component/aivoice/tools/patch_custom_cmd.py RTL8713E
备注
请务必先切换到 SDK 根目录,再运行脚本。如果未在正确的目录下执行,脚本将无法找到需要修改的文件,导致操作失败。
配置编译环境,并运行
ameba.py menuconfig进入配置界面
source env.sh
ameba.py soc RTL8726E
ameba.py menuconfig
导航至以下菜单路径开启 DSP
--------MENUCONFIG FOR General---------
CONFIG DSP Enable --->
[*] Enable DSP
导航至以下菜单路径配置 Link
--------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
开启 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
编译
ameba.py build
使用 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}
cd ${SDK}/
python component/aivoice/tools/patch_custom_cmd.py RTL8713E
备注
请务必先切换到 SDK 根目录,再运行脚本。如果未在正确的目录下执行,脚本将无法找到需要修改的文件,导致操作失败。
配置编译环境,并运行
ameba.py menuconfig进入配置界面
source env.sh
ameba.py soc RTL8726E
ameba.py menuconfig
导航至以下菜单路径开启 DSP
--------MENUCONFIG FOR General---------
CONFIG DSP Enable --->
[*] Enable DSP
导航至以下菜单路径配置 Link
--------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
开启 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
编译
ameba.py build
使用 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}
cd ${SDK}/
python component/aivoice/tools/patch_custom_cmd.py RTL8730E
备注
请务必先切换到 SDK 根目录,再运行脚本。如果未在正确的目录下执行,脚本将无法找到需要修改的文件,导致操作失败。
配置编译环境,并运行
ameba.py menuconfig进入配置界面
source env.sh
ameba.py soc RTL8730E
ameba.py menuconfig
导航至以下菜单路径选择在 Flash 上跑应用
--------MENUCONFIG FOR General---------
CONFIG Link Option --->
IMG2(Application) running on PSRAM or FLASH? --->
( ) PSRAM
(X) 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
编译固件
ameba.py build
使用 Flash 烧写工具 烧录以下固件:
km4_boot_all.bin:默认地址
km0_km4_ca32_app.bin:烧录地址 0x08040000, 0x08600000
tts.bin:烧录地址 0x08640000, 0x08A40000
运行与预期结果
在开发板上烧录固件后,可体验以下语音交互功能:
语音唤醒
通过说
小强小强或你好小强进行唤醒,如果成功唤醒,会打印日志并播放回复音主人我在。超时
唤醒后一段时间内没有交互,会播报语音
主人我先退下了, 有需要请再唤醒我,后续交互需要重新唤醒。超时的时长可以在${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