Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/web-services/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deep learning 如何将音频数据输入深度学习算法?_Deep Learning_Classification_Speech_Audio Processing_Generative Adversarial Network - Fatal编程技术网

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

Deep learning 如何将音频数据输入深度学习算法?,deep-learning,classification,speech,audio-processing,generative-adversarial-network,Deep Learning,Classification,Speech,Audio Processing,Generative Adversarial Network,我对深度学习非常陌生,我的目标是使用GAN(生成性对抗网络)来识别情感语言。我只知道图像是大多数深度学习算法的输入,比如GAN。但我很好奇,除了使用光谱图的图像作为输入外,音频数据是如何输入的。另外,如果您能用外行的术语来解释,我将不胜感激。音频数据可以用numpy数组的形式表示,但在开始之前,您必须了解音频的真正含义。如果你想一想音频是什么样子的,它只是一种波形数据格式,音频的振幅随时间而变化 假设我们的音频在时域中表示,我们可以每半秒提取一次值(任意)。这称为采样率。 由于采样率较低,将数

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

音频数据可以用numpy数组的形式表示,但在开始之前,您必须了解音频的真正含义。如果你想一想音频是什么样子的,它只是一种波形数据格式,音频的振幅随时间而变化

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

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

data, sampling_rate = librosa.load('audio.wav')
现在,你有了数据和采样率。我们现在可以绘制波形了

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

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

继Ayush的讨论之后,有关在音频数据的不同时间尺度上处理大量数据的挑战和解决方法的信息,我建议在WaveNet上发布以下帖子:


在那之后,听起来你想做分类。在这种情况下,一个单独的GAN是不合适的。如果你有大量的数据,你可以使用一个直接的LSTM(或另一种类型的RNN),它被设计用来模拟时间序列,或者你可以获取一组大小的输入块,并使用一维CNN(类似于WaveNet)。如果您有来自相同或类似领域的大量未标记数据和有限的训练数据,您可以使用GAN来学习生成新样本,然后使用GAN中的鉴别器作为CNN分类器的预训练权重。

因为您试图使用深度学习执行语音情感识别(SER),您可以选择循环架构(LSTM或GRU)或CNN和循环网络架构(CRNN)的组合,而不是GAN,因为GAN复杂且难以训练

在CRNN中,CNN层将提取不同细节和复杂性的特征,而递归层将处理时间依赖性。最后,您可以使用完全连接的层进行回归或分类输出,这取决于您的输出标签是离散的(对于愤怒、悲伤、中性等分类情绪)还是连续的(唤醒和配价空间)

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

我使用了一个CRNN架构来估计由对话引起的言语冲突的程度。即使不是SER,这也是一项非常类似的任务。 你可以在报纸上找到更多细节

另外,请检查我的github代码以获取相同的文件

还有一篇SER论文,我用Python复制了它的代码

最后,正如Ayush提到的,Librosa是用于音频处理的最好的Python库之一。您可以在Librosa中创建光谱图