对用于机器学习的音频进行下采样

信息处理 声音的 下采样 机器学习 神经网络
2022-01-27 05:11:09

我正在尝试使用此 repo 中完成的工作(神经网络): https ://github.com/jtkim-kaist/VAD

它是这样说的:

注意:要将本工具包应用于其他语音数据,应以 16kHz 采样频率对语音数据进行采样。

我有 48khz 的语音数据。我在一些地方读到降低采样率是一个复杂的过程,你不能只删除每个第 n 个数据点,你必须过滤东西......

如果我只打算使用我链接的存储库提供的神经网络工具包中的数据,这是否必要?如果是这样,是否有改变采样率的行业标准方法?

我意识到这可能取决于正在使用的功能。然而,使用的功能是这样的:

MRCG(多分辨率耳蜗)以多个光谱时间分辨率连接耳蜗特征

这是一个红润复杂的功能!假设我们只是在使用 Melspectogram(除非您愿意从 MRCG 的角度回答这个问题)。

神经网络可能会使用我们不会想到的 Melspectogram 的特征。这让我认为使用下采样语音数据训练神经网络是不明智的,除非我们打算在之后永远使用下采样到 16khz 的 48khz 数据进行预测......

你怎么看?我可以使用我的 48khz 数据 - 没有过滤的下采样 - 期望该模型将用于预测真实的 16khz 数据吗?

然后为了未来的读者,另一种方式怎么样?假设我有一个 8khz 的文件,我可以在不过滤的情况下将采样率提高到 16khz 吗?

1个回答

如果我只打算使用我链接的存储库提供的神经网络工具包中的数据,这是否必要?

是的。

无论您是否进行下采样(而不仅仅是抽取)与分类性能无关,而是(尽可能多地)保留信号中包含的信息。

更改信号的采样率时,您需要考虑混叠否则,信号将以这样的方式失真,以至于无法从样本中重建原始信号。

如果是这样,是否有改变采样率的行业标准方法?

是的。

下采样时执行此操作的“正确”方法是首先应用抗混叠滤波器,然后抽取信号,但在上采样时,您首先上采样然后应用插值(也可以表示为滤波器)。各种平台都提供了执行此操作的函数(例如PythonMATLAB)。

我意识到这可能取决于正在使用的功能。

在某种程度上。也许您可以简单地保持一切不变,只要您调整算法中的某些点,这些点专门针对与您使用的采样频率不同的采样频率进行硬连线。但是,语音的带宽是有限的。如果您的分类器也接受过语音训练,那么拥有更多带宽意味着您可以区分更多事物。如果您的大部分数据集是纯语音,那么拥有更多带宽不会有太大的不同。

我可以使用我的 48khz 数据 - 没有过滤的下采样 - 期望该模型将用于预测真实的 16khz 数据吗?

不。

如果您在不过滤的情况下进行下采样,您很可能会产生失真的信号。

然后为了未来的读者,另一种方式怎么样?假设我有一个 8khz 的文件,我可以在不过滤的情况下将采样率提高到 16khz 吗?

不。

当您增加采样率时,您会遇到更严重的问题。您现在必须填补没有数据的“空白”。过滤(或插值)阶段填补了这些空白,但不添加任何新信息。当您下采样时,您正在丢弃信息。上采样无法取代它。

了解 DSP 的一些基础知识(例如采样采样和重构混叠抗混叠滤波器)或许对您有所帮助。此外,为了进一步了解您的功能是什么样的、它们如何工作以及如何选择和使用它们,您可能需要查找有关短时傅里叶变换和多速率信号处理(更一般地)的更多信息。

希望这可以帮助。