You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建训练TensorFlow模型识别唤醒词'red on'/'red off'以控制LED

TensorFlow双唤醒词识别+LED控制实现方案

1. 数据集准备

  • 你需要准备三类16kHz单声道音频样本,单条时长控制在1~1.5s即可:red on、red off、无关语音/背景噪音,每类样本量至少500条,最好覆盖不同口音、不同录制距离、不同环境噪音的场景,自己录制或者从公开语音数据集裁剪都可以。
  • 做数据增强降低过拟合风险:对现有样本随机加高斯白噪、±10%时间拉伸、±半音音调调整,能直接把样本量翻3~5倍。
  • 统一提取MFCC特征作为模型输入:用TensorFlow内置的tf.audio.compute_mfccs接口就可以,每条样本提取13维MFCC特征,不需要额外处理复杂特征。

2. 模型构建与训练

就用轻量型CNN就行,完全能满足两个唤醒词的识别需求,不需要上大模型,训练快还容易部署到嵌入式设备。

import tensorflow as tf
from tensorflow.keras import layers, models

# 输入shape根据你MFCC提取的时间步长调整,这里是44个时间步、13维特征
model = models.Sequential([
    layers.Input(shape=(44, 13)),
    layers.Reshape((44, 13, 1)),
    layers.Conv2D(32, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dropout(0.3),
    # 3分类输出:red on、red off、其他无效指令
    layers.Dense(3, activation='softmax')
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy']
)
  • 把数据集按8:1:1拆分训练集、验证集、测试集,训练20~30轮就行,加个早停回调,验证集准确率连续3轮不涨就停止训练,避免过拟合。
  • 训练完成后把模型转成TensorFlow Lite格式,压缩后体积很小,适合嵌入式部署。如果识别准确率不够,优先加对应类别的样本,其次调整推理置信度阈值,比如只有识别置信度高于0.8才判定为有效指令,能大幅降低误触发概率。

3. 对接LED控制逻辑

根据你用的硬件选择部署方案即可,常用的两种方案:

  • 树莓派部署:接USB麦克风,跑TensorFlow Lite实时采集音频推理,识别到red on就调用GPIO口输出高电平点亮红色LED,识别到red off就输出低电平熄灭。可以加连续两次识别一致才执行的逻辑,进一步降低误触。
  • ESP32嵌入式部署:把TFLite微解释器和模型一起烧录到ESP32里,外接MEMS麦克风和LED,推理逻辑和上面一致,功耗比树莓派低很多,适合长期运行。

内容的提问来源于stack exchange,提问作者Elsa B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:45:05