ESP-SR 语音识别框架开发教程

【免费下载链接】esp-sr Speech recognition 【免费下载链接】esp-sr 项目地址: 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);

应用场景

智能家居控制

通过语音命令控制智能家居设备,如灯光、空调、窗帘等。

语音助手

构建本地语音助手,支持唤醒词和语音指令交互。

工业语音控制

在工业环境中实现语音控制设备操作,提高工作效率。

最佳实践

  1. 唤醒词选择:根据目标用户群体选择合适的唤醒词
  2. 命令设计:设计简洁明了的语音命令,避免歧义
  3. 噪声环境优化:根据实际使用环境调整音频前端参数
  4. 内存管理:合理配置内存分配策略,优化性能

音频前端处理流程

总结

ESP-SR 为开发者提供了完整的语音识别解决方案,从音频前端处理到高级语义理解,涵盖了语音交互的各个环节。通过灵活的 API 设计和丰富的功能模块,开发者可以快速构建各种语音交互应用。

该框架特别适合物联网设备、智能家居、工业控制等场景,为设备赋予自然语音交互能力,提升用户体验。

【免费下载链接】esp-sr Speech recognition 【免费下载链接】esp-sr 项目地址: https://gitcode.com/gh_mirrors/es/esp-sr

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐