机器学习语音分类

数据挖掘 机器学习 神经网络 美国有线电视新闻网 k-nn 音频识别
2022-02-06 19:20:47

所以,我有 9k 个 1 秒的 wav 文件,是一个人说话的。这些标签是由说话的人是否戴口罩来标记的。我应该想出一个机器学习模型来对这些标准进行分类。

到目前为止,我尝试在音频的 mfcc 功能上使用 KNN。这在测试数据上获得了大约 56% 的准确率。

我还尝试将 wav 文件转换为 jpg 频谱图并应用 CNN。这个在测试数据上获得 60% 的准确率。

但是我没有那么多经验,我不确定音频的哪些功能最能帮助解决这个问题。

此外,如果您可以针对此特定问题推荐机器学习模型。

3个回答

如果每个类别都有 4,500 个示例,那么您比随机猜测做得更好。这听起来像是一个难题,其中示例只有细微的差异,所以这是一个成就。(我假设您正在做某种样本外测试。)考虑一下您在对每个样本中可能有 20 个样本进行分类时的表现。我很想知道你是怎么做的。如果你得到 38/40 而不是 20/40,这是一个完全不同的问题。

但是,应用 CNN 的方法是转换为频谱图,然后在频谱图阵列上运行 CNN。转换为文字图片是不必要的,并且可能会损害性能。有很多方法可以将信号转换为二维时频空间。您可能已经尝试过傅立叶变换。检查小波。

由于您有时间序列数据,请考虑递归神经网络和长期短期记忆。这些可以与 CNN 结合使用。我想你会在 GitHub 上找到 CNN/LSTM 代码的示例。

但是,对于深度学习方法,您有一个相当小的数据集。考虑更简单的模型,例如逻辑回归。在提高样本外性能的同时,您的样本内性能可能会受到影响。

最后,考虑一个适当的评分规则,例如 Brier 评分。Frank Harrell 在交叉验证的统计堆栈上写了很多关于此的文章。无耻地,我会提到你可能对我关于 CV 的一个问题感兴趣,当需要做出艰难的决定时,我会在某种程度上挑战正确评分规则的想法:https ://stats.stackexchange.com/questions/464636 /proper-scoring-rule-when-there-is-a-decision-to-make-eg-spam-vs-ham-email我的示例来自 NLP,但可能存在语音情况(例如文本听写,在某些时候,您必须决定打印“dad”或“bad”或“bicycle”)。

根据我所做的一些建议。这是一个有用的教程,它解释了如何为 wav 文件实现 CNN。

https://medium.com/gradientcrescent/urban-sound-classification-using-convolutional-neural-networks-with-keras-theory-and-486e92785df4

就我而言,它过度拟合,我无法解决这个问题。

这个简单的 NN 模型给出了最好的准确率,大约 67%。这是使用的笔记本

此外,正如前面所指出的,训练数据集对于使用神经网络来说相​​当小。因此,此外,我还使用了音频数据增强来避免过度拟合并增加训练数据的大小。

我建议尝试使用预训练的 CNN 来提取特征,然后在此之上做一个简单的分类器。例如, OpenL3非常易于使用,并且在一系列任务上都表现出色。分类器可以是例如逻辑回归或随机森林。