【问题标题】:librosa does not normalize wave file between [-1, 1]librosa 不规范 [-1, 1] 之间的波形文件
【发布时间】:2020-12-05 17:45:59
【问题描述】:

通过使用传递文件:

librosa_audio, librosa_sample_rate = librosa.load(filename)

输出会产生一个音频文件,这样:

Librosa audio file min~max range: -1.2105224 to 1.2942806

我正在处理的文件是从https://www.boomlibrary.com/ 获得的,位深度为 24。我将采样降低到 16,并将采样提高到 32 以使用 librosa。这两个文件在通过 librosa 后产生了相同的最小-最大范围。

为什么会这样?
有没有办法将 wav 文件解析为 Librosa,使数据落在 [-1,1] 之间?

这是文件的链接:

https://drive.google.com/drive/folders/12a0ii5i0ugyvdMMRX4MPfWMSN0arD0bn?usp=sharing

【问题讨论】:

  • 你能分享给你这些结果的确切文件吗?你的操作系统是什么?
  • @LukaszTracewski。感谢您的回复。我使用的是 Windows 10。我还添加了一个指向我遇到问题的文件的链接。如果您能够访问它们,请告诉我。谢谢!

标签: python audio wav librosa


【解决方案1】:

您观察到的行为直接源于 librosa load 默认情况下重新采样到 22050 Hz

librosa.core.load(path, sr=22050)

重采样过程总是会影响音频,因此您会看到未标准化的值。你必须自己做。

更有可能,您想以原生采样率读取音频,在这种情况下,您应该像这样将None 传递给sr

librosa.core.load(path, sr=None)

基于您提供的音频示例的示例:

In [4]: y, sr = librosa.load('201-AWCKARAK47Close0116BIT.wav', sr=None)
In [5]: y.max()
Out[5]: 0.9773865

In [6]: y.min()
Out[6]: -0.8358917

【讨论】:

  • 您好,感谢您的回复。由衷赞赏!为了进一步讨论,来自 8k Urbansound 数据集的数据发现:urbansounddataset.weebly.com,在速率转换和标准化方面没有问题。我添加的新文件的速率(sr=96000)似乎引起了问题。是不是因为这个 sr 太大导致标准化不一致?谢谢!
  • 当你load时,标准化是在重采样之前完成的,因此效果。重采样会根据定义更改基础数据,因此您不应期望任何标准化保留。不管是 22 还是 96 kHz。我建议标准化为例如重新采样后 -1 或 -3 dB。您可以考虑使用例如soxffmpeg 以并行批量转换所有数据。这些工具具有出色的性能并提供最佳结果。
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 2013-09-16
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多