【问题标题】:AnalyserNode's getFloatFrequencyData vs getFloatTimeDomainDataAnalyserNode 的 getFloatFrequencyData 与 getFloatTimeDomainData
【发布时间】:2023-03-15 15:18:01
【问题描述】:

所以我想我很了解getFloatFrequencyData。如果getFloatFrequencyData 返回一个包含 1024 个值的数组,每个值代表一个频率箱/范围的音量。在采样率为 44.1 的 1024 个值的情况下,每个值将代表大约 20 赫兹频率范围的音量。

现在getFloatTimeDomainData 呢?假设我有 2048 个值,每个值代表什么?

understanding getByteTimeDomainData and getByteFrequencyData in web audio 不同。或者至少,这个问题的答案没有回答我的问题。

【问题讨论】:

    标签: audio-recording web-audio-api


    【解决方案1】:

    使用getFloatTimeDomainData 获得的Float32Array 将包含一组采样值,每个值定义采样位置的振幅,通常在[-1, 1] 的域中。样本位置是唯一分布的,得到的数据基本上相当于原始的PCM

    对于正弦波,它会在以下近似曲线中产生逐渐变化的连续值:

    0 ... 0.7 ... 1.0 ... 0.7 ... 0 ... -0.7 ... -1.0 ... -0.7 ... 0 ...
    

    将其视为一系列后续值,它们共同定义了音频波的形状;如果您要在画布上可视化获得的值,使用样本值作为y 坐标(幅度)和随后增加的x 坐标值(时间),您将得到一个oscilloscope,例如如:

    注意这个正弦波形如何与上面的示例值相关联。以下是您可以对这些数据执行的一些示例操作,以便更好地理解:

    • 如果要将每个值乘以 2,则音量会放大 100%(双倍音量)

    • 如果你用 0 替换每个值,你会得到静默

    • 如果您要跳过每一秒的值,您将获得 100% 的音频(播放速度加倍)

    【讨论】:

      【解决方案2】:

      getFloatTimeDomainData 从音频流中返回一个 PCM 数据样本 - 即原始音频数据。

      【讨论】:

      • 确切地说,每个值代表什么?频率数据值表示频率范围的音量。一个时域数据代表 y 中的 x?
      猜你喜欢
      • 2015-12-14
      • 2017-11-16
      • 2014-12-02
      • 2020-12-07
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多