Audio playback is a straightforward audio output, with appropriate overload protection and filtration blocks in the audio DSP. It is not configurable by user software beyond standard Android audioManager controls.
Audio capture for Android application audio input uses three microphones: a user microphone in the eyepiece and two environment microphones on the body of the device. These are conflated by the DSP audio processor to allow "beam forming" or controllable directionality. Hence the microphones may emphasize the user's voice with cancellation of environmental sound, or emphasize the environment with cancellation of user-generated sound (e.g. breathing noise), or operate omni-directionally. Additionally, acoustic echo cancellation removes sound from the audio output and speaker. The captured audio is filtered, noise reduced, and equalized before it becomes the Android microphone input for application audio using the media recorder. Most Media Recorder audio sources will use this audio path, adjusting beam forming and audio processing parameters as appropriate.
The Android application audio input is, by the design of the Android OS, a singleton resource. Only one application may "own" the audio capture at any one time, hence it is not possible to have a foreground activity consuming captured audio while a background service simultaneously does so.
A second channel for audio capture is implemented as well, intended for use by speech recognition and other software-interpreted audio usage. This channel operates independently of the main Android application audio channel.
Speech Audio does not implement adaptive filtration, noise suppression, or other algorithms which may introduce artifacts to which machine recognition may be vulnerable. This channel is also available to Android application audio when AudioSource.VOICE_RECOGNITION is selected.
The developer controls the DSP processing by selecting the appropriate AudioSource as defined by MediaRecorder.AudioSource. The following describes the audio processing in M400 and M4000:
DEFAULT: Identical to MIC
CAMCORDER: The noise cancellation emphasizes the environment mic and reduces sound from the user
MIC: The noise cancellation emphasizes the user mic and reduces sound from the environment.
VOICE_COMMUNICATION: Similar to MIC but adds acoustic echo cancellation so audio from the loudspeaker is not heard by the microphone. This is intended for use during Voice over IP (VoIP) and video calls.
VOICE_RECOGNITION: Microphone audio source tuned for voice recognition.
UNPROCESSED: The stream used by the built-in speech recognizer. It uses all the mics and contains no adaptive algorithms which may introduce artifacts to which machine recognition may be vulnerable.