#android #android-ndk
#Android #андроид-ndk #android-ndk
Вопрос:
Я работаю над своим проектом приложения для Android, в котором я беру звук из окружающей среды и обрабатываю его, чтобы удалить шум и увеличить амплитуду сигнала.
Для этой цели я использую этот пример проекта для примеров проектов библиотеки oboe. Я получаю очень низкую задержку. Теперь я хочу знать, есть ли способ обработать ввод, чтобы увеличить амплитуду сигнала и уменьшить шум, как мы делаем в NoiseSuppressor, но родным способом.
Таким важным параметром для меня является низкая задержка ввода-вывода звука. Итак, если я смогу добиться усиления амплитуды и шумоподавления без добавления задержки, тогда это будет здорово. Пожалуйста, любезно сообщите мне ваши предложения по этой проблеме. Спасибо за чтение.
Комментарии:
1. вы видели это: github.com/igorski/MWEngine
2. @keepTrackOfYourStack Я рассмотрел эту библиотеку. Это так же, как oboe. Если я чего-то не упускаю, ни одна из этих библиотек не предоставляет какого-либо хорошего и прямого способа, такого как подавитель шума. На данный момент я рассматриваю возможность создания собственного фильтра для уменьшения шума. Но все же, если у кого-то есть лучшее решение, я обязательно рассмотрю его, поскольку предпочитаю использовать библиотеку, чем писать большой код, в котором могут быть ошибки.
3. да, я тоже не нашел конкретных примеров подавления шума в этой библиотеке… просто подумал, что я, возможно, пропустил это.
Ответ №1:
Нет, в oboe нет поддержки предварительной обработки / шумоподавления звука.
Вот их полная документация по этому поводу.
Но что вы можете сделать, так это noise suppressor Android SDK, предоставляющий его для вашего проекта.
Вот документы для начала работы с oboe, которые объясняют JNI, и вы можете использовать noise suppressor в java / Android sdk.
Комментарии:
1. Спасибо Ахил Сурапутам за ваше предложение. Но приложение, которое я разрабатываю, является приложением реального времени, поэтому дополнительное переключение с NDK на SDK и обратно на NDK добавит дополнительных накладных расходов. Причиной, по которой я выбрал NDK вместо использования media recorder, была задержка. В настоящее время я создаю свою собственную библиотеку, но если у вас есть лучшее предложение или библиотека, чем у меня, я готов его выслушать.
2. Android NDK работает на JNI. пожалуйста, обратитесь к developer.android.com/ndk/guides . Я цитирую это предложение в документе «NDK для компиляции кода C и C в собственную библиотеку и упаковки его в ваш APK с использованием Gradle, интегрированной системы сборки IDE. Затем ваш Java-код может вызывать функции в вашей собственной библиотеке через платформу Java Native Interface (JNI)».
3. Я также хотел бы уточнить, что использование NDK завершено, но не SDK. это связано с тем, что машинный код взаимодействует с Java.