J'enregistre de l'audio pour les messages vocaux dans l'application en utilisant le code suivant.
MediaRecorder audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
audioRecorder.setOutputFile(audioRecordingFile);
audioRecorder.prepare();
audioRecorder.start();
L'utilisation de MediaRecorder.AudioSource.VOICE_COMMUNICATION au lieu de MediaRecorder.AudioSource.MIC) est très utile pour l'enregistrement d'audios propres prétraités.
Mais, récemment, j'ai trouvé que certains problèmes dans lesquels les fichiers enregistrés sont vides sont signalés sur quelques appareils qui ont été récemment mis à jour vers Android 10. Il convient de noter que tous les appareils Android 10 n'ont pas ces problèmes, seulement quelques-uns, par exemple Nokia 6.1 et Mi A2.
Il n'y a pas d'erreur ou d'exception mais juste des fichiers de sortie audio vides.
Si j'utilise MediaRecorder.AudioSource.MIC), le problème n'est pas visible.
J'ai trouvé les informations suivantes concernant Android 10 et VOICE_COMMUNICATION La version Android 10 inclut les exigences suivantes pour la capture avec VOICE_COMMUNICATION.
Sur cette base, j'ai vérifié la disponibilité d'AcousticEchoCanceler, AutomaticGainControl et NoiseSuppressor en utilisant le code suivant.
AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()
Et a trouvé le même résultat sur Mi A2 et OnePlus 6 avec Android 10. Les deux appareils affichent AcousticEchoCanceler et NoiseSuppressor comme disponibles et AutomaticGainControl comme non disponibles.
Étant donné que le problème n'est pas présent sur tous les appareils Android, je ne veux pas recourir à MediaRecorder.AudioSource.MIC) . En même temps, il n'y a aucune erreur, exception ou facteur de différenciation qui me dit quand me replier sur MediaRecorder.AudioSource.MIC) .
MISE À JOUR: Le problème est résolu lorsque Google Assistant est désactivé sur Mi A2. Cela pourrait être le pointeur: https://developer.android.com/guide/topics/media/sharing-audio-input
Toute aide à ce sujet est appréciée.
la source
Réponses:
J'ai fini par utiliser MediaRecorder.AudioSource.VOICE_RECOGNITION au lieu de MediaRecorder.AudioSource.VOICE_COMMUNICATION sur toutes les versions d'Android.
Nous avons fini par prendre des échantillons sur plus de 15 appareils différents et nous avons découvert que MediaRecorder.AudioSource.VOICE_RECOGNITION fonctionne mieux avec la plupart des appareils, y compris les téléphones haut de gamme et milieu de gamme.
Selon ma compréhension, le problème d'origine rencontré sur quelques appareils sur certains appareils semble être des problèmes de mise en œuvre par les OEM en ce qui concerne Android 10 et VOICE_COMMUNICATION https://source.android.com/devices/audio/implement-pre-processing
la source