Dive into the technical aspects of audio on your device, including codecs, format support, and customization options.

Audio Documentation

Posts under Audio subtopic

Post

Replies

Boosts

Views

Activity

Voice Processing
Why voice processing enabled on AVAudioInputNode makes output audio noticable lower than without it and how to overcome it using voice processing enabled
4
0
303
Jun ’26
AirPods Custom EQ interaction
In iOS 27, when a user has configured a custom AirPods EQ (three-band lows/mids/highs), does that EQ apply on top of audio output from AVAudioEngine in my app, or only to media playback through AVPlayer/MPMusicPlayerController? My app generates therapeutic frequencies (e.g. 528 Hz pure tones) where precise frequency output matters - is there any API to detect or opt out of the system AirPods EQ?
1
0
232
Jun ’26
Real-time synthesis vs. files for long background sessions
For a sleep app running 8–12 hours in background, is AVAudioSourceNode with a real-time render block more power-efficient than looping a pre-encoded audio file via AVAudioPlayerNode? I want to migrate from files to procedural synthesis but not at the cost of battery. What does Instruments / Energy Log show as the typical CPU overhead difference, and is there Apple guidance on this trade-off?
1
0
228
Jun ’26
BlietoothHFP to MFi hearingaids
Is it possible to port a bluetooth microphone (BluetoothHFP) to MFi hearing aids connected to an iPhone. When I try to do that the BluetoothHFP grabs input and output. When I pull the output away (BluetoothA2DP) it gives up the input.
5
0
303
Jun ’26
Voice Isolation Suggestions
We are working on a voice app that uses ASR/TTS on the backend and run into some difficulties in noisy environments. We have compiled the DeepFilterNet3 library into an XCFramework and are using that on the app, but it's sometimes a bit ambitious with trimming out noise and removes some of the voice. Is there any way to make use of Apple's on-device voice isolation mic mode? I see that we can detect the user's mic mode, but we cannot programmatically set it. While we could prompt the user to enable it manually, this adds a bit of friction to the user experience. Do you have any suggestions for enabling voice isolation, or for performing denoising in general?
1
0
224
Jun ’26
Acoustic Echo Cancellation doesn't initially work
We are using AEC in our voice app and it mostly works. However, when the experience begins we play a greeting through the speaker, and the initial few hundred milliseconds of the greeting are being captured by the inputNode. This is throwing off our ASR/TTS. For now, we've disabled audio capture while playing audio, but would prefer to be able to capture all audio with echo cancellation working. Below is some relevant code snippets. Do you have any suggestions to get AEC working more quickly? I've tried a few things like enabling voice processing before setting the audio session to active. public init() { recorderNode = engine.inputNode speakerNode = engine.outputNode mainMixerNode = engine.mainMixerNode engine.attach(audioPlayer) engine.connect( audioPlayer, to: mainMixerNode, format: nil ) playbackFormat = mainMixerNode.outputFormat(forBus: 0) } public func setupAudioSession() async throws(AudioError) { do { let audioSession = AVAudioSession.sharedInstance() try audioSession.setCategory( .playAndRecord, mode: .voiceChat, policy: .default, options: [ .defaultToSpeaker, .allowBluetoothHFP, ] ) try audioSession.setActive(true) } catch { throw .audioSessionSetupFailed(error) } do { try recorderNode.setVoiceProcessingEnabled(true) try speakerNode.setVoiceProcessingEnabled(true) } catch { throw .enableVoiceProcessingFailed(error) } }
1
0
209
Jun ’26
Acoustic Echo Cancellation does not work initially
I have a voice app that is both playing and recording audio. I have enabled voice processing and am setting AVAudioSession.Category to .playAndRecord and AVAudioSession.Mode to .voiceChat. When the experience first launches, we play a greeting. The first few hundred milliseconds of that greeting are being captured by the inputNode before AEC seems to start working. Is there any way to get AEC working the entire time? For now we've had to disable recording while we're playing audio, but would prefer to both play and record simultaneously. Here's some code snippets: public init(denoiseModelPath: URL? = nil) { noiseReducer = denoiseModelPath.flatMap { NoiseReducer(modelPath: $0) } recorderNode = engine.inputNode speakerNode = engine.outputNode mainMixerNode = engine.mainMixerNode engine.attach(audioPlayer) engine.connect( audioPlayer, to: mainMixerNode, format: nil ) playbackFormat = mainMixerNode.outputFormat(forBus: 0) } public func setupAudioSession() async throws(AudioError) { do { let audioSession = AVAudioSession.sharedInstance() try audioSession.setCategory( .playAndRecord, mode: .voiceChat, policy: .default, options: [ .defaultToSpeaker, .allowBluetoothHFP, ] ) try audioSession.setActive(true) } catch { throw .audioSessionSetupFailed(error) } do { try recorderNode.setVoiceProcessingEnabled(true) try speakerNode.setVoiceProcessingEnabled(true) } catch { throw .enableVoiceProcessingFailed(error) } }
1
0
409
Jun ’26
Voice Isolation Suggestions
We are working on a voice app that uses ASR/TTS on the backend and run into some difficulties in noisy environments. We have compiled the DeepFilterNet3 library into an XCFramework and are using that on the app, but it's sometimes a bit ambitious with trimming out noise and removes some of the voice. Is there any way to make use of Apple's on-device voice isolation mic mode? I see that we can detect the user's mic mode, but we cannot programmatically set it. While we could prompt the user to enable it manually, this adds a bit of friction to the user experience. Do you have any suggestions for enabling voice isolation, or for performing denoising in general?
2
0
297
Jun ’26
Live Activity sleep timer without push
My app has a sleep timer (up to 12 hours). Can I drive a Live Activity countdown in the Dynamic Island purely from the foreground/background app process using Activity.update(), without requiring a push notification server? And does Text(timerInterval:) in SwiftUI continue counting down accurately when the app process is suspended by the OS?
0
0
199
Jun ’26
Foundation Models for audio recommendation
Is it appropriate to use the Foundation Models framework on-device to power a natural language sound recommendation feature (e.g. user types 'I can't focus' → model returns a frequency/playlist recommendation from a predefined set)? Or is this use case better served by a custom Core ML model? What's the recommended on-device inference approach in iOS 27 for this type of structured recommendation with a small output space?
0
0
170
Jun ’26
App Intents for audio playback actions in iOS 27
With SiriKit deprecated in iOS 27, I'm implementing App Intents from scratch for a frequency/ambient sound app. Should I conform to AudioPlaybackIntent from the Media framework or build a custom AppIntent? Specifically, I need intents for: play a named frequency, start sleep timer with duration, stop playback. Is there a recommended Intent entity type for audio content that isn't music (i.e. not MusicKit-backed)?
0
0
182
Jun ’26
Does the OS has dedicated volume levels for each AVAudioSessionCategory.
We have an VoiP application, our application can be configured to amplify the PCM samples before feeding it to the Player to achieve volume gain at the receiver. In order to support this, We follow as below. If User has configured this Gain Settings within application, Application applies the amplification for the samples to introduce the gain. Application will also set the AVAudioSessionCategory to AVAudioSessionCategoryPlayback Provided the User has chosen the output to Speaker. This settings was working for us but we see there is a difference in behaviour w.r.t Volume Level System Settings between OS 26.3.1 and OS 26.4 When user has chosen earpiece as Output, then we will set the AVAudioSessionCategory to AVAudioSessionCategoryPlayAndRecord. User would have set the volume level to minimum. When user will change the output to Speaker, then we will set the AVAudioSessionCategory to AVAudioSessionCategoryPlayback. The expectation is, the volume level should be of AVAudioSessionCategoryPlayback what was set earlier instead we are seeing the volume level stays as minimum which was set to AVAudioSessionCategoryPlayAndRecord Could you please explain about this inconsistency w.r.t Volume level.
7
0
1.3k
Jun ’26
Visualization of Apple Music audio
Certain apps (eg. DJay) at least seem to have access to audio data from Apple Music streams, either directly or via an indirect dataset for visualization purposes either generated from audio data on the device or delivered from a remote service. Is there any framework provided by Apple or special agreement with Apple that gives access to Apple Music audio data, or sets of visualization meta data, or the ability to run processing of audio data on device or remotely (either on-demand or via preprocessing)?
0
1
270
Jun ’26
AUv3 "Failed to find component with type..." frequent issues
When the host app of a host/AUv3 extension pair tries to find the audio extension it fails. The system should have scanned the bundle for the extension, but this appears to fail. This basically happens in SimplePlayEngine.initComponent. I've seen this intermittent problem for years. There are many sometimes-effective workarounds that I've gathered and used, but the problem still exists. It is not a problem of validation -- the same AU can validate in some run cycles and then not be found via the host app in others. I've got a Feedback Assistant ticket for the latest iteration of the problem (FB22860885), which has affected beta testers. Usually I only see this when developing with Xcode myself. So even though the testers' app lives in ~/Applications it is still failing for some of them.
3
1
273
Jun ’26
Real-time audio level monitoring improvements
Have there been any changes in macOS 27 or iOS 27 that improve real-time audio level monitoring, WidgetKit updates, Live Activities, or audio route change handling for professional monitoring applications?
Replies
0
Boosts
0
Views
262
Activity
Jun ’26
Voice Processing
Why voice processing enabled on AVAudioInputNode makes output audio noticable lower than without it and how to overcome it using voice processing enabled
Replies
4
Boosts
0
Views
303
Activity
Jun ’26
AirPods Custom EQ interaction
In iOS 27, when a user has configured a custom AirPods EQ (three-band lows/mids/highs), does that EQ apply on top of audio output from AVAudioEngine in my app, or only to media playback through AVPlayer/MPMusicPlayerController? My app generates therapeutic frequencies (e.g. 528 Hz pure tones) where precise frequency output matters - is there any API to detect or opt out of the system AirPods EQ?
Replies
1
Boosts
0
Views
232
Activity
Jun ’26
Real-time synthesis vs. files for long background sessions
For a sleep app running 8–12 hours in background, is AVAudioSourceNode with a real-time render block more power-efficient than looping a pre-encoded audio file via AVAudioPlayerNode? I want to migrate from files to procedural synthesis but not at the cost of battery. What does Instruments / Energy Log show as the typical CPU overhead difference, and is there Apple guidance on this trade-off?
Replies
1
Boosts
0
Views
228
Activity
Jun ’26
Bluetooth mic in, live listen out
Is it possible to link a HFBluetooth input device with the output iPhone speaker while Live Listen is active?
Replies
10
Boosts
0
Views
578
Activity
Jun ’26
BlietoothHFP to MFi hearingaids
Is it possible to port a bluetooth microphone (BluetoothHFP) to MFi hearing aids connected to an iPhone. When I try to do that the BluetoothHFP grabs input and output. When I pull the output away (BluetoothA2DP) it gives up the input.
Replies
5
Boosts
0
Views
303
Activity
Jun ’26
Voice Isolation Suggestions
We are working on a voice app that uses ASR/TTS on the backend and run into some difficulties in noisy environments. We have compiled the DeepFilterNet3 library into an XCFramework and are using that on the app, but it's sometimes a bit ambitious with trimming out noise and removes some of the voice. Is there any way to make use of Apple's on-device voice isolation mic mode? I see that we can detect the user's mic mode, but we cannot programmatically set it. While we could prompt the user to enable it manually, this adds a bit of friction to the user experience. Do you have any suggestions for enabling voice isolation, or for performing denoising in general?
Replies
1
Boosts
0
Views
224
Activity
Jun ’26
Acoustic Echo Cancellation doesn't initially work
We are using AEC in our voice app and it mostly works. However, when the experience begins we play a greeting through the speaker, and the initial few hundred milliseconds of the greeting are being captured by the inputNode. This is throwing off our ASR/TTS. For now, we've disabled audio capture while playing audio, but would prefer to be able to capture all audio with echo cancellation working. Below is some relevant code snippets. Do you have any suggestions to get AEC working more quickly? I've tried a few things like enabling voice processing before setting the audio session to active. public init() { recorderNode = engine.inputNode speakerNode = engine.outputNode mainMixerNode = engine.mainMixerNode engine.attach(audioPlayer) engine.connect( audioPlayer, to: mainMixerNode, format: nil ) playbackFormat = mainMixerNode.outputFormat(forBus: 0) } public func setupAudioSession() async throws(AudioError) { do { let audioSession = AVAudioSession.sharedInstance() try audioSession.setCategory( .playAndRecord, mode: .voiceChat, policy: .default, options: [ .defaultToSpeaker, .allowBluetoothHFP, ] ) try audioSession.setActive(true) } catch { throw .audioSessionSetupFailed(error) } do { try recorderNode.setVoiceProcessingEnabled(true) try speakerNode.setVoiceProcessingEnabled(true) } catch { throw .enableVoiceProcessingFailed(error) } }
Replies
1
Boosts
0
Views
209
Activity
Jun ’26
MusicUnderstanding and Apple Music / MusicKit
Am I correct in my understanding that the new MusicUnderstanding is not intended to be able to support analysis of Apple Music streams via MusicKit or in other ways?
Replies
1
Boosts
0
Views
216
Activity
Jun ’26
iOS and macOS support of Bluetooth LC3
Do iOS and/or macOS support Bluetooth LC3? If yes, since what iOS/macOS version? is there any limitation and/or caveat?
Replies
2
Boosts
0
Views
132
Activity
Jun ’26
Acoustic Echo Cancellation does not work initially
I have a voice app that is both playing and recording audio. I have enabled voice processing and am setting AVAudioSession.Category to .playAndRecord and AVAudioSession.Mode to .voiceChat. When the experience first launches, we play a greeting. The first few hundred milliseconds of that greeting are being captured by the inputNode before AEC seems to start working. Is there any way to get AEC working the entire time? For now we've had to disable recording while we're playing audio, but would prefer to both play and record simultaneously. Here's some code snippets: public init(denoiseModelPath: URL? = nil) { noiseReducer = denoiseModelPath.flatMap { NoiseReducer(modelPath: $0) } recorderNode = engine.inputNode speakerNode = engine.outputNode mainMixerNode = engine.mainMixerNode engine.attach(audioPlayer) engine.connect( audioPlayer, to: mainMixerNode, format: nil ) playbackFormat = mainMixerNode.outputFormat(forBus: 0) } public func setupAudioSession() async throws(AudioError) { do { let audioSession = AVAudioSession.sharedInstance() try audioSession.setCategory( .playAndRecord, mode: .voiceChat, policy: .default, options: [ .defaultToSpeaker, .allowBluetoothHFP, ] ) try audioSession.setActive(true) } catch { throw .audioSessionSetupFailed(error) } do { try recorderNode.setVoiceProcessingEnabled(true) try speakerNode.setVoiceProcessingEnabled(true) } catch { throw .enableVoiceProcessingFailed(error) } }
Replies
1
Boosts
0
Views
409
Activity
Jun ’26
Voice Isolation Suggestions
We are working on a voice app that uses ASR/TTS on the backend and run into some difficulties in noisy environments. We have compiled the DeepFilterNet3 library into an XCFramework and are using that on the app, but it's sometimes a bit ambitious with trimming out noise and removes some of the voice. Is there any way to make use of Apple's on-device voice isolation mic mode? I see that we can detect the user's mic mode, but we cannot programmatically set it. While we could prompt the user to enable it manually, this adds a bit of friction to the user experience. Do you have any suggestions for enabling voice isolation, or for performing denoising in general?
Replies
2
Boosts
0
Views
297
Activity
Jun ’26
Why are none of my posts showing up in the Audio Q&A?
Why are none of my posts showing up in the Audio Q&A? There are no errors or any useful messaging... my posts just aren't showing.
Replies
2
Boosts
0
Views
210
Activity
Jun ’26
Live Activity sleep timer without push
My app has a sleep timer (up to 12 hours). Can I drive a Live Activity countdown in the Dynamic Island purely from the foreground/background app process using Activity.update(), without requiring a push notification server? And does Text(timerInterval:) in SwiftUI continue counting down accurately when the app process is suspended by the OS?
Replies
0
Boosts
0
Views
199
Activity
Jun ’26
Foundation Models for audio recommendation
Is it appropriate to use the Foundation Models framework on-device to power a natural language sound recommendation feature (e.g. user types 'I can't focus' → model returns a frequency/playlist recommendation from a predefined set)? Or is this use case better served by a custom Core ML model? What's the recommended on-device inference approach in iOS 27 for this type of structured recommendation with a small output space?
Replies
0
Boosts
0
Views
170
Activity
Jun ’26
App Intents for audio playback actions in iOS 27
With SiriKit deprecated in iOS 27, I'm implementing App Intents from scratch for a frequency/ambient sound app. Should I conform to AudioPlaybackIntent from the Media framework or build a custom AppIntent? Specifically, I need intents for: play a named frequency, start sleep timer with duration, stop playback. Is there a recommended Intent entity type for audio content that isn't music (i.e. not MusicKit-backed)?
Replies
0
Boosts
0
Views
182
Activity
Jun ’26
Does the OS has dedicated volume levels for each AVAudioSessionCategory.
We have an VoiP application, our application can be configured to amplify the PCM samples before feeding it to the Player to achieve volume gain at the receiver. In order to support this, We follow as below. If User has configured this Gain Settings within application, Application applies the amplification for the samples to introduce the gain. Application will also set the AVAudioSessionCategory to AVAudioSessionCategoryPlayback Provided the User has chosen the output to Speaker. This settings was working for us but we see there is a difference in behaviour w.r.t Volume Level System Settings between OS 26.3.1 and OS 26.4 When user has chosen earpiece as Output, then we will set the AVAudioSessionCategory to AVAudioSessionCategoryPlayAndRecord. User would have set the volume level to minimum. When user will change the output to Speaker, then we will set the AVAudioSessionCategory to AVAudioSessionCategoryPlayback. The expectation is, the volume level should be of AVAudioSessionCategoryPlayback what was set earlier instead we are seeing the volume level stays as minimum which was set to AVAudioSessionCategoryPlayAndRecord Could you please explain about this inconsistency w.r.t Volume level.
Replies
7
Boosts
0
Views
1.3k
Activity
Jun ’26
Visualization of Apple Music audio
Certain apps (eg. DJay) at least seem to have access to audio data from Apple Music streams, either directly or via an indirect dataset for visualization purposes either generated from audio data on the device or delivered from a remote service. Is there any framework provided by Apple or special agreement with Apple that gives access to Apple Music audio data, or sets of visualization meta data, or the ability to run processing of audio data on device or remotely (either on-demand or via preprocessing)?
Replies
0
Boosts
1
Views
270
Activity
Jun ’26
Building AUv3's?
Any chance of more modern framework for building AUv3's coming anytime soon?
Replies
4
Boosts
0
Views
244
Activity
Jun ’26
AUv3 "Failed to find component with type..." frequent issues
When the host app of a host/AUv3 extension pair tries to find the audio extension it fails. The system should have scanned the bundle for the extension, but this appears to fail. This basically happens in SimplePlayEngine.initComponent. I've seen this intermittent problem for years. There are many sometimes-effective workarounds that I've gathered and used, but the problem still exists. It is not a problem of validation -- the same AU can validate in some run cycles and then not be found via the host app in others. I've got a Feedback Assistant ticket for the latest iteration of the problem (FB22860885), which has affected beta testers. Usually I only see this when developing with Xcode myself. So even though the testers' app lives in ~/Applications it is still failing for some of them.
Replies
3
Boosts
1
Views
273
Activity
Jun ’26