如何从音频信号构建神经网络的输入?

信息处理 声音的 傅里叶变换 语音处理
2021-12-22 11:18:38

输入:来自不同扬声器的 0 到 9 数字的麦克风录音。

输出:从 0 到 9 的数字。

我这样做是为了好玩。所以首先我将使用一些样本训练我的神经网络,然后用它来分类数字。

问题是每个人说出数字所需的时间不同,每个人说出不同数字的时间也不同。这给了我不同持续时间的声音信号。但是神经网络的输入必须是固定大小的。如何使所有输入信号的长度相同,以便将其输入到神经网络?有什么标准的技术吗?傅里叶变换?

1个回答

所以问题是你想对一些音频样本进行分类,但每个样本都有不同的大小。AFAIK 没有使用(简单)神经网络执行此操作的特殊方法。

对于一般分类器,我相信有很多方法,但这些方法非常简单,因此您可以开始解决这个问题:

  1. 将您的信号除以相同大小的帧/段,并使用每一帧,就好像它是一个训练示例一样。最后,您将使用投票策略。由于您使用的是神经网络,因此您可以使用最后一层的概率输出而不是硬类来加权此投票。

在此处输入图像描述

  1. 使用信号中所有帧/段的平均值。这是一种非常轻量级的方法,但有时可以产生良好的结果。

在此处输入图像描述

无论哪种方式,在“特征提取”部分,您都需要使用一些基于光谱的转换。我建议使用频谱的对数或计算 MFCC 向量。你也可以从原始音频训练你的网络,但这有点不寻常。

您应该注意,由于粒度的原因,这两种方法完全破坏了系统的动态。尝试使用帧大小或聚合相邻帧来增加或减少粒度。