У меня есть кроссплатформенное приложение (iOS и Android), где я буду записывать аудиоклипы, а затем отправлять их на сервер для выполнения некоторых операций машинного обучения. В моем приложении для iOS я использую AVAudioRecorder
для записи звука. В приложении для Android я использую MediaRecorder для записи звука. Изначально в мобильном я использую формат m4a из-за ограничений по размеру. После достижения сервера я преобразую его в формат wav
, прежде чем использовать его в операциях ML.
Моя проблема в том, что в iOS AVAudioRecorder по умолчанию в ОС выполняет коэффициент усиления необработанных аудиоданных до того, как мы разработчик получим доступ к необработанным данным. Но в Android MediaRecorder не обеспечивает какого-либо усиления по умолчанию для необработанных данных. Другими словами, в iOS я никогда не получу необработанный аудиопоток с микрофона, тогда как в Android я всегда получу только необработанный аудиопоток с микрофона. Различие отчетливо видно, если вы можете записать один и тот же звук на телефонах iPhone и Android рядом с общим источником звука, а затем импортировать записанный звук в Audacity для визуального представления. Я приложил пример скриншота представления ниже.
На изображении первый трек - это запись Android, а второй - из записи iOS. Когда я слышу оба звука через наушники, я смутно различаю их, но когда я визуализирую точки данных, вы можете ясно увидеть разницу в изображении. Эти различия плохи для операций ML.
Очевидно, что в iPhone есть определенный коэффициент усиления, который я хотел бы также реализовать в Android.
Кто-нибудь знает о коэффициенте усиления? ИЛИ есть ли другие возможные альтернативы?