1

我正在使用 python 中的 librosa 库进行 wav 文件分析。我使用librosa.load()加载音频文件。显然,这个函数将 wav 文件加载到一个 numpy 数组中,其归一化幅度值在 -1 到 1 的范围内。但我需要获取实际的幅度值进行处理。我怎么能找到那个?

提前致谢!

4

2 回答 2

2

您正确地观察到librosa总是将样本标准化为单声道[-1:1](以及 22050 Hz)。也就是说,它是数字音频,因此可以与您想要获得不同比例的任何内容相乘。如果您坚持认为您的样本的规模-2^152^15,只需乘以2^15。意思差不多。

除了将编码音频格式的特殊性拖到数据中之外,您将一无所获。

也就是说,如果这就是你想要的,你可以像这样使用PySoundFile

import soundfile as sf

y, sr = sf.read('existing_file.wav', dtype='int16')

该参数dtype='int16'告诉库假定每个样本采用带符号的 16 位格式。

于 2021-07-10T10:50:48.020 回答
1

你不能。正如 Hendrik 所提到的,信号是数字的,WAV 文件中的幅度不会告诉您任何有关实际声波幅度/声功率的信息。当它被数字化为 WAV 时,它就完全消失了。

话虽如此,您可以计算例如响度,即声功率的相对感知。如果您正在处理人类听觉系统,推荐的方法之一是:

  1. 使用树皮音阶(树皮音阶更好地反映了我们听到的方式)。
  2. 计算每个 bin 中的能量。
  3. (可选)按总和归一化。

如果您不想自己计算,请查看例如YAAFE

于 2021-07-10T17:14:16.040 回答