繁体   English   中英

如何在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^152^15 ,只需乘以2^15 这几乎意味着相同。

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

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

import soundfile as sf

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

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

你不能。 正如 Hendrik 所提到的,信号是数字的,WAV 文件中的幅度不会告诉您有关实际声波幅度/声功率的任何信息。 在将其数字化为 WAV 的那一刻,这完全消失了。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM