You can fine-tune recording and playback quality using an AudioSet object. The library handles platform-specific mapping automatically.
Cross-Platform Configuration
Use common keys for consistent behavior across iOS and Android:
AudioSamplingRate: Sampling rate in Hz.AudioEncodingBitRate: Bit rate in bps.AudioChannels: Number of channels (1 for mono, 2 for stereo).
iOS Specific Configuration
Use keys with the IOS suffix:
AVSampleRateKeyIOSAVFormatIDKeyIOS (use AVEncodingOption)AVEncoderAudioQualityKeyIOS (use AVEncoderAudioQualityIOSType)AVNumberOfChannelsKeyIOSAVModeIOS (options: 'gameChatAudio', 'measurement', 'moviePlayback', 'spokenAudio', 'videoChat', 'videoRecording', 'voiceChat', 'voicePrompt')
Android Specific Configuration
Use keys with the Android suffix:
AudioEncoderAndroid (use AudioEncoderAndroidType)AudioSourceAndroid (use AudioSourceAndroidType)
Important: Legacy Android keys like AudioSamplingRateAndroid are deprecated. Use the common AudioSamplingRate instead.
Android Quality Presets
If AudioQuality is omitted, Android defaults to high:
low: 22050 Hz, 64 kbps, monomedium: 44100 Hz, 128 kbps, monohigh: 48000 Hz, 192 kbps, stereo (Default)
Explicitly setting AudioSamplingRate, AudioEncodingBitRate, or AudioChannels will override these presets.
// Cross-platform example
const audioSet = {
AudioSamplingRate: 44100,
AudioEncodingBitRate: 128000,
AudioChannels: 1,
};
// iOS specific example
const iosSet = {
AVSampleRateKeyIOS: 44100,
AVFormatIDKeyIOS: AVEncodingOption.aac,
AVModeIOS: 'measurement',
};
// Start recorder with config
const uri = await Sound.startRecorder(undefined, audioSet, true);