เสียงที่บันทึกโดยใช้ MediaRecorder.AudioSource.VOICE_COMMUNICATION นั้นว่างเปล่าในอุปกรณ์บางอย่างที่ใช้ Android 10


10

ฉันกำลังบันทึกเสียงสำหรับข้อความเสียงในแอปโดยใช้รหัสต่อไปนี้

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

การใช้MediaRecorder.AudioSource.VOICE_COMMUNICATIONแทนที่จะใช้MediaRecorder.AudioSource.MIC)มีประโยชน์อย่างมากในการบันทึกไฟล์เสียงที่ผ่านการประมวลผลล่วงหน้า

แต่เมื่อเร็ว ๆ นี้ฉันพบปัญหาบางอย่างที่ไฟล์ที่บันทึกว่างเปล่ากำลังรายงานบนอุปกรณ์บางอย่างที่เพิ่งได้รับการอัปเดตเป็น Android 10 ควรทราบว่าอุปกรณ์ Android 10 ทั้งหมดมีปัญหาเหล่านี้เพียงเล็กน้อยเช่น Nokia 6.1 และ Mi A2

ไม่มีข้อผิดพลาดหรือข้อยกเว้น แต่เพียงไฟล์เสียงที่ว่างเปล่า

หากฉันใช้MediaRecorder.AudioSource.MIC)แสดงว่าไม่เห็นปัญหา

ฉันพบข้อมูลต่อไปนี้ที่เกี่ยวข้องกับ Android 10 และ VOICE_COMMUNICATION การเปิดตัว Android 10 มีข้อกำหนดต่อไปนี้สำหรับการจับภาพด้วย VOICE_COMMUNICATION

จากนี้ฉันจะตรวจสอบความพร้อมใช้งานของ AcousticEchoCanceler, AutomaticGainControl และ NoiseSuppressor โดยใช้รหัสต่อไปนี้

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

และพบผลลัพธ์เดียวกันกับ Mi A2 และ OnePlus 6 ที่ใช้ Android 10 อุปกรณ์ทั้งสองแสดง AcousticEchoCanceler และ NoiseSuppressor พร้อมใช้งานและ AutomaticGainControl ไม่พร้อมใช้งาน

เนื่องจากปัญหาไม่ได้อยู่บนอุปกรณ์ Android ทุกฉันสวม `t ต้องการที่จะถอยกลับในการใช้MediaRecorder.AudioSource.MIC) ในเวลาเดียวกันมีข้อผิดพลาดไม่มีข้อยกเว้นหรือปัจจัยที่แตกต่างซึ่งจะบอกฉันเมื่อเพื่อถอยกลับในMediaRecorder.AudioSource.MIC)

UPDATE: ปัญหาได้รับการแก้ไขเมื่อ Google Assistant ถูกปิดใน Mi A2 นี่อาจเป็นตัวชี้: https://developer.android.com/guide/topics/media/sharing-audio-input

ความช่วยเหลือใด ๆ เกี่ยวกับเรื่องนี้ชื่นชม



1
โพสต์ที่คุณเชื่อมโยงพูดถึงเกี่ยวกับ MediaRecorder.AudioSource.VOICE_CALL สิ่งที่ฉันใช้คือ MediaRecorder.AudioSource VOICE_COMMUNICATION ฉันเชื่อว่ามันมีความแตกต่างอยู่บ้าง นอกจากนี้ฉันไม่ได้บันทึกการโทร ฉันกำลังบันทึกข้อความเสียงปกติในแอพส่งข้อความ นอกจากนี้มันไม่ได้ล้มเหลวในอุปกรณ์ Android 10 ทั้งหมด แต่มีเพียงไม่กี่อย่างที่ฉันได้กล่าวถึงก่อนหน้านี้
binaryKarmic

คำตอบ:


1

ฉันลงเอยด้วยการใช้MediaRecorder.AudioSource.VOICE_RECOGNITIONแทนที่จะใช้MediaRecorder.AudioSource.VOICE_COMMUNICATIONสำหรับ Android ทุกรุ่น

เราลงเอยด้วยการสุ่มตัวอย่างบนอุปกรณ์ที่แตกต่างกัน 15+ ตัวและพบว่าMediaRecorder.AudioSource.VOICE_RECOGNITIONนั้นทำงานได้ดีที่สุดกับอุปกรณ์ส่วนใหญ่รวมถึงโทรศัพท์ระดับสูงและระดับกลาง

ตามความเข้าใจของฉันปัญหาดั้งเดิมที่พบบนอุปกรณ์บางอย่างในอุปกรณ์บางอย่างดูเหมือนว่าปัญหาการใช้งานโดย OEM ที่เกี่ยวกับ Android 10 และ VOICE_COMMUNICATION https://source.android.com/devices/audio/implement-pre-processing


ฉันประสบปัญหาเดียวกันใน Nokia 6.1 และการปิด Google Assistant ช่วย แต่ถ้าฉันต้องการใช้แหล่งกำเนิดเสียง VOICE_COMMUNICATION จริง ๆ ฉันไม่สามารถขอให้ลูกค้าของเราปิดการใช้งานผู้ช่วยของพวกเขาและฉันต้องการที่จะสามารถใช้คุณสมบัติการประมวลผลเสียงล่วงหน้าเช่นการยกเลิกเสียงสะท้อน บางทีฉันอาจจะสามารถตั้งค่า FX เสียงที่แตกต่างกันด้วยตนเอง แต่ถ้าคุณมีคำแนะนำอื่น ๆ ก็จะได้รับการชื่นชม)
Alexey Ershov

1
ฉันเข้าใจว่าคุณมาจากไหน ดูเหมือนว่าปัญหาในที่นี้จะเกิดจากการติดตั้งใช้งานอย่างผิดพลาดโดย OEMs ซึ่งพวกเขาอาจจะหรือไม่สามารถแก้ไขได้ในอนาคตดังนั้นจึงไม่มีประเด็นที่ต้องพึ่งพา คุณสามารถแก้ไขเองได้บ้างเช่นสังเกตเสียงที่บันทึกไว้พูดหลังจากผ่านไปไม่กี่วินาที หากว่างเปล่าและเวอร์ชั่นของระบบปฏิบัติการสูงกว่า 10 ให้ผู้ใช้มีตัวเลือกในการปิดผู้ช่วยหรือเปลี่ยนเป็นคุณภาพต่ำโดยใช้ VOICE_RECOGNITION
binaryKarmic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.