AudioRecord de Android vs MediaRecorder para la grabación de audio

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 ser capaz de analizar el habla humana en tiempo real para medir la amplitud, etc. ¿Estoy en lo cierto al entender que AudioRecord es más adecuado para esta tarea?

Me di cuenta en la página oficial de Android guía para la grabación de audio , que utilizan MediaRecorder sin mención de AudioRecord.

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

Según entiendo, MediaRecorder es una caja negra que da un archivo de audio comprimido en la salida y AudioRecorder te da solo flujo de sonido crudo y tienes que comprimirlo por ti mismo.

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

Así que en la mayoría de los casos MediaRecorder es la mejor opción excepto aquellos en los que debe realizar algún procesamiento de sonido complicado y necesita acceso a la corriente de audio sin procesar.

AudioRecorderer guarda por primera vez los datos en minBuffer y luego se copia desde allí al buffer temporal, en MediaRecorder se copia a los archivos. En AudioRecorder necesitamos api setRecordPosition () para copiar los datos guardados en la posición requerida, mientras que en MediaRecorder el puntero de archivo es hacer este trabajo para establecer la posición del marcador. AudioRecorder se puede utilizar para aquellas aplicaciones que se ejecutan en un emulador esto se puede hacer proporcionando una tasa de muestreo baja como 8000, mientras que usando MediaRecorder el audio no puede ser grabado usando emulador. En AudioRecord la pantalla duerme después de algún tiempo, mientras que en MediaRecorder la pantalla no duerme.

  • Procesamiento de señales (decodificación de código Morse) con aplicación Android
  • ¿Es posible grabar llamadas telefónicas a través de una aplicación para Android?
  • Android: prueba si Audio-Record-Focus está disponible?
  • ¿Cómo desactiva AGC en el HTC EVO (Supersonic)?
  • Retardo de grabación de audio
  • Eliminar el ruido del registro de la muestra de audio mediante audiorecorder
  • ¿Por qué AudioRecord.getMinBufferSize devuelve ERROR_BAD_VALUE (-2)?
  • Grabación de llamadas en android por qué esto no funciona
  • Talking App como hablar, la grabación de audio no funcionó en todos los dispositivos
  • Cómo grabar audio en la página web (iOS, Android, PC / Mac) - sin flash
  • Archivo .m4a archivo Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.