tutorial studio audiorecorder android audio-recording audiorecord

android - studio - audiorecorder iphone



Android AudioRecord vs. MediaRecorder para grabar audio (3)

Quiero grabar voz humana en mi teléfono Android. Me di cuenta de que Android tiene dos clases para hacer esto: AudioRecord y MediaRecorder . ¿Puede alguien decirme cuál es la diferencia entre los dos y cuáles son los casos de uso apropiados para cada uno?

Quiero poder analizar el habla humana en tiempo real para medir la amplitud, etc. ¿Tengo razón al entender que AudioRecord es más adecuado para esta tarea?

Noté que en la página web oficial de la guía de Android para grabar audio , usan MediaRecorder sin mención de AudioRecord.


Según tengo entendido, MediaRecorder es una caja negra que proporciona un archivo de audio comprimido en la salida, y AudioRecorder te brinda solo el flujo de sonido en bruto y tienes que comprimirlo por ti mismo.

MediaRecorder le brinda la máxima amplitud desde la última llamada del método getMaxAmplitude() para que pueda implementar un visualizador de sonido, por ejemplo.

Por lo tanto, en la mayoría de los casos, MediaRecorder es la mejor opción, excepto aquellas en las que debe realizar un procesamiento de sonido complicado y necesita acceder a la transmisión de audio en bruto.


AudioRecord primero guarda datos en minBuffer y luego se copia desde allí al búfer temporal, en MediaRecorder se copia a los archivos. En AudioRecord necesitamos la API setRecordPosition() para copiar los datos guardados en la posición requerida, mientras que en MediaRecorder el puntero del archivo hace este trabajo para establecer la posición del marcador. AudioRecord se puede utilizar para aquellas aplicaciones que se ejecutan en un emulador. Esto se puede hacer proporcionando una baja frecuencia de muestreo, como 8000, mientras que con MediaRecorder el audio no se puede grabar con el emulador. En AudioRecord la pantalla se queda dormida después de algún tiempo, mientras que en MediaRecorder la pantalla no se queda dormida.


Si desea hacer su análisis mientras la grabación aún está en progreso, necesita usar AudioRecord , ya que MediaRecorder registra automáticamente en un archivo. AudioRecord tiene la desventaja de que, después de llamar a startRecording() , debe sondear los datos usted mismo desde la instancia de AudioRecord . Además, debe leer y procesar los datos lo suficientemente rápido como para que no se sobrepase el búfer interno (busque en la salida de AudioRecord , AudioRecord le dirá cuándo sucede eso).