项目简介
本项目是基于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】