如何找到 python 中 wav 文件的振幅?
How do I find amplitude of wav file in python?
我正在使用 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 时,它就完全丢失了。
也就是说,您可以计算例如响度,声音功率的相对感知。如果您正在处理人类听觉系统,推荐的方法之一是:
- 使用 Bark 等级(Bark 等级更好地反映了我们的听力)。
- 计算每个 bin 中的能量。
- (可选)按总和归一化。
如果您不想自己计算,请查看例如YAAFE.
我正在使用 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 时,它就完全丢失了。
也就是说,您可以计算例如响度,声音功率的相对感知。如果您正在处理人类听觉系统,推荐的方法之一是:
- 使用 Bark 等级(Bark 等级更好地反映了我们的听力)。
- 计算每个 bin 中的能量。
- (可选)按总和归一化。
如果您不想自己计算,请查看例如YAAFE.