您的功能请求是否与问题相关?请描述。
目前,音频预处理功能仅限于固定长度的音频示例,这些示例要么填充,要么截断以匹配 audio_file_length_limit_in_s
参数。另一种(或扩展)方法是允许长度不同的音频文件,在稍后阶段将其切割成固定长度的“帧”,这些帧可能或可能不与其他帧重叠。这种音频策略的一个例子可以在 VGGish 和 Yamnet 代码库中找到。
描述使用场景
基于帧的音频预处理将允许使用不同长度的音频片段进行训练和预测,使生成的模型在使用场景上更具灵活性。
描述您希望的功能
除了 audio_file_length_limit_in_s
参数外,还添加两个额外的参数 frame_length
和 frame_overlap
,它们可以与 audio_file_length_limit_in_s
一起使用或替代 audio_file_length_limit_in_s
来训练可变长度的输入文件。
我认为将此功能作为当前 audio_feature_mixin 类的一部分,作为 _get_2D_feature
计算任何二维特征表示之后的一部分是合理的。输出将是一个形状为 [#frames, feature_h, frame_length] 的三维数组。鉴于这已经作为 VGGish 特征提取的一部分实现,将其提升并适应 ludwig 代码库应该很容易。
如果有人想要计算整个二维特征的度量和损失,而不是每个单独的帧,可能需要对预测和验证步骤(以及可能的训练)进行一些额外的更改。
描述您考虑过的替代方案
目前,我将完全跳过 ludwig 中的音频预处理,预先计算数据集特征,然后将其视为正常的图像分类问题。
附加上下文
很高兴帮助将此功能添加到当前的音频预处理中。
2条答案
按热度按时间vnjpjtjt1#
@nieag,我相信我理解了这个请求。这很有趣,值得调查。你有我们可以研究的参考吗?在你添加的链接中,看起来
waveform_to_log_mel_spectrogram_patches
是我们需要复制的功能,但我想看看一些论文/系统,如果你知道的话,作为参考。谢谢pn9klfpd2#
当然,一个工作系统的最好例子可能是来自谷歌的研究仓库。这些论文包含了一些关于音频框架的信息,但我认为这两个仓库的readme对于音频预处理更有信息量。
这是另一篇最近的论文,它利用相同的方法处理不同长度的输入,用于分类咳嗽。在这种情况下,固定长度的输入并不有用,因为咳嗽的长度可以变化很大 Whosecough paper 。
类似的框架函数也在流行的音频库Librosa中提供:audio-framing 。
很高兴进一步讨论。