AVSpeechSynthesizer & Bluetooth Issues

Hello,

I have a CarPlay Navigation app and utilize the AVSpeechSynthesizer to speak directions to a user. Everything works great on my CarPlay simulator as well as when plugged into my GMC truck. However, I found out yesterday that one of my users with a Ford truck the audio would cut in an out.

After much troubleshooting, I was able to replicate this on my own truck when using Bluetooth to connect to CarPlay. My user was also utilizing Bluetooth. Has anyone else experienced this? Is there a fix to the problem?

import SwiftUI
import AVFoundation

class TextToSpeechService: NSObject, ObservableObject, AVSpeechSynthesizerDelegate {
	private var speechSynthesizer = AVSpeechSynthesizer()
	static let shared = TextToSpeechService()
		
	override init() {
		super.init()
		speechSynthesizer.delegate = self
	}
	
	func configureAudioSession() {
		speechSynthesizer.delegate = self
		
		do {
			try AVAudioSession.sharedInstance().setCategory(.playback, mode: .voicePrompt, options: [.mixWithOthers, .allowBluetooth])

		} catch {
			print("Failed to set audio session category: \(error.localizedDescription)")
		}
	}
	
	
	func speak(_ text: String) {
		Task(priority: .high) {
			let speechUtterance = AVSpeechUtterance(string: text)
			speechUtterance.voice = AVSpeechSynthesisVoice(language: AVSpeechSynthesisVoice.currentLanguageCode())
			try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)
			speechSynthesizer.speak(speechUtterance)
		}
	}
		
	func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance) {
		Task {
			stopSpeech()
			try AVAudioSession.sharedInstance().setActive(false)
		}
	}
	
	func stopSpeech() {
		speechSynthesizer.stopSpeaking(at: .immediate)
	}
}
AVSpeechSynthesizer & Bluetooth Issues
 
 
Q