【问题标题】:WebAudio API sampling rateWebAudio API 采样率
【发布时间】:2020-08-04 07:04:42
【问题描述】:

是否可以为实时音频上下文指定采样率(AudioContext 对象的sampleRate 属性)?

对于我阅读的内容,可以为 OfflineAudioContext 对象指定 sampleRate(构造函数接受 3 个参数,最后一个是采样率),但实时 AudioContext 没有接受任何论点。

我想是不可能的,因为可能是浏览器本身定义的,但也许有办法?

【问题讨论】:

  • 有一个名为 Recorder.js 的库,可以与 webaudio API 一起使用,从外观上看,它允许您更改录音的采样率。也许你可以在那里找到你的答案。 github.com/mattdiamond/Recorderjs
  • 感谢您的回答。不幸的是,这不是我想要的。我想要的是能够将AudioContext 设置为较低的采样率(比如 22050Hz 或 16kHz)以减少 CPU 的负载。
  • 我的意思是它看起来像库本质上允许您配置 AudioContext.sampleRate 我认为如果库允许您这样做 - 您可能可以做到。但话又说回来,也许我误读了链接上的代码。我对开发还比较陌生。
  • 我查看了Recorderjs 代码,但它似乎没有设置sampleRate。它只是从AudioContext 中读取sampleRate 并将其传递给编写输出文件的工作人员。
  • 我当时误解了。

标签: web-audio-api


【解决方案1】:

不,不可能这样做,除了在操作系统级别设置声卡的采样率(并非所有 i/o 设备都支持)。

【讨论】:

    【解决方案2】:

    更新。最新版本的规范现在允许您指定采样率。使用new AudioContext({sampleRate: desiredRate}) 选择所需的采样率。浏览器将负责重新采样所有内容以使用音频硬件的实际采样率。这在所有浏览器上都受支持,也许 Safari 除外。

    【讨论】:

    • 我可以确认一下,我的浏览器允许从 3000 到 768000 的值,这太疯狂了……便宜的集成声卡真的能在 768000 Hz 下捕获吗?
    • 没有便宜的集成声卡可能无法做到这一点。但是花哨的卡或外部设备可以。我认为如果卡不支持这样的频率,上下文将重新采样 768 kHz 到声卡支持的任何速率。
    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多