我发现大多数其他问题都在询问如何将立体声转换为单声道,但我想知道我是否需要将音频数据从立体声转换为单声道才能进行 FFT?如果我不这样做,我知道要在两个 channel 上进行 FFT,但是我如何使用它们来找到音频的分形维数?如果我这样做,将这两个值平均在一起是个好主意吗?
我还有数百万个点,当您查看它们时,您会看到音频信号的样子。如果我有这么多点,我为什么要做一个只有 1024 字节的 FFT?
这是我正在使用的音频格式:
PCM_SIGNED 44100.0 Hz,16 位,立体声,4 字节/帧,小端
当我读取流时缓冲区可能得到的一个示例:[41,0,68,0]
如果我只是将两者平均起来,我就是这样做的:
amplitude1 = (double) (buffer[1] << 8 | buffer[0] & 0xFF) / 32767.0;
amplitude2 = (double) (buffer[3] << 8 | buffer[2] & 0xFF) / 32767.0;
double aveAmp = (amplitude2+amplitude1)/2;
最佳答案
声音的真实性不是单声道或立体声,它是空间中的一个场。 “立体声”是一种简单的数据压缩形式,它利用了我们缺乏耳朵的优势。 Mono 只是稍微更进一步。
也就是说,“分形维数”对于音频没有很好的定义。以立体声为例,您可以将左 channel 用作 X 坐标,将右 channel 用作 Y 坐标,您将获得具有相关分形维数的 2D 路径。这与相同声音的等效“单”一维解释的分形维数完全无关;立体分形维数将测量真实的立体内容。 (通过简单地复制信号在立体声中调整 mon 将创建 1.0 的立体分形维数,因为 L=R 始终是一条线)
关于audio - 我是否需要将立体声音频转换为单声道以进行 FFT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19745573/