如何将音频数据输入深度学习算法?

时间:2019-10-10 05:11:51

标签: deep-learning classification speech audio-processing generative-adversarial-network

我在深度学习领域非常陌生,我的目标是使用GAN(生成对抗网络)来识别情感言论。我只知道图像是GAN等大多数深度学习算法的输入。但是我很好奇,除了使用频谱图的图像作为输入之外,如何将音频数据输入其中。另外,如果您能以外行的方式解释它,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

音频数据可以以numpy数组的形式表示,但是在转向音频数据之前,您必须了解音频的真正含义。如果您想一想音频的外观,那无非就是波形的数据格式,音频的幅度随时间变化。

enter image description here

假设我们的音频在时域中表示,我们可以每半秒(任意)提取一次值。这称为采样率。 由于采样率较低,将数据转换为频域可以减少计算量。

现在,让我们加载数据。我们将使用一个名为librosa的库,可以使用pip进行安装。

data, sampling_rate = librosa.load('audio.wav')

现在,您既有数据又有采样率。现在可以绘制波形了。

librosa.display.waveplot(data, sr=sampling_rate)

现在,您具有numpy数组形式的音频数据。现在,您可以研究数据的特征,并提取您认为有趣的特征以训练模型。

答案 1 :(得分:0)

在Ayush的讨论中,有关在音频数据中不同时间尺度处理大量数据所面临的挑战和变通方法的信息,我建议在WaveNet上发表这篇文章:https://deepmind.com/blog/article/wavenet-generative-model-raw-audio

之后,这听起来像您要进行分类。在这种情况下,单独使用GAN是不合适的。如果您有大量数据,则可以使用旨在对时间序列建模的直线LSTM(或另一种RNN),或者可以使用固定大小的输入块并使用1-d CNN(类似于WaveNet)。如果您有来自相同或相似域的大量未标记数据且训练数据有限,则可以使用GAN来学习生成新样本,然后将GAN中的鉴别器用作CNN分类器的预训练权重。

答案 2 :(得分:0)

由于您尝试使用深度学习执行语音情感识别(SER),因此由于GAN复杂,您可以选择递归体系结构(LSTM或GRU)或CNN和递归网络体系结构(CRNN)的组合,而不是GAN而且很难训练。

在CRNN中,CNN层将提取具有不同细节和复杂性的特征,而循环层将处理时间相关性。然后,您最终可以使用完全连接的图层进行回归或分类输出,具体取决于您的输出标签是离散的(对于愤怒,悲伤,中立等类别情感)还是连续的(觉性和价空间)。

关于输入的选择,您可以使用频谱图输入(2D)或原始语音信号(1D)作为输入。对于频谱图输入,必须使用2D CNN,而对于原始语音信号,则可以使用1D CNN。梅尔级谱图通常比线性谱图更可取,因为我们的耳朵会听到对数级而不是线性的频率。

我使用了一种CRNN架构来估计对话语音引起的语言冲突程度。即使不是SER,这也是非常相似的任务。 您可以在论文中找到更多详细信息

http://www.eecs.qmul.ac.uk/~andrea/papers/2019_SPL_ConflictNET_Rajan_Brutti_Cavallaro.pdf

另外,检查我的github代码是否有同一篇论文

https://github.com/smartcameras/ConflictNET

和我用Python复制代码的SER论文

https://github.com/vandana-rajan/1D-Speech-Emotion-Recognition

最后,正如Ayush所述,Librosa是用于音频处理的最佳Python库之一。您具有在Librosa中创建频谱图的功能。