我正在使用 python 中的 librosa 库进行 wav 文件分析。我使用librosa.load()加载音频文件。显然,这个函数将 wav 文件加载到一个 numpy 数组中,其归一化幅度值在 -1 到 1 的范围内。但我需要获取实际的幅度值进行处理。我怎么能找到那个?
提前致谢!
我正在使用 python 中的 librosa 库进行 wav 文件分析。我使用librosa.load()加载音频文件。显然,这个函数将 wav 文件加载到一个 numpy 数组中,其归一化幅度值在 -1 到 1 的范围内。但我需要获取实际的幅度值进行处理。我怎么能找到那个?
提前致谢!
您正确地观察到librosa总是将样本标准化为单声道[-1:1]
(以及 22050 Hz)。也就是说,它是数字音频,因此可以与您想要获得不同比例的任何内容相乘。如果您坚持认为您的样本的规模-2^15
为2^15
,只需乘以2^15
。意思差不多。
除了将编码音频格式的特殊性拖到数据中之外,您将一无所获。
也就是说,如果这就是你想要的,你可以像这样使用PySoundFile:
import soundfile as sf
y, sr = sf.read('existing_file.wav', dtype='int16')
该参数dtype='int16'
告诉库假定每个样本采用带符号的 16 位格式。
你不能。正如 Hendrik 所提到的,信号是数字的,WAV 文件中的幅度不会告诉您任何有关实际声波幅度/声功率的信息。当它被数字化为 WAV 时,它就完全消失了。
话虽如此,您可以计算例如响度,即声功率的相对感知。如果您正在处理人类听觉系统,推荐的方法之一是:
如果您不想自己计算,请查看例如YAAFE。