← ClaudeAtlas

speechanalyzer-framework-expertlisted

Implement, migrate, debug, and review on-device transcription with Apple SpeechAnalyzer, SpeechTranscriber, DictationTranscriber, AssetInventory, AnalyzerInput, live microphone audio, and audio-file analysis on iOS 26, macOS 26, visionOS 26, and tvOS 26 where supported. Use for SpeechAnalyzer setup, locale assets and reservations, volatile/final results, AttributedString transcripts, audio conversion, permissions, lifecycle, and migration from SFSpeechRecognizer or Whisper-based solutions. Do not invent beta or later-SDK APIs, assume locale/device support, iterate Foundation Progress as an AsyncSequence, or use SpeechAnalyzer on watchOS.
fal3/claude-skills-collection · ★ 18 · Code & Development · score 79
Install: claude install-skill fal3/claude-skills-collection
# SpeechAnalyzer Framework Use the API surface in the project’s installed SDK. This guide is compatibility-first for the stable Xcode 26.6 / iOS 26.5 SDK and does not substitute later beta conveniences into a 26-target implementation. ## Compatibility baseline - `SpeechAnalyzer`, `SpeechTranscriber`, `AssetInventory`, and `AnalyzerInput` require iOS 26, macOS 26, visionOS 26, or tvOS 26. They are unavailable on watchOS. - `DictationTranscriber` is available on iOS 26, macOS 26, and visionOS 26, but not tvOS/watchOS. - Build these APIs with Xcode 26 or newer. A lower deployment target requires an availability gate and a legacy or disabled-feature path. - `SpeechTranscriber.isAvailable` is hardware-sensitive. An OS version check alone is insufficient. - The live microphone example is iOS-only because it configures `AVAudioSession` and requests record permission. - If an SDK 27 beta offers helpers such as capture/input providers or converter types, keep those declarations in a beta-SDK-only source path, add the relevant `#available(iOS 27, macOS 27, ...)` runtime gate, and retain the 26 implementation. A stable 26 compiler cannot resolve an unknown symbol merely because it appears inside `#available`. Do not hardcode a language count. Query locale support on the running device. ## Stable setup sequence 1. Check `SpeechTranscriber.isAvailable`. 2. Resolve user input with `SpeechTranscriber.supportedLocale(equivalentTo:)`; exact `Locale` equality can reject a usable regional