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

基于TensorFlow的唤醒词检测故障:‘Hey Jarvis’无法识别

唤醒词检测程序无法识别"Hey Jarvis"的排查与解决

无关警告说明

终端中出现的CUDA相关警告是因为未配置GPU,不影响程序在CPU上运行,可直接忽略。

核心排查与修复步骤

1. 对齐音频预处理与训练逻辑

  • 你当前录制的是双声道音频(channels=2),但librosa.load默认会将其转为单声道。如果训练模型时使用的是双声道音频,这里的预处理会导致特征不匹配,建议修改录制代码为单声道:
    myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=1)
    
  • 确认采样率统一:录制用的是44100Hz,检查训练集音频的采样率是否一致。若训练时用的是其他采样率(如16000Hz),加载音频时需指定对应采样率:
    audio, sample_rate = librosa.load(filename, sr=16000)  # sr设为训练时的采样率
    
  • 核对MFCC特征处理逻辑:确保n_mfcc=40以及np.mean(mfcc.T, axis=0)的特征聚合方式,和模型训练时的代码完全一致。如果训练时用的是MFCC序列而非均值,当前特征维度不匹配,模型无法正确识别。

2. 验证录制音频的有效性

  • 手动播放生成的prediction.wav,确认音频清晰、包含完整的"Hey Jarvis"发音,无录制失败或杂音问题。
  • 可视化录制音频的MFCC特征,和训练集中正样本的MFCC对比,查看特征分布是否一致:
    import matplotlib.pyplot as plt
    mfcc = librosa.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40)
    plt.figure(figsize=(10, 4))
    librosa.display.specshow(mfcc, x_axis='time')
    plt.colorbar()
    plt.title('MFCC')
    plt.tight_layout()
    plt.show()
    

3. 排查模型训练问题

  • 模型对负样本的置信度始终为1.0,大概率是训练集数据不平衡(负样本远多于正样本)或正样本质量差(发音不标准、录音模糊),导致模型偏向预测负样本。
  • 确认训练时的标签映射:正样本("Hey Jarvis")是否标注为1,负样本标注为0。如果标签搞反,当前的判断逻辑会完全错误。
  • 用训练集中的正样本输入当前预测代码,若仍无法检测,说明模型训练存在问题,需重新训练,优化数据集或模型结构。

4. 临时调整检测阈值(仅作测试)

当前阈值设为0.10,若模型正样本输出置信度普遍偏低,可临时降低阈值测试,但这无法解决根本问题:

if prediction[:, 1] > 0.05:  # 降低阈值
    print(f"Wake Word Detected for ({i})")
    print("Confidence:", prediction[:, 1])
    i += 1

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:40:37