2. 数据采集

任务目标

本案例完成EdgeImpulse数据采集闭环:使用手机浏览器采集音频数据,上传至EdgeImpulse工程,并验证数据已正确入库。采集数据将用于后续训练关键词唤醒模型。

前置准备

  • EdgeImpulse账号(免费版即可)
  • 已创建EdgeImpulse工程(目标设备选择Any device或手机)
  • 手机与电脑处于同一网络(非必需,但推荐)

操作步骤

1. 获取采集入口

登录EdgeImpulse,进入你的工程。在左侧导航栏点击Data acquisition页面。在页面右侧的Collect data面板中,确认Device下拉框显示的是Web Phone/Microphone(若未出现,点击页面底部的“Connect a device”并选择“Use your phone or computer's microphone”)。

2. 配置采集参数

  • Label:输入样本标签,例如 yes(用于后续关键词识别)
  • Sample length (ms):建议设为 1000(1秒)
  • Frequency:保持默认 16000 Hz(16kHz采样率是语音识别的常用配置)

3. 开始采集

点击Start sampling按钮。浏览器会弹出麦克风权限请求,点击“允许”。录音持续1秒后自动停止,样本会自动上传至EdgeImpulse云端。重复此操作采集多个样本。建议每个标签采集至少20个样本,并尽量在不同环境(安静/嘈杂)下采集以增加数据多样性。

4. 验证上传结果

采集完成后,在Data acquisition页面下方的Collected data表格中,应能看到新上传的样本记录。每条记录包含:样本ID、标签、长度、频率、文件大小等信息。点击任意样本右侧的波形图标,可查看音频波形图,确认数据有效。

关键代码(可选:EdgeImpulse API方式上传)

除手机浏览器直接采集外,也可通过API批量上传本地音频文件。以下Python脚本展示如何将本地音频文件上传至EdgeImpulse工程:

import requests
import os

 = "ei_your__here"  # 从EdgeImpulse Dashboard > Keys获取
PROJECT_ID = "your_project_id"      # 从工程URL中获取,如 https://studio.edgeimpulse.com/studio/12345 中的12345
LABEL = "yes"
FOLDER = "./audio_samples/"          # 本地音频文件夹

headers = {
    "x-": ,
    "x-label": LABEL,
}

for filename in os.listdir(FOLDER):
    if not filename.endswith(".wav"):
        continue
    filepath = os.path.join(FOLDER, filename)
    with open(filepath, "rb") as f:
        files = {"data": (filename, f, "audio/wav")}
        url = f"https://ingestion.edgeimpulse.com/api/training/files"
        response = requests.post(url, headers=headers, files=files)
        if response.status_code == 200:
            print(f"上传成功: {filename}")
        else:
            print(f"上传失败: {filename}, 状态码: {response.status_code}, 错误: {response.text}")

使用说明:将上述代码保存为 upload.py,替换、PROJECT_ID和FOLDER路径后,在终端运行 python upload.py。上传成功后,返回EdgeImpulse的Data acquisition页面,在Collected data中即可看到新样本。

验证判定标准

  • 在Collected data表格中能看到本次采集的样本记录,且标签、长度、频率与配置一致
  • 点击样本波形图标,能正常显示音频波形,无空白或异常截断
  • 若使用API方式,终端输出“上传成功”且页面中出现对应样本

满足以上条件即表示数据采集与上传闭环完成,可进入下一步的数据清洗或模型训练环节。