Post Title:
CarPlay: iPhone-origin media does not reliably resume after short SFSpeechRecognizer capture
Post Body:
We are testing short, user-initiated speech recognition in a CarPlay driving-task app.
The capture is started by an explicit button tap, lasts up to about 4 seconds, and uses SFSpeechRecognizer, SFSpeechAudioBufferRecognitionRequest, and AVAudioEngine. There is no wake word, no continuous recording, and no background listening.
Test setup:
iPhone: iPhone 17
iOS: 26.5.2
CarPlay: wireless
Vehicle / head unit: Volkswagen Discover Media
Also tested in a second vehicle with wireless CarPlay
Media tested: Apple Music and online radio through CarPlay
Also tested: vehicle DAB+ / normal car radio
Observed behavior:
Native speech recognition succeeds.
Speech is recognized correctly.
There is no loud playback through the vehicle speakers.
During the short capture, the audio route changes to CarPlay / CarAudio input.
After capture, vehicle DAB+ / normal car radio resumes correctly.
iPhone-origin media, including Apple Music and online radio apps playing through CarPlay, does not reliably resume.
In Apple Music, playback may appear to advance or change tracks, but no audio is actually played until the user intervenes.
Online radio through CarPlay remains stopped after capture.
This behavior was reproduced in two vehicles with wireless CarPlay.
Current AVAudioSession configuration during capture:
category: AVAudioSession.Category.record
mode: AVAudioSession.Mode.measurement
options: [.mixWithOthers]
During capture, diagnostics show approximately:
category: AVAudioSessionCategoryRecord
mode: AVAudioSessionModeMeasurement
inputNumberOfChannels: 1
outputNumberOfChannels: 0
currentRoute.inputs: CarPlay / CarAudio
currentRoute.outputs: none
After capture, the app stops and releases audio resources:
Stops AVAudioEngine
Removes the input tap
Ends the recognition request
Cancels the recognition task
Calls setActive(false, options: [.notifyOthersOnDeactivation])
Restores a passive configuration using .ambient / .default
Relevant Swift extract:
try session.setCategory(
.record,
mode: .measurement,
options: [.mixWithOthers]
)
try session.setActive(true, options: [])
if audioEngine.isRunning {
audioEngine.stop()
}
audioEngine.inputNode.removeTap(onBus: 0)
recognitionRequest?.endAudio()
recognitionRequest = nil
recognitionTask?.cancel()
recognitionTask = nil
try session.setActive(
false,
options: [.notifyOthersOnDeactivation]
)
try session.setCategory(.ambient, mode: .default, options: [])
Primary question:
Is there a supported AVAudioSession / CarPlay / Speech configuration for short, user-initiated speech recognition in a CarPlay driving-task app that reliably allows previous iPhone-origin CarPlay media playback to resume after capture?
Additional question:
Is it expected that vehicle DAB+ / normal radio resumes correctly while iPhone-origin CarPlay media does not reliably resume after the same short recording session?
Any guidance on the supported approach would be appreciated.
Best regards,
Guido
Topic:
Media Technologies
SubTopic:
Audio
0
0
16