การเปิดตัว Android 10 มีข้อกำหนดต่อไปนี้สำหรับการบันทึกด้วย VOICE_COMMUNICATION
- การใช้งานควรมีระบบตัดเสียงสะท้อน (AEC) ในเส้นทางการบันทึกเมื่อ
บันทึกด้วย
VOICE_COMMUNICATION - หากมี AEC ระบบจะต้องค้นพบและควบคุมได้ผ่าน SDK API's
AcousticEchoCanceler
แพลตฟอร์ม Android มีเอฟเฟกต์เสียงในอุปกรณ์ที่รองรับในแพ็กเกจ
audiofx ซึ่งนักพัฒนาแอปสามารถเข้าถึงได้
ตัวอย่างเช่น Nexus 10 รองรับเอฟเฟกต์การประมวลผลล่วงหน้าต่อไปนี้
จับคู่กับอินสแตนซ์ AudioSource
เอฟเฟกต์การประมวลผลล่วงหน้าจะจับคู่กับโหมดกรณีการใช้งานที่มีการขอการประมวลผลล่วงหน้า ในการพัฒนาแอป Android เราจะเรียกกรณีการใช้งานว่าอินสแตนซ์ AudioSource และนักพัฒนาแอปจะขอใช้การแยกรายละเอียด AudioSource แทนอุปกรณ์ฮาร์ดแวร์เสียงจริง Android Audio Policy Manager จะแมปอินสแตนซ์ AudioSource กับการกำหนดค่าเส้นทางการบันทึกที่กำหนด (รวมถึงอุปกรณ์ ระดับเสียง และการประมวลผลล่วงหน้า) ตามกฎเฉพาะของผลิตภัณฑ์ แหล่งที่มาต่อไปนี้จะเปิดเผยแก่นักพัฒนาแอป
android.media.MediaRecorder.AudioSource.CAMCORDERandroid.media.MediaRecorder.AudioSource.VOICE_COMMUNICATIONandroid.media.MediaRecorder.AudioSource.VOICE_CALLandroid.media.MediaRecorder.AudioSource.VOICE_DOWNLINKandroid.media.MediaRecorder.AudioSource.VOICE_UPLINKandroid.media.MediaRecorder.AudioSource.VOICE_RECOGNITIONandroid.media.MediaRecorder.AudioSource.MICandroid.media.MediaRecorder.AudioSource.DEFAULT
เอฟเฟกต์การประมวลผลล่วงหน้าเริ่มต้นที่ใช้กับอินสแตนซ์ AudioSource แต่ละรายการจะระบุไว้ในไฟล์ /vendor/etc/audio_effects.xml หากต้องการระบุเอฟเฟกต์เริ่มต้นของคุณเองสำหรับอินสแตนซ์ AudioSource ทุกรายการ ให้สร้างไฟล์ /vendor/etc/audio_effects.xml แล้วระบุเอฟเฟกต์การประมวลผลล่วงหน้าที่จะเปิด ดูตัวอย่างการใช้งานสำหรับ Nexus 10 ใน device/samsung/manta/audio_effects.xml
อินสแตนซ์ AudioEffect จะรับและปล่อยเซสชันเมื่อสร้างและทำลาย ซึ่งจะทำให้เอฟเฟกต์ (เช่น ตัวเพิ่มระดับเสียง) ยังคงอยู่ตลอดเซสชัน
ตัวอย่างต่อไปนี้จะเปิดใช้การประมวลผลล่วงหน้าสำหรับอินสแตนซ์ AudioSource ของ VoIP และอินสแตนซ์ AudioSource ของกล้องวิดีโอ การประกาศการกำหนดค่า AudioSource ในลักษณะนี้จะทำให้เฟรมเวิร์กขอใช้เอฟเฟกต์เหล่านั้นจาก HAL โดยอัตโนมัติ
<preprocess> <stream type="voice_communication"> <apply effect="aec"/> <apply effect="ns"/> </stream> <stream type="camcorder"> <apply effect="agc"/> </stream> </preprocess>
การปรับแหล่งที่มา
การปรับ AudioSource ไม่มีข้อกำหนดที่ชัดเจนเกี่ยวกับระดับเสียงหรือการประมวลผลเสียง ยกเว้นการจดจำเสียง (VOICE_RECOGNITION) ข้อกำหนดสำหรับการจดจำเสียงมีดังนี้
- การตอบสนองความถี่คงที่ (+/- 3 dB) จาก 100 Hz ถึง 4 kHz
- การกำหนดค่าการพูดระยะใกล้: 90 dB SPL อ่านค่า RMS ที่ 2500 (ตัวอย่าง 16 บิต)
- ระดับจะเพิ่มขึ้นแบบเชิงเส้นจาก -18 dB เป็น +12 dB เทียบกับ 90 dB SPL
- THD < 1% (90 dB SPL ในช่วง 100 ถึง 4000 Hz)
- ข้อกำหนดเกี่ยวกับเสียงความถี่สูงที่เกือบเป็นอัลตราซาวนด์ (สำหรับการทดสอบ โปรดดู
การทดสอบเสียงความถี่สูงที่เกือบเป็นอัลตราซาวนด์):
- การรองรับ
SUPPORT_PROPERTY_MIC_NEAR_ULTRASOUNDตามที่กำหนดไว้ในส่วนที่ 7.8.3 ของ CDD - การรองรับอัตราการสุ่มตัวอย่าง 44100 หรือ 48000 อย่างใดอย่างหนึ่งหรือทั้งสองอย่างโดยไม่มีตัวกรองแบบแบนด์พาสหรือตัวกรองป้องกันการเกิดรอยหยัก
- การรองรับ
- เอฟเฟกต์/การประมวลผลล่วงหน้าปิดใช้โดยค่าเริ่มต้น
ตัวอย่างการปรับเอฟเฟกต์ต่างๆ สำหรับแหล่งที่มาต่างๆ มีดังนี้
- ตัวตัดเสียงรบกวน
- ปรับแต่งสำหรับตัวตัดเสียงรบกวนจากลมสำหรับ
CAMCORDER - ปรับแต่งสำหรับตัวตัดเสียงรบกวนคงที่สำหรับ
VOICE_COMMUNICATION
- ปรับแต่งสำหรับตัวตัดเสียงรบกวนจากลมสำหรับ
- การควบคุมระดับเสียงอัตโนมัติ
- ปรับแต่งสำหรับการพูดระยะใกล้สำหรับ
VOICE_COMMUNICATIONและไมโครโฟนหลักของโทรศัพท์ - ปรับแต่งสำหรับการพูดระยะไกลสำหรับ
CAMCORDER
- ปรับแต่งสำหรับการพูดระยะใกล้สำหรับ
แหล่งข้อมูล
ดูข้อมูลเพิ่มเติมได้จากแหล่งข้อมูลต่อไปนี้
- เอกสารประกอบของ Android สำหรับ แพ็กเกจ audiofx
- เอกสารประกอบของ Android สำหรับ เอฟเฟกต์เสียงการตัดเสียงรบกวน
- ไฟล์
/device/google/crosshatch/audio_effects.xmlสำหรับ Pixel 3