首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何处理CNN使用的音频频谱图的动态输入大小?

如何处理CNN使用的音频频谱图的动态输入大小?
EN

Stack Overflow用户
提问于 2016-05-05 15:40:06
回答 2查看 2.5K关注 0票数 10

很多文章都在使用CNN来提取音频特征。输入数据是具有时间和频率两个维度的语谱图。

在创建音频频谱图时,需要指定两个维度的确切大小。但它们通常不是固定的。可以通过窗口大小指定频率维度的大小,但是时域呢?音频样本的长度不同,但CNN的输入数据大小应该是固定的。

在我的数据集中,音频长度从1秒到8秒。填充或剪切总是对结果影响太大。

所以我想知道更多关于这个方法的信息。

EN

回答 2

Stack Overflow用户

发布于 2016-05-06 21:51:25

CNN是基于帧窗口计算的。你可以选取周围的30帧图像,然后训练CNN对它们进行分类。在这种情况下,您需要有帧标签,您可以从其他语音识别工具包中获得这些标签。

如果你想有纯粹的神经网络解码,你最好训练递归神经网络(RNN),它们允许任意长度的输入。为了提高RNN的准确性,你最好有CTC层,它允许在没有网络的情况下调整状态对齐。

如果您对这个主题感兴趣,可以尝试https://github.com/srvk/eesen,这是一个为使用递归神经网络进行端到端语音识别而设计的工具包。

还有相关的Applying neural network to MFCCs for variable-length speech segments

票数 3
EN

Stack Overflow用户

发布于 2020-09-22 23:26:34

好了,我终于找到了一个谈论这件事的paper。在论文中,他们说:

通过填充/剪辑到4秒的持续时间来标准化所有音频剪辑

所以,是的,你所说的对你的表现有影响的是他们在论文中所做的事情。

这类应用程序的一个示例可以是UrbanSoundDataset。它是一个不同长度音频的数据集,因此任何使用它的论文(对于非RNN网络)都将被迫使用这种或其他方法,将声音转换为相同长度的向量/矩阵。我推荐论文Deep Convolutional Neural Networks and Data Augmentation for Environmental Sound ClassificationENVIRONMENTAL SOUND CLASSIFICATION WITH CONVOLUTIONAL NEURAL NETWORKS。后者的代码是开源的,你可以看到它在this notebook的function _load_audio上也有4秒的音频。

如何裁剪音频

代码语言:javascript
代码运行次数:0
运行
复制
from pydub import AudioSegment

audio = pydub.AudioSegment.silent(duration=duration_ms)    # The length you want
audio = audio.overlay(pydub.AudioSegment.from_wav(path))
raw = audio.split_to_mono()[0].get_array_of_samples()      # I only keep the left sound 

Mel-spectrogram

标准是对这类应用程序使用mel-spectrum。您可以使用Python库Essentia并遵循this示例,或者像这样使用librosa:

代码语言:javascript
代码运行次数:0
运行
复制
# Attention, I do not cut / pad this example
y, sr = librosa.load('your-wav-file.wav')      
mel_spect = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=2048, hop_length=1024)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37045126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档