gpt4 book ai didi

flash - 转换 FFT 数据以匹配 ComputeSpectrum FFT 输出

转载 作者:行者123 更新时间:2023-12-02 02:25:24 25 4
gpt4 key购买 nike

我习惯于使用 SoundMixer.computeSpectrum,但我需要从麦克风中即时获取一些数据(我不能将 SoundMixer 与麦克风一起使用)。

我在转换 FFT 数据(来自 this class )时遇到问题,如 this excellent spectral analysis example 所示以匹配 computeSpectrumByteArray 输出。我现有的代码用于处理从 computeSpectrum 接收的数据(FFT 设置为 true)。

感谢任何帮助!

最佳答案

在您链接的示例代码中,m_mag 向量包含频谱数据本身。如果您想修改它以使用旨在与 computeSpectrum 一起使用的现有代码,您应该将此向量中的值写入 ByteArray,如下所示:

import flash.utils.ByteArray;

var fftBytes:ByteArray = new ByteArray();
for(var i:uint = 0; i < N/2; i++)
{
var re:Number = m_tempRe[i];
var im:Number = m_tempIm[i];
var mag:Number = re*re + im*im;
// Old method: write to vector
// m_mag[i] = Math.sqrt(sample);
// New method: write to ByteArray
fftBytes.writeFloat(mag);
}
// microphone is mono, so make a copy to match computeSpectrum's stereo output
fftBytes.writeBytes(fftBytes, 0, fftBytes.length);

然后您现有的代码可以直接查看 fftBytes,而不是调用 computeSpectrum。请注意,我们在 ByteArray 的末尾第二次复制值,以模拟 computeSpectrum 始终返回立体声数据,但麦克风是单声道的事实。您还可以通过调整现有代码以接受单声道数据并查看 m_mag 向量来获得一点速度,而不是将其全部写入 ByteArray

此外,您可能希望将代码顶部的 SAMPLE_RATEN 常量更改为 441009分别。这将匹配每个 channel 返回 256 个值的默认 computeSpectrum 行为,以 44100Hz 采样。

关于flash - 转换 FFT 数据以匹配 ComputeSpectrum FFT 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171456/

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