如何在python中找到wav文件的振幅?

qnyhuwrf  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(574)

我正在使用python中的librosa库进行wav文件分析。我使用librosa.load()加载音频文件。显然,这个函数将wav文件加载到一个numpy数组中,归一化的振幅值在-1到1之间。但是我需要得到实际的振幅值进行处理。我怎么能找到呢?
提前谢谢!

ljsrvy3e

ljsrvy3e1#

您正确地观察到librosa总是将样本标准化为mono [-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位格式。

o2gm4chl

o2gm4chl2#

你不能。正如亨德里克提到的,信号是数字的,wav文件中的振幅不会告诉你任何关于实际声波振幅/声功率的信息。从它被数字化为wav的那一刻起,它就完全消失了。
也就是说,你可以计算出,比如响度,一种对声功率的相对感知。如果您正在处理人类听觉系统,建议的方法之一是:
使用树皮鳞片(树皮鳞片更好地反映我们的听觉)。
计算每个箱子的能量。
(可选)通过总和进行归一化。
如果您不想自己计算,请查看例如yaafe。

相关问题