Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android AudioRecord que configuraciones para grabar llamadas

Utilizo la clase AudioRecord para grabar la voz durante una llamada.

Estoy intererested para registrar solamente la voz de la persona que posee el teléfono (del micrófono). Durante la grabación me gustaría hacer algunos procesamiento de audio, pero esto es offtopic por ahora.

Android tiene las siguientes opciones de AudioSources:

  • MediaRecorder.AudioSource.VOICE_CALL
  • MediaRecorder.AudioSource.MIC
  • MediaRecorder.AudioSource.VOICE_UPLINK
  • MediaRecorder.AudioSource.VOICE_DOWNLINK

¿Puede explicar cuáles son las diferencias entre ellos. Ok MIC es obvio pero VOICE_CALL vs VOICE_UPLINK vs VOICE_DOWNLINK?

También debo elegir una frecuencia de muestreo (8000Hz, 16000Hz, 2250Hz, 44100Hz). ¿Puede por favor decirme qué tasa de muestreo para elegir y por qué?

Para el formato de audio elegí AudioFormat.ENCODING_PCM_16BIT pero también tiene: – AudioFormat.ENCODING_DEFAULT – AudioFormat.ENCODING_INVALID – AudioFormat.ENCODING_PCM_8BIT

Por último, ¿cuántos canales debo utilizar y por qué? (AudioFormat.CHANNEL_IN_STEREO o AudioFormat.CHANNEL_IN_MONO)

3 Solutions collect form web for “Android AudioRecord que configuraciones para grabar llamadas”

Usted siempre debe tratar de usar 44100 como tasa de muestreo, ya que es la única tasa de muestreo que está garantizado para trabajar de acuerdo con google.

"La frecuencia de muestreo expresada en Hertz. 44100Hz es actualmente la única tasa que garantiza que funcione en todos los dispositivos, pero otras velocidades como 22050, 16000 y 11025 pueden funcionar en algunos dispositivos". Sitio de desarrollo

En cuanto a estéreo versus mono, utilice mono.

"Describe la configuración de los canales de audio, consulte CHANNEL_IN_MONO y CHANNEL_IN_STEREO. CHANNEL_IN_MONO garantiza que funcione en todos los dispositivos." Sitio de desarrollo

Por último: 8 pips vs 16 bits pcm: Utilizar 16 bits pcm,

"Formato de datos de audio: PCM de 16 bits por muestra, garantizado para ser compatible con dispositivos". Sitio de desarrollo

Sólo recuerde usar un buffer corto [] en lugar de un buffer de bytes cuando utilice 16 bits. Puesto que 16bit es 2 bytes tendrá que combinar dos entradas en el búfer a la vez:

Byte] [] {sample_1_upper, sample_1_lower, sample_2_upper, sample_2_lower, …, sample_n_lower} Sin embargo, si utilizas un buffer corto []:
Corto [] {sample1, sample2, …, sample3}

Nunca he intentado grabar una llamada, pero si el sistema operativo no enlaza la fuente MIC probablemente podría grabar de ella. Puesto que usted está grabando desde el micrófono sólo debe obtener la voz de los usuarios.

¿Puede explicar cuáles son las diferencias entre ellos. Ok MIC es obvio pero VOICE_CALL vs VOICE_UPLINK vs VOICE_DOWNLINK?

VOICE_UPLINK: El audio transmitido desde tu terminal a la otra parte. IOW, lo que usted habla en el micrófono (más el ruido circundante dependiendo de si se utiliza la supresión de ruido y lo bien que se realiza).

VOICE_DOWNLINK: El audio transmitido desde la otra parte hasta su final.

VOICE_CALL: VOICE_UPLINK + VOICE_DOWNLINK.

Un poco tarde, pero puede consultar el dispositivo de audio para averiguar qué puede hacer;

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); String sampleRate = audioManager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE); String sampleBufferSize = audioManager.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER); int bufferSize = AudioRecord.getMinBufferSize(Integer.parseInt(sampleRate), AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.