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?
- Pausar y reanudar la grabación de audio en Android
- Grabar un archivo wav desde el micrófono en Android - problemas
- ¿Cómo puedo transferir el búfer de audio para reproducirlo directamente
- Android, filtros de audio
- Android: silencie el micrófono mientras graba vídeo
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.
- Android: Grabación de audio con visualización de nivel de voz
- ¿Cómo grabar audio solo si está por encima de cierto nivel de sonido?
- Excepción de estado ilegal al llamar a MediaCodec.configure ()
- Tratando de grabar audio, pero recibiendo el mensaje "mediarecorder se fue con eventos no controlados" y "Señal fatal 11 (SIGSEGV) ..."
- ¿Cómo puedo detener GC_CONCURRENT corriendo tan frecuentemente?
- Entrada de audio a través de la toma de auriculares en Android?
- Frecuencia de muestreo y ruido de Android MediaRecorder
- Cómo utilizar el altavoz interno para reproducir sonido mientras que un conector de 3,5 mm enchufado para grabar sonido utilizando un micrófono externo
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.