我是深度学习的新手,我的目标是使用GAN (生成对抗网络)来识别情感语音。我只知道图像是大多数深度学习算法的输入,比如GAN。但我很好奇,除了使用光谱图的图像作为输入之外,音频数据如何成为它的输入。另外,如果你能用外行的话解释一下,我将不胜感激。
发布于 2019-10-10 15:21:28
音频数据可以用numpy数组的形式表示,但在开始之前,您必须了解什么是音频。如果你想一想音频是什么样子的,它只不过是一种波形格式的数据,其中音频的振幅随着时间的变化而变化。

假设我们的音频是在时域中表示的,我们可以每半秒(任意)提取一次值。这称为采样率。将数据转换到频域可以减少所需的计算量,因为采样率较小。
现在,让我们加载数据。我们将使用一个名为librosa的库,可以使用pip安装该库。
data, sampling_rate = librosa.load('audio.wav')现在,您有了数据和采样率。我们现在可以绘制波形了。
librosa.display.waveplot(data, sr=sampling_rate)现在,您有了numpy数组形式的音频数据。现在,您可以研究数据的特征,并提取您感兴趣的特征来训练模型。
发布于 2019-10-10 19:28:27
根据Ayush的讨论,关于在音频数据中处理不同时间尺度的大量数据的挑战和解决方法的信息,我建议在WaveNet上发表这篇文章:https://deepmind.com/blog/article/wavenet-generative-model-raw-audio
在这之后,听起来你想要做分类。在这种情况下,GAN本身并不合适。如果你有大量的数据,你可以使用直接的LSTM (或其他类型的RNN)来建模时间序列,或者你可以采用固定大小的输入块并使用一维CNN (类似于WaveNet)。如果你有大量来自相同或相似领域的未标记数据和有限的训练数据,你可以使用GAN来学习生成新的样本,然后使用来自GAN的鉴别器作为CNN分类器的预训练权重。
发布于 2019-10-25 21:38:42
由于您正在尝试使用深度学习执行语音情感识别(SER),因此您可以使用递归体系结构(LSTM或GRU)或CNN和递归网络体系结构(CRNN)的组合来代替GAN,因为GAN很复杂且难以训练。
在CRNN中,CNN层将提取不同细节和复杂性的特征,而递归层将处理时间依赖性。然后,您最终可以使用完全连接的层来进行回归或分类输出,这取决于您的输出标签是离散的(用于愤怒、悲伤、中性等分类情绪)还是连续的(唤醒和价空间)。
关于输入的选择,您可以使用语谱图输入(2D)或原始语音信号(1D)作为输入。对于语谱图输入,您必须使用2D CNN,而对于原始语音信号,您可以使用1D CNN。Mel谱图通常比线性谱图更受欢迎,因为我们的耳朵听到的频率是对数尺度的,而不是线性的。
我使用了CRNN架构来估计会话演讲中产生的言语冲突的程度。尽管它不是SER,但它是一个非常相似的任务。你可以在论文中找到更多细节
http://www.eecs.qmul.ac.uk/~andrea/papers/2019_SPL_ConflictNET_Rajan_Brutti_Cavallaro.pdf
此外,请查看我的github代码以获得相同的论文
https://github.com/smartcameras/ConflictNET
还有一篇SER论文,我用Python重现了它的代码
https://github.com/vandana-rajan/1D-Speech-Emotion-Recognition
最后,正如Ayush提到的,Librosa是用于音频处理的最好的Python库之一。您可以在Librosa中创建光谱图。
https://stackoverflow.com/questions/58315809
复制相似问题