littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于Picovoice库的语音唤醒系统

项目简介

本项目是基于Picovoice库为Arduino开发板设计的语音唤醒系统。借助Porcupine引擎,可实现高精度语音唤醒功能,支持在物联网设备上进行实时语音命令检测。项目支持多种Arduino开发板,还具备自定义唤醒词功能,适用于各类语音控制应用场景。

项目的主要特性和功能

  • 高精度语音唤醒:Porcupine引擎运用深度神经网络,能在复杂音频环境中准确识别预设唤醒词。
  • 轻量级设计:引擎设计紧凑,计算效率高,适合资源受限的物联网设备。
  • 多唤醒词支持:可同时检测多个唤醒词,且不增加额外运行时开销。
  • 自定义唤醒词:开发者能通过Picovoice Console创建和训练自定义的唤醒词模型。
  • 兼容性:支持如Arduino Portenta H7和Arduino Nano 33 BLE Sense等多种Arduino开发板。

安装使用步骤

假设用户已下载本项目的源码文件。

1. 获取AccessKey

在使用本项目前,需从Picovoice Console获取有效的AccessKey,它是使用Porcupine SDK的必要凭证。

2. 配置项目

将项目源码下载到本地,在代码中配置以下内容: - 定义AccessKey:在代码里设置从Picovoice Console获取的AccessKey。 - 定义唤醒词模型:按需设置默认的唤醒词模型或导入自定义的唤醒词模型。 ```c

include

define MEMORY_BUFFER_SIZE ...

static uint8_t memory_buffer[MEMORY_BUFFER_SIZE] attribute((aligned(16)));

static const char* ACCESS_KEY = "your_access_key_here"; // 替换为您的AccessKey

const uint8_t keyword_array[] = {...}; const int32_t keyword_model_sizes = sizeof(keyword_array); const void *keyword_models = keyword_array; static const float SENSITIVITY = 0.75f;

pv_porcupine_t *handle = NULL; ```

3. 初始化Porcupine引擎

setup()函数中初始化Porcupine引擎: ```c const pv_status_t status = pv_porcupine_init( ACCESS_KEY, MEMORY_BUFFER_SIZE, memory_buffer, 1, &keyword_model_sizes, &keyword_models, &SENSITIVITY, &handle);

if (status != PV_STATUS_SUCCESS) { // 错误处理逻辑 } ```

4. 处理音频数据

loop()函数中,将录制的音频数据传递给Porcupine引擎进行处理: c const int16_t *pcm = pv_audio_rec_get_new_buffer(); int32_t keyword_index; const pv_status_t status = pv_porcupine_process(handle, pcm, &keyword_index); if (status != PV_STATUS_SUCCESS) { // 错误处理逻辑 } if (keyword_index != -1) { // 检测到唤醒词的逻辑/回调 }

5. 自定义唤醒词

若需使用自定义的唤醒词,可通过Picovoice Console创建和训练模型。训练完成后,下载模型并导入到项目中: 1. 在Picovoice Console中创建自定义唤醒词模型。 2. 下载模型文件并解压缩。 3. 将模型文件中的数组内容更新到项目代码中。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】