与Keras的音频分类:人声的存在

时间:2017-09-21 22:49:07

标签: audio machine-learning keras classification

我想创建一个带有Keras的音频分类系统,它只是确定给定的样本是否包含人声。没有其他的。这将是我的第一次机器学习尝试。

此音频预处理器存在。它声称没有完成,但已分叉了几次:

https://github.com/drscotthawley/audio-classifier-keras-cnn

我不明白这个会如何运作,但我已经准备好试一试:

https://github.com/keunwoochoi/kapre

但是,让我说我有其中一个工作,其余的过程是否与图像分类相似?基本上,我从未完全理解何时使用Softmax以及何时使用ReLu。一旦我将数据映射为张量,这与声音是否相似?

2 个答案:

答案 0 :(得分:2)

声音可以看作是一维图像,可与1D卷积一起使用。 通常,扩张的卷积可能会做得很好,请参阅Wave Nets

声音也可以看作序列并与RNN图层一起使用(但可能它们的数据量过大)

对于您的情况,您只需要一个输出,最后激活'sigmoid'并且'binary_crossentropy'丢失。

  • 结果= 0 - >没声音
  • 结果= 1 - >有声音

何时使用'softmax'?

softmax函数适用于多类问题(不是您的情况),因为您只需要一个类。 softmax函数的所有结果将总和1.它的意图类似于每个类的概率。

它主要用于最后一层,因为你只将类作为最终结果。

对于只有一个类正确的情况很有用。在这种情况下,它与损失categorical_crossentropy相得益彰。

模型中间的Relu和其他激活

这些都不是很严格。有很多可能性。我经常看到图像卷积模型中的relu。

要知道的重要事项是“范围”。他们的产出有什么限制?

  • Sigmoid:从0到1 - 在模型的最后,这将是您的存在/绝对分类的最佳选择。对于需要多个可能类的模型也很有用。
  • Tanh:从-1到1
  • Relu:从0到无限(它只是削减负值)
  • Softmax:从0到1,但确保所有值的总和为1.在许多类中只需要1个类的模型的末尾。

答案 1 :(得分:1)

通常将音频预处理到频谱图是很有用的:

Spectogram

使用此作为输入,您可以使用经典图像分类方法(如卷积神经网络)。在您的情况下,您可以将输入音频分成大约20ms-100ms的帧(取决于您需要的时间分辨率)并将这些帧转换为视频。卷积网络也可以与经常性单位相结合,以考虑更大的时间背景。

还可以使用一维卷积在原始波形上训练神经网络。然而,研究表明,使用频率变换的预处理方法总体上可以获得更好的结果。