ESP-SR 语音识别框架开发教程
ESP-SR 是乐鑫(Espressif)公司开发的语音识别框架,专门为 ESP32 系列芯片设计,帮助用户构建 AI 语音解决方案。该框架集成了音频前端处理、唤醒词检测、语音命令识别和语音合成等核心功能。## 项目概述ESP-SR 框架包含以下主要模块:- **音频前端(AFE)**:集成回声消除(AEC)、语音活动检测(VAD)、盲源分离(BSS)和噪声抑制(NS)等功能- **
ESP-SR 语音识别框架开发教程
【免费下载链接】esp-sr Speech recognition 项目地址: https://gitcode.com/gh_mirrors/es/esp-sr
ESP-SR 是乐鑫(Espressif)公司开发的语音识别框架,专门为 ESP32 系列芯片设计,帮助用户构建 AI 语音解决方案。该框架集成了音频前端处理、唤醒词检测、语音命令识别和语音合成等核心功能。
项目概述
ESP-SR 框架包含以下主要模块:
- 音频前端(AFE):集成回声消除(AEC)、语音活动检测(VAD)、盲源分离(BSS)和噪声抑制(NS)等功能
- 唤醒词引擎(WakeNet):提供高性能、低内存占用的唤醒词检测算法
- 语音命令识别(MultiNet):支持离线语音命令识别,可灵活添加自定义命令
- 语音合成:支持多种语言的语音合成功能
环境准备与项目搭建
克隆项目仓库
git clone https://gitcode.com/gh_mirrors/es/esp-sr
cd esp-sr
安装依赖环境
确保已安装 ESP-IDF 开发环境,这是开发 ESP32 系列芯片的必要条件。
核心功能实现
语音命令管理
ESP-SR 提供了完整的语音命令管理功能,开发者可以通过以下 API 进行操作:
// 初始化语音命令系统
esp_err_t esp_mn_commands_alloc(const esp_mn_iface_t *multinet, model_iface_data_t *model_data);
// 添加语音命令
esp_err_t esp_mn_commands_add(int command_id, const char *string);
// 删除语音命令
esp_err_t esp_mn_commands_remove(const char *string);
// 修改语音命令
esp_err_t esp_mn_commands_modify(const char *old_string, const char *new_string);
// 获取命令数量
int esp_mn_commands_num(void);
唤醒词支持
ESP-SR 支持多种唤醒词模型,包括:
- WakeNet9:高性能唤醒词检测模型
- WakeNet9s:精简版模型,可在无 PSRAM 的芯片上运行
- WakeNet9l:优化快速语音响应的增强版模型
支持的唤醒词包括:"Hi,乐鑫"、"Hi,ESP"、"小爱同学"、"Alexa" 等众多中英文唤醒词。
语音命令识别
MultiNet 模型支持中英文语音命令识别,最大支持 300 条语音命令:
- 中文命令:如"打开空调"、"打开卧室灯"等
- 英文命令:如"Turn on the light"、"Open the door"等
开发示例
基础语音识别示例
#include "esp_sr.h"
#include "esp_mn_speech_commands.h"
void app_main(void)
{
// 初始化语音识别框架
esp_sr_init();
// 创建语音命令列表
esp_mn_commands_alloc(multinet_model, model_data);
// 添加自定义语音命令
esp_mn_commands_add(1, "打开灯光");
esp_mn_commands_add(2, "关闭灯光");
esp_mn_commands_add(3, "调节亮度");
// 启动语音识别
esp_sr_start_recognition();
while (1) {
// 处理识别结果
esp_sr_process_result();
vTaskDelay(10 / portTICK_PERIOD_MS);
}
}
音频前端配置
// 配置音频前端参数
afe_config_t afe_config = {
.aec_init = true,
.se_init = true,
.vad_init = true,
.wakenet_init = true,
.voice_communication_init = false,
.voice_communication_agc_init = false,
.voice_communication_agc_gain = 15,
.vad_mode = VAD_MODE_3,
.wakenet_model_name = "wn9_hilexin",
.wakenet_mode = DET_MODE_2CH_90,
.afe_mode = SR_MODE_LOW_COST,
.afe_perferred_core = 0,
.afe_perferred_priority = 5,
.afe_ringbuf_size = 50,
.memory_alloc_mode = AFE_MEMORY_ALLOC_MORE_PSRAM,
.agc_mode = AFE_MN_PEAK_AGC_MODE_2,
.pcm_config = {
.total_ch_num = 3,
.mic_num = 2,
.ref_num = 1,
},
};
// 初始化音频前端
esp_afe_sr_iface_t *afe_handle = esp_afe_sr_1mic_create(&afe_config);
应用场景
智能家居控制
通过语音命令控制智能家居设备,如灯光、空调、窗帘等。
语音助手
构建本地语音助手,支持唤醒词和语音指令交互。
工业语音控制
在工业环境中实现语音控制设备操作,提高工作效率。
最佳实践
- 唤醒词选择:根据目标用户群体选择合适的唤醒词
- 命令设计:设计简洁明了的语音命令,避免歧义
- 噪声环境优化:根据实际使用环境调整音频前端参数
- 内存管理:合理配置内存分配策略,优化性能
总结
ESP-SR 为开发者提供了完整的语音识别解决方案,从音频前端处理到高级语义理解,涵盖了语音交互的各个环节。通过灵活的 API 设计和丰富的功能模块,开发者可以快速构建各种语音交互应用。
该框架特别适合物联网设备、智能家居、工业控制等场景,为设备赋予自然语音交互能力,提升用户体验。
【免费下载链接】esp-sr Speech recognition 项目地址: https://gitcode.com/gh_mirrors/es/esp-sr
更多推荐





所有评论(0)