Skip to content

Ios Apps

audible-viewer-ios

Logs into Audible on the iPhone, fetches the library, downloads and decrypts AAXC audiobooks, plays them back, and runs Apple’s on-device Speech framework against the audio to draw live word-level captions on screen. ADHD-friendly listen-and-read at the same time, no waiting for a Mac to pre-transcribe.

  • When you want an audiobook with running captions so the eye can follow the ear.
  • When you want a phone-only flow that does not depend on the Mac sidecar in ~/apps/audible-viewer/.
  • When the book is recent enough that on-device transcription is good enough for casual reading along (no human-edited transcript).
  1. Open the app on the iPhone, tap Connect Audible, sign in through the embedded WebKit OAuth flow.
  2. The app stores the Authenticator payload in the iOS Keychain and pulls the library list.
  3. Pick a book. The app downloads the AAXC, fetches the voucher key and IV, decrypts to local m4a via FFmpegKit.
  4. Tap play. AVPlayer drives the audio, an audio tap feeds SFSpeechRecognizer, words light up as they are spoken.
  • Repo: ~/apps/audible-viewer-ios/
  • Bundle ID: com.themarketingshow.audibleviewer.ios
  • Companion Mac sidecar (independent): ~/apps/audible-viewer/ (Python, pre-baked transcripts)
  • Project file generated by xcodegen from project.yml — never edit AudibleViewer.xcodeproj directly.

After every push to this repo, the build auto-installs on the phone via ~/apps/cc/bin/run-terminal-over-ssh.sh mbp ~/apps/audible-viewer-ios/run.sh. The MBP Terminal opens, pulls, builds, codesigns, and uses devicectl to push the new build over Wi-Fi. No cable needed; the phone is already paired wirelessly.

Build 9+ writes every auth + library call into audible-viewer-log.txt in the app’s Documents folder, exposed via UIFileSharingEnabled. Pull from the MBP:

xcrun devicectl device copy from \
--device "James iPhone 16 Pro Max 256 GB" \
--domain-type appDataContainer \
--domain-identifier com.themarketingshow.audibleviewer.ios \
--source Documents/audible-viewer-log.txt \
--destination /tmp/audible-viewer-log.txt
  1. Auth + Library (current): Connect Audible, see books.
  2. Download + Decrypt: AAXC fetch, voucher, FFmpegKit decrypt.
  3. Playback + Live Captions: AVPlayer + SFSpeechRecognizer audio tap.
  4. Polish: background audio, lock-screen art, sleep timer, sync play position with the Mac sidecar.
  • Live captions, not pre-baked word timings — accuracy is whatever Apple’s on-device model gives you. The Mac app’s WhisperX path is more accurate but slower.
  • Standalone: no fallback to the Studio’s server.py if Audible auth breaks.
  • iOS 17+. Free Apple ID signing means rebuilds expire weekly if you ever switch to that path.