записывать аудио, но сохранить его, если у него есть данные на Android - PullRequest
0 голосов
/ 20 ноября 2018

Я записываю аудио на Android, но главная проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не хочу сохранять аудиофайл, если в нем нет данных (как, например, пользователь ничего не сказал).Я могу сохранить его, затем проверить время или длину аудиофайла, а затем удалить его, но я хочу проверить его перед сохранением файла, чтобы уменьшить объем работы и улучшить производительность.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

В зависимости от окружающего шума, проверка амплитуды может быть недостаточной.Вам может потребоваться выполнить быстрое преобразование Фурье для аудио, чтобы разделить частоты.Это может быть сделано с минимальным количеством буферизации.

См. video для визуального объяснения того, что такое преобразование Фурье. также это видео.Это на самом деле очень увлекательная тема.

В любом случае, в следующей книге приведен пример кода для аудио-визуализатора.Вот сопровождающий сайт github для этой книги.Он также может содержать некоторые другие примеры кода, связанные со звуком, которые могут оказаться полезными.

0 голосов
/ 20 ноября 2018

Вы можете получить доступ к амплитуде голосового потока на MediaRecorder с помощью:

public double getAmplitude() {
    if (recorder != null)
        return  recorder.getMaxAmplitude();
    else
        return 0;
}

, затем вы можете проверить диапазон, чтобы обнаружить, есть ли какие-либо ценные данные (например, разговоры) нааудио или нет

...