Android аудио запись с применением быстрого преобразования Фурье - PullRequest
1 голос
/ 03 апреля 2019

В настоящее время я записываю аудио, используя AudioRecord, точнее - используя перегрузки метода read, которые снабжаются коротким буфером (нельзя использовать float[] один из-за минимальных ограничений API).

Я хочу применить Быстрое преобразование Фурье к данным, которые я получаю во время записи. Сначала я конвертирую полученный 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[], чтобы оно было противоположным тому, которое я показал ранее, но я просто получаю шум при воспроизведении записи.

Что не так с реализацией?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...