gpt4 book ai didi

audio - 规范化音频波形代码实现(峰值、RMS)

转载 作者:行者123 更新时间:2023-12-05 01:25:00 28 4
gpt4 key购买 nike

  • 我有一些音频数据(浮点数数组),我用它来绘制一个简单的
    波形。
  • 绘制时,波形不会在边缘达到最大值。
  • 没问题 - 数据只需要标准化。我迭代一次以找到最大值,然后再次迭代将每个除以最大值。再次绘制,一切看起来都很棒!
  • 但是等待具有响亮介绍或响亮爆炸声的视频会导致波形的其余部分仍然很小。
  • 经过一些研究,我遇到了应该解决这个问题的 RMS。我遍历样本并计算 RMS,然后再次将每个样本除以 RMS 值。这会导致相当大的“剪裁”:

  • enter image description here
  • 解决这个问题的最佳方法是什么?
  • 直觉上,似乎我可能需要根据移动窗口(而不是整个集合)计算局部最大值或平均值,但我不完全确定。帮助?
  • 注意:波形纯粹用于视觉目的(音频不会播放给用户)。
  • 最佳答案

    您可以转置它(有效地使 y 轴非线性,或者您可以将其视为 companding 的一种形式)。

    假设信号在 [-1, 1] 范围内。

    一种流行的快速简单的解决方案是简单地应用 hyperbolic tangens function (tanh)。这将通过更多地惩罚更高的值来将值限制为 [-1, 1]。如果在应用 tanh 之前放大信号,效果会更加明显。

    另一种选择是对数变换。当信号改变符号时,必须执行一些预处理。

    r是一系列样本值,一种方法可能是这样的:

    r.log1p <- log2(1.1 * (abs(r) + 1)) * sign(r)

    也就是说,对于每个值取其绝对值,加一,乘以一些小常数,取对数,最后乘以相应旧值的符号。

    效果可能是这样的:
    enter image description here

    关于audio - 规范化音频波形代码实现(峰值、RMS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46390964/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com