Android录音,应用快速傅立叶变换

时间:2019-04-03 12:59:42

标签: android audio

目前,我正在更精确地使用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[]数组转换,与之前显示的相反,但是在播放录音时我只会听到噪音。

实现有什么问题?

0 个答案:

没有答案