我以前做过类似的工作,所以我可能是向您描述该过程的合适人选。
我有纯粹的声音录音,我认为这是黄金标准。我编写了 python 脚本来将这些声音转换为 MFCC 向量数组。阅读有关 MFCC 的更多信息here。
提取 MFCC 可被视为音频文件处理的第一步,即有利于识别声学内容的特征。我每 10 毫秒生成一次 MFCC,并有 39 个属性。所以一个 5 秒长的声音文件有大约 500 个 MFCC,每个 MFCC 有 39 个属性。
然后我在这些lines上写了一个人工神经网络代码
.更多关于神经网络的内容可以阅读here。
然后我使用使用反向传播算法训练的随机梯度下降算法训练神经网络的权重和偏差,通常称为网络参数。然后保存经过训练的模型以识别未知声音。
然后将新声音表示为一系列 MFCC 向量,并作为神经网络的输入。神经网络能够将从新声音文件中获得的每个 MFCC 实例预测为神经网络所训练的声音类别之一。正确分类的 MFCC 实例的数量给出了神经网络能够对未知声音进行分类的准确度。
考虑例如:您使用上述过程在 4 种类型的声音上训练您的神经网络,1. 口哨、2. 汽车喇叭、3. 狗吠和 4. 警笛。
新的声音是 5 秒长的警笛声。您将获得大约 500 个 MFCC 实例。经过训练的神经网络将尝试将每个 MFCC 实例分类为神经网络所训练的类别之一。所以你可能会得到这样的东西。
30 个实例被归类为哨声。
20 个实例被归类为汽车喇叭/
10个实例被归类为狗吠
其余实例被正确分类为警笛。
分类的准确性,或者更确切地说是声音之间的共性,可以近似计算为正确分类的实例数与实例总数的比率,在这种情况下为 440 / 500,即 88%。这个领域相对较新,在使用类似的机器学习算法(如Hidden Markov Model、Support Vector Machine 等)之前已经做了很多工作。
这个问题之前已经解决了,你可以在 google 学者中找到一些关于这些的研究论文。