目前,我正在更精确地使用AudioRecord
录制音频-使用它的read
方法重载由短缓冲区提供(由于最小的API约束,不能使用float[]
)。
我想将Fast Fourier transform应用于记录过程中获得的数据。首先,我使用这样的转换将收到的short[]
转换为float[]
:
public static float[] convertShortToFloat(short[] array) {
float[] data = new float[array.length];
for (int i = 0; i < array.length; i++) {
data[i] = 1.f * array[i] / Short.MAX_VALUE;
}
return data;
}
然后,我只将结果float[]
提供给FFT
实例,并使用getRealPart()
方法获得结果(我所拥有的此类的实现实际上有些不同,但是我相信它的工作原理几乎与此相同)。
据我了解,现在我应该将转换后获得的数据转换回short[]
形式(转换回原始信号域),然后提交给多路复用器。我创建了一个short[]
-float[]
数组转换,与之前显示的相反,但是在播放录音时我只会听到噪音。
实现有什么问题?