首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >librosa.amplitude_to_db的概念目的是什么?

librosa.amplitude_to_db的概念目的是什么?
EN

Stack Overflow用户
提问于 2020-08-10 21:02:21
回答 1查看 5.2K关注 0票数 3

我正在使用librosa库从音频数据中获取和过滤光谱图。

我主要理解生成光谱图背后的数学原理:

  1. 获取信号
  2. 窗口信号
  3. 对于每个窗口计算傅里叶变换
  4. 创建其列为转换的矩阵
  5. 绘制此矩阵的热图

所以对librosa来说这很容易

代码语言:javascript
复制
spec = np.abs(librosa.stft(signal, n_fft=len(window), window=window)

耶!我有我的FFTs矩阵。现在我看到了这个函数librosa.amplitude_to_db,我认为这就是我对信号处理的无知开始显现的地方。这是我在中等媒体上找到的一个片段:

代码语言:javascript
复制
spec = np.abs(librosa.stft(y, hop_length=512))
spec = librosa.amplitude_to_db(spec, ref=np.max)

为什么作者使用这个amplitude_to_db函数?为什么不直接绘制STFT的输出图呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-11 07:02:19

可感知声压的范围很广,从20μPa (微Pascal)到20 Pa,比值为100万。此外,人类对声级的感知不是线性的,而是更好地用对数近似。

通过转换为分贝 (dB),比例尺就变成对数。这限制了数值范围,而不是0-120 dB。当绘制这幅图时,颜色的强度与我们所听到的比使用线性刻度时更接近。

注意,分贝中的参考点(0 dB)可以自由选择。librosa.amplitude_to_db的缺省值是计算numpy.max,这意味着输入的最大值将映射到0 dB。所有其他值都将为负值。该函数还对声音范围应用了一个阈值,默认为80 dB。所以任何低于-80 dB的东西都会被剪裁-80 dB。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63347977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档