Audio yang direkam menggunakan MediaRecorder.AudioSource.VOICE_COMMUNICATION kosong di beberapa perangkat dengan Android 10

10

Saya merekam audio untuk pesan suara di aplikasi menggunakan kode berikut.

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();

Penggunaan MediaRecorder.AudioSource.VOICE_COMMUNICATION bukan MediaRecorder.AudioSource.MIC) sangat membantu dalam merekam audio bersih pra-diproses.

Tapi, baru-baru ini saya menemukan beberapa masalah di mana file yang direkam kosong dilaporkan pada beberapa perangkat yang baru-baru ini diperbarui ke Android 10. Perlu dicatat bahwa tidak semua perangkat Android 10 memiliki masalah ini, hanya beberapa yaitu Nokia 6.1 dan Mi A2.

Tidak ada kesalahan atau pengecualian tetapi hanya mengosongkan file output audio.

Jika saya menggunakan MediaRecorder.AudioSource.MIC) maka masalah tidak terlihat.

Saya menemukan informasi berikut yang terkait dengan Android 10 dan VOICE_COMMUNICATION Rilis Android 10 mencakup persyaratan untuk penangkapan dengan VOICE_COMMUNICATION berikut.

Berdasarkan ini saya memeriksa ketersediaan AcousticEchoCanceler, AutomaticGainControl dan NoiseSuppressor menggunakan kode berikut.

AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()

Dan menemukan hasil yang sama pada Mi A2 dan OnePlus 6 dengan Android 10. Kedua perangkat menunjukkan AcousticEchoCanceler dan NoiseSuppressor sebagai tersedia dan AutomaticGainControl tidak tersedia.

Karena masalah ini tidak ada pada semua perangkat Android, saya tidak ingin kembali menggunakan MediaRecorder.AudioSource.MIC) . Pada saat yang sama, tidak ada kesalahan, pengecualian atau faktor pembeda yang memberi tahu saya kapan harus kembali ke MediaRecorder.AudioSource.MIC) .

UPDATE: Masalah akan teratasi ketika Google Assistant dimatikan pada Mi A2. Ini mungkin pointer: https://developer.android.com/guide/topics/media/sharing-audio-input

Setiap bantuan mengenai hal ini sangat kami hargai.

binerKarmik
sumber
1
Pos yang Anda tautkan berbicara tentang MediaRecorder.AudioSource.VOICE_CALL. Apa yang saya gunakan adalah MediaRecorder.AudioSource. VOICE_COMMUNICATION. Saya percaya ada beberapa perbedaan di dalamnya. Juga, saya tidak merekam panggilan. Saya merekam pesan audio yang biasa di aplikasi olahpesan. Juga, itu tidak gagal pada semua perangkat Android 10 tetapi hanya pada beberapa seperti yang saya sebutkan sebelumnya.
binaryKarmic

Jawaban:

1

Saya akhirnya menggunakan MediaRecorder.AudioSource.VOICE_RECOGNITION alih-alih MediaRecorder.AudioSource.VOICE_COMMUNICATION di semua versi android.

Kami akhirnya mengambil sampel pada 15+ perangkat berbeda dan menemukan bahwa MediaRecorder.AudioSource.VOICE_RECOGNITION berfungsi paling baik dengan sebagian besar perangkat termasuk ponsel kelas atas dan menengah.

Sesuai pemahaman saya, masalah asli yang dihadapi pada beberapa perangkat pada beberapa perangkat sepertinya masalah implementasi oleh OEM sehubungan dengan Android 10 dan VOICE_COMMUNICATION https://source.android.com/devices/audio/implement-pre-processing

binerKarmik
sumber
Saya menghadapi masalah yang persis sama pada Nokia 6.1, dan memang mematikan bantuan Google Assistant. Tetapi bagaimana jika saya benar-benar ingin menggunakan sumber audio VOICE_COMMUNICATION? Saya tidak dapat meminta klien kami untuk menonaktifkan asisten mereka, dan saya ingin dapat menggunakan fitur preprocessing audio seperti pembatalan gema akustik. Mungkin saya dapat mengatur audio fx yang berbeda secara manual, tetapi jika Anda mendapat saran lain, itu akan dihargai)
Alexey Ershov
1
Saya mengerti dari mana Anda berasal. Masalahnya di sini sepertinya implementasi buggy oleh OEM yang mungkin atau mungkin tidak mereka perbaiki di masa depan, jadi tidak ada gunanya mengandalkan itu. Anda dapat melakukan beberapa perbaikan khusus seperti mengamati rekaman audio yang direkam setelah beberapa detik. Jika kosong dan versi OS di atas 10, beri pengguna opsi untuk mematikan Asisten atau beralih ke kualitas yang sedikit rendah dengan menggunakan VOICE_RECOGNITION.
binaryKarmic