【问题标题】:Amplify audio with Web Audio API使用 Web Audio API 放大音频
【发布时间】:2013-08-19 15:11:05
【问题描述】:

对于即将使用 Web Audio API 的项目,我希望能够放大一些音频的音量。

正如我在文档中所读到的,增益节点将输入信号乘以它的增益值。文档指出该值在01 的范围内,因此放大似乎不适用于增益节点。但是我还能怎么做呢?

【问题讨论】:

  • Web API spec 似乎允许 >1 的值,但实现可能会选择忽略大于 1 的值。(“名义上的 maxValue 是 1,但允许更高的值。”)特别是, Chrome 似乎确实放大了 >1 的值。旁注:名义上 >1 限制的原因是大多数物理 voltage controlled amplifiers (VCA) 不使用高于 1 的增益。
  • 哦,澄清一下:我对您的问题没有实际答案。我不会依赖未定义的“增益 > 1”行为跨浏览器(甚至可能在浏览器更新之间)。

标签: html google-chrome web-audio-api


【解决方案1】:

更具体地说:正如凯文所说,1 的“标称”值代表单位增益 - 即没有变化。这与范围不同。实现必须支持值 > 1 - 事实上,值的整个范围。有许多场景使用大增益缩放值来做有趣的事情,如果实现不支持这一点,将会非常糟糕。

简而言之:使用增益 > 1 来放大事物。如果您完全担心剪辑,请在其后放置一个动态处理器节点。

【讨论】:

    【解决方案2】:

    我不知道有一种实现不会将增益提高到 1 以上。这是我在所有项目中一直在使用的,并且没有遇到任何问题。

    如果您对此非常担心,我想您可以使用ScriptProcessorNode,基本上只需将所有样本乘以您想要的任何缩放值,但性能会比您得到的要差很多一个增益节点。而且,这也太荒谬了。

    我阅读规范的方式并没有给我任何理由相信大于 1 的值将被 GainNodegain 参数忽略。它基本上只是说 1 是 nominal 值。换句话说,如果您希望音频不受影响地通过,请将值设置为 1。否则,您将获得衰减或放大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 2013-06-20
      • 2014-04-15
      相关资源
      最近更新 更多