← Back to app

iOS Safari + AirPods Audio Issue

Known WebKit bug affecting speech recognition with Bluetooth audio devices

Summary: When using READ mode on iOS Safari with AirPods or other Bluetooth headphones, you may experience: This is a known iOS Safari/WebKit bug, not an issue with this app.

What's Happening

When iOS Safari activates the microphone (via webkitSpeechRecognition in READ mode), iOS automatically switches audio output from AirPods to the device's built-in speaker. This affects both audio input and output routing.

Why WRITE Mode Works

In WRITE mode, only text-to-speech is used (no microphone activation). The audio routing stays properly configured for AirPods.

Why READ Mode Has Issues

READ mode activates speech recognition, which triggers iOS's microphone subsystem. iOS then switches to a phone-call-like audio profile, routing output to the built-in speaker instead of connected Bluetooth audio devices.

Technical Details

The Web Speech API's webkitSpeechRecognition internally uses the same audio subsystem as getUserMedia(). When the microphone is activated:

  1. iOS detects microphone usage
  2. iOS switches to a "voice call" audio routing mode
  3. Audio output is redirected from Bluetooth (AirPods) to built-in speaker
  4. The built-in iPhone microphone may be used instead of AirPod microphones

Recommended Workarounds

  1. Use iPhone without AirPods - The built-in speaker and microphone work correctly together
  2. Use on iPad or Mac - Desktop Safari handles audio routing better
  3. Use Chrome on desktop - Most reliable experience for all features
  4. Disconnect AirPods before READ mode - Reconnect after finishing speech recognition exercises

Known WebKit Bugs

Experimental Workaround (For Developers)

There's an experimental navigator.audioSession API that may help, but it has limited browser support and may not fully resolve the issue.
// Before starting speech recognition
if (navigator.audioSession) {
  navigator.audioSession.type = 'play-and-record';
}

// After stopping speech recognition
if (navigator.audioSession) {
  navigator.audioSession.type = 'playback';
  navigator.audioSession.type = 'auto';
}

References

Status

Unresolved

As of November 2024, this remains an unresolved WebKit bug. Apple has not provided an official fix or timeline for resolution.