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方式,终端输出“上传成功”且页面中出现对应样本
满足以上条件即表示数据采集与上传闭环完成,可进入下一步的数据清洗或模型训练环节。