我正在做一个旨在检测婴儿哭声的个人项目。我有一个婴儿哭声音频数据库,并使用 MATLAB 从这些文件中提取了 MFCC。我为音频被分成的每一帧提出了 12 个系数。我的目标是将麦克风获得的音频与训练数据(样本中的 MFCC)进行比较。我想我会将音频输入数据拆分为帧,然后使用 k-NN 分类器将每个帧与训练数据进行比较。实际上,我的问题是如何训练 k-NN 分类器,因为我有很多样本要比较。我的意思是,我应该将输入数据中的帧与什么进行比较?
谢谢,
我正在做一个旨在检测婴儿哭声的个人项目。我有一个婴儿哭声音频数据库,并使用 MATLAB 从这些文件中提取了 MFCC。我为音频被分成的每一帧提出了 12 个系数。我的目标是将麦克风获得的音频与训练数据(样本中的 MFCC)进行比较。我想我会将音频输入数据拆分为帧,然后使用 k-NN 分类器将每个帧与训练数据进行比较。实际上,我的问题是如何训练 k-NN 分类器,因为我有很多样本要比较。我的意思是,我应该将输入数据中的帧与什么进行比较?
谢谢,
您的问题不是您要识别的两个(或更多)类的判别性问题。如果是这种情况 - 例如通过记录鸟鸣来区分婴儿哭声,您会将来自传入音频流的每个 MFCC 向量与大量帧进行比较,这些帧被标记为“鸟鸣”或“婴儿哭声”,具体取决于他们来自的录音。请注意,如果您的训练集有超过几秒钟的音频,那么数据集将绝对庞大。
您的问题在于衡量您的数据与给定类别的相似程度;或者它与基于示例数据训练的模型的匹配程度如何——这是一个“一类”问题。在贝叶斯框架中,这相当于在给定 MFCC 框架作为证据的情况下评估“婴儿哭泣”假设的概率。我建议您用贝叶斯术语来描述您的问题,因为对于您的应用程序,误报或错过哭声检测可能会涉及不同的成本;所以你想使用一种可以平衡它们的方法。在概率框架中工作意味着您需要为 MFCC 向量在训练数据上的分布选择一个模型。最简单但计算量最大的方法是使用 核密度估计- 这就像 k-NN 的一类统计表亲(同样计算密集);但考虑到数据量,更明智的方法是高斯混合模型。