Quiero grabar voz humana en mi teléfono Android. Noté que Android tiene dos clases para hacer esto: AudioRecord y MediaRecorder . ¿Alguien puede 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. ¿Estoy en lo cierto al entender que AudioRecord es más adecuado para esta tarea?
Me di cuenta de que en la página web oficial de la guía de Android para grabar audio , usan MediaRecorder sin mencionar AudioRecord.
fuente
Según tengo entendido,
MediaRecorder
es una caja negra que proporciona un archivo de audio comprimido en la salida yAudioRecorder
le brinda una transmisión de sonido sin procesar y debe comprimirlo usted mismo.MediaRecorder
le da la amplitud máxima de la última llamada algetMaxAmplitude()
método para que pueda implementar un visualizador de sonido, por ejemplo.Entonces, en la mayoría de los casos,
MediaRecorder
es la mejor opción, excepto aquellos en los que debe realizar un procesamiento de sonido complicado y necesita acceso al flujo de audio sin procesar.fuente
AudioRecorderer primero guarda los datos en minBuffer, luego se copia desde allí al búfer temporal, en MediaRecorder se copia en archivos. En AudioRecorder 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. AudioRecorder se puede usar para aquellas aplicaciones que se ejecutan en un emulador, esto se puede hacer proporcionando una frecuencia de muestreo baja, como 8000, mientras que con MediaRecorder, el audio no se puede grabar usando un emulador. En AudioRecord, la pantalla duerme después de un tiempo, mientras que en MediaRecorder la pantalla no se duerme.
fuente