Skip to content

About

A camera that tells you what it sees, out loud and offline. On-device scene and page description from a fine-tuned vision model, live OCR, 601-class detection and LiDAR depth. Built for VoiceOver and TalkBack. Free on iPhone and Android.

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

✨ RealTime AI Camera ✨

πŸ‘οΈ A camera that tells you what it sees β€” out loud, offline, on your phone.

Point it at something and it names it. Hold it up to a bill and it reads the bill. Press one button and it describes the whole room in a sentence you can act on. No account. No signal. No server. Nothing ever leaves the phone.

It is a native iPhone and Android app that runs object detection, text recognition and a fine-tuned vision-language model on the phone itself, and speaks what they find out loud.

Download on the App Store Get it on Google Play Downloads, both stores

38 active days, verified by Not a Cent

Free on iPhone and Android β€” no ads, no subscription, nothing to buy inside.


Works Offline Privacy First VoiceOver YOLOv8 Classes LiDAR On Device AI License


🎬 Watch It Work (90 seconds)

Watch the RealTime AI Cam demo on YouTube

β–Ά Watch on YouTube: live detection at a concert, describing a scene, answering a question out loud, reading mail, and Help Me Aim talking you into a photo. All real screen recordings, all offline.


πŸ“Έ Screenshots

🌎 Translation 🐢 Detection 🏠 Home Screen πŸ“± App Info πŸ“ LiDAR Distance
Offline Spanish→English 601 object classes Clean, native UI Lightweight install Pro model depth sensing

πŸ› οΈ What I built

Designed, written and shipped by Matt Macosko (NiceDreamzApps). The detector, the base language model and the inference runtimes are upstream work, credited below; the app around them is this repo.


πŸ” Where it started

This began as the eyes of a robot that watched a chicken coop.

The robot had to know what it was looking at while standing in a coop, where there is no wifi worth trusting and no reason to believe a server will answer. So the recognition had to run on the machine itself. That one constraint never went away, and it is why every part of this app still runs on your device and not on somebody else's computer.

The camera turned out to be more useful than the robot. It moved to a phone. Then blind and low-vision users found it, and told us what it was really for.

Chicken is still class 109 of the 601. So are Fox, Raccoon, Owl and Eagle.


πŸ—£οΈ The part that matters most

Press What's this? and the phone talks back.

It speaks one to three plain sentences about what the camera is actually looking at β€” where you are, what's near you and on which side, people, anything moving, hazards. Point it at mail and it leads with what the page is and who sent it, then the number that matters, then the deadline, then what happens if it's ignored.

This runs on a small vision-language model that was fine-tuned for this one job and ships inside the app instead of calling somebody's server. That's most of why the download is large, and it's the whole point. It works in airplane mode, on a plane, in a basement, in a country where your data plan doesn't.

It never refuses a shot. Dark, blurry, cut off β€” it says so in a few words and then describes whatever it can make out anyway. It will not hand the picture back and tell you to take another one.


β™Ώ Built for VoiceOver and TalkBack

This app is used every day by blind and low-vision people. The accessibility work isn't a checkbox at the end, it is the product.

πŸ”” Hands off the shutter

A spoken countdown before the photo. Tap once, it counts three, two, one out loud with a tap you can feel each second, then fires β€” so your hand is off the phone at the moment it takes the picture. Pressing the button was what blurred the shot.

πŸŽ™οΈ Your voice, or its voice

A switch hands every spoken line to VoiceOver or TalkBack instead, so you hear it in your voice at your speed and nothing talks over anything.

πŸ—‚οΈ Every voice your phone has

Not a short list of favourites. Voices you install or enable yourself show up, and the list scrolls.

πŸ”¦ One-tap flashlight

Full brightness on the first tap. No brightness menu to get through first.

πŸ–ΌοΈ Describe photos you already have

Straight from your library, not just what the camera is pointed at.

Every control is labelled, and the labels say what the thing does, not what it's called.

Feature requests from the AppleVis community are credited by name in the commit history and in the source comments. If something is unlabelled, read in the wrong order, or just not useful β€” say so, and it gets fixed.


✨ Everything it does

🎯 Sees

  • πŸ—£οΈ Scene & page description β€” the fine-tuned on-device narrator
  • 🐢 Object detection β€” YOLOv8, 601 classes from Open Images V7
  • 🏠 Indoor / outdoor modes β€” swaps the whole list of things the detector may name, so your bathroom stops containing a skyscraper
  • πŸ“ LiDAR distance β€” per-object depth on Pro models
  • πŸ“Έ Help Me Aim: says where to move the phone until the subject is in frame, then takes the picture

πŸ“– Reads

  • πŸ“ Live English OCR β€” printed text, out loud, no shutter press
  • βœ‰οΈ Mail & bill mode β€” what it is, who sent it, the amount, the deadline
  • 🌎 Spanish β†’ English β€” offline translation of signs and labels
  • πŸ”Š Speaks it all aloud β€” in its voice or in yours

⚑ How it's put together

graph TB
    A[πŸ“± Camera Frame] --> B[🎯 YOLOv8 Β· 601 classes]
    A --> C[πŸ“ Vision OCR]
    A --> D[πŸ—£οΈ Fine-tuned Vision-Language Narrator]
    A --> H[πŸ“ ARKit LiDAR Depth]

    B --> E[⚑ Metal]
    C --> G[🌎 Offline Translation]
    E --> F[🧠 Neural Engine]
    D --> F
    F --> I[πŸ”Š Spoken Output Β· VoiceOver or in-app voice]
    H --> I

    D --> J[πŸ”’ 100% On-Device Β· nothing leaves the phone]
    B --> J
Loading
Component Technology Purpose
πŸ—£οΈ Narrator Fine-tuned vision-language model, 4-bit, bundled Β· MLX Swift (iOS) Β· llama.cpp (Android) Scene and page description
πŸ€– Detector YOLOv8 (Ultralytics) 601-class object detection
πŸ—οΈ UI SwiftUI (iOS) Β· Jetpack Compose (Android) Native interface on both
⚑ Acceleration CoreML + Metal + Neural Engine · TensorFlow Lite Hardware-optimized inference
πŸ“Š Dataset Open Images V7 The 601 classes
πŸ“ Depth ARKit LiDAR Per-object distance
πŸ”‹ Optimization Thermal & battery aware, adaptive frame rate Runs all day

πŸ”’ Privacy guarantee

πŸ›‘οΈ Your data never leaves your device

Privacy Feature Status Description
πŸ“Š Data Collection ❌ NONE Zero telemetry or analytics
🌐 Internet Required ❌ NO Works in airplane mode
πŸ“ Location Tracking ❌ NEVER No GPS or location access
🏒 Cloud Processing ❌ NONE 100% on-device AI, model included
πŸ‘€ Account Required ❌ NONE Install and use it

πŸ” Privacy is non-negotiable. Everything happens locally.

The one network call in the code: if a build does not have the narrator model inside it, the iPhone app offers a Download button and fetches it once, only when tapped (VisionModelStore.swift). App Store and Google Play builds ship with the model, so they never make it.


πŸ“¦ Both platforms, one repo

πŸ“± iOS β€” ios/

SwiftUI, CoreML, Metal and the Neural Engine. Full source, the Xcode project, and the YOLOv8 CoreML model.

Status: βœ… Live on the App Store, free.

πŸ€– Android β€” android/

The Android port: TensorFlow Lite YOLOv8 across the same 601 classes, with the model and the conversion tooling included.

Status: βœ… Live on Google Play, free.


πŸš€ Getting started

πŸ“‹ Requirements

  • Device: iPhone with iOS 17+ β€” the download is around 700 MB because the narrator model is inside the app
  • Android: Android 8+ for detection and reading; What's this? needs Android 9+ on a 64-bit (arm64) phone
  • Optional: a LiDAR-equipped iPhone for distance measurement
  • Development: macOS with Xcode 16+ (the MLX Swift and swift-transformers packages resolve on first open), or Android Studio for android/

βš™οΈ Quick setup

# 1. Clone the repository
git clone https://github.com/nicedreamzapp/RealTimeAICam.git

# 2. Navigate to the iOS project
cd RealTimeAICam/ios

# 3. Open in Xcode
open "RealTime Ai Cam.xcodeproj"

# 4. Connect your iPhone and build!

In Xcode, pick your own signing team (and a bundle identifier of your own) under Signing & Capabilities before you run on a device.

The narrator weights are too large for git and are not in this repo. A build from source works for detection, reading and translation straight away; What's this? shows a Download button on the home screen and fetches the model (about 622 MB) the first time.

Android: the arm64 build links against prebuilt llama.cpp libraries and loads model files that are also not in git, so build those first by following android/NARRATOR.md, then open android/ in Android Studio.

🚧 Known limits

  • What's this? on Android works but is slow on budget phones: about 87 s on a Helio P35, the only phone timed so far (NARRATOR.md)
  • No What's this? on 32-bit Android phones; detection and reading still work there
  • LiDAR distance is iPhone Pro only

πŸ”‘ Required permissions

  • πŸ“· Camera β€” required, it's a camera
  • πŸ–ΌοΈ Add to photo library: optional, so Help Me Aim can save the pictures it takes (picking a photo to describe needs no permission)
  • πŸŽ™οΈ Microphone + speech recognition: optional, only while you hold the button to ask a question about a photo, transcribed on the phone

πŸ”§ Advanced customization

πŸ€– Swap the YOLOv8 model (click to expand)
  1. Replace the model file

    ios/yolov8n_oiv7.mlpackage  β†’  YourCustomModel.mlpackage
    
  2. Update the processor

    • Modify YOLOv8Processor.swift if input/output shapes differ (it loads the generated yolov8n_oiv7 class and expects 601 classes)
    • Adjust the class labels in ios/class_names.txt
    • If you change the class list, update the indoor/outdoor sets in YOLOv8Processor.swift too, or the filters will drop classes that no longer exist
  3. Large models

    • Use Git LFS for models over 100 MB
    • Consider quantization for better performance

⚑ Performance tuning

  • Adjust inference frequency in the camera pipeline
  • Modify confidence thresholds for different use cases
  • Enable or disable features based on device capability

🀝 Contributing

🌟 Contributions welcome 🌟

πŸ“ Before submitting a PR, please include:

  • πŸ“± Device model + OS version tested
  • πŸ”„ Steps to reproduce any issue
  • πŸ“‹ Crash logs or error messages, if any
  • πŸ“Έ Screenshots or a short video
  • πŸ§ͺ Results on more than one device if you can

🎯 Areas where help is especially welcome:

  • β™Ώ Accessibility testing with a real screen reader β€” the most valuable thing anyone can send
  • 🌍 Additional languages for translation and for the interface
  • 🎨 UI and UX improvements
  • ⚑ Performance optimization
  • πŸ› Bug fixes and stability

πŸ“ž Support & contact

πŸ’¬ Need help?

Email Support Website

The narrator here runs on MLX Swift on the phone. On the Mac I use MLX for claude-code-local, which runs Claude Code with local models and no API key.


πŸ“„ License & credits

βš–οΈ License

The code is licensed under AGPL-3.0, the same license as the YOLOv8 detector it is built on. You can use, study, change and share it, as long as you share your changes under the same terms. The "RealTime AI Cam" name and app icon are not licensed, so a build you publish needs its own name and icon.

See LICENSE for the full text and NOTICE.md for the name, icon and third-party notices.

πŸ™ Acknowledgments

Component Creator License
πŸ€– YOLOv8 Β© Ultralytics AGPL-3.0
πŸ“Š Open Images V7 Β© Google CC BY 4.0
🍎 CoreML, Metal, SwiftUI, ARKit © Apple Inc. Apple Developer Agreement
πŸ€– TensorFlow Lite, Jetpack Compose Β© Google Apache 2.0
β™Ώ Feature requests & testing The AppleVis community with thanks
🎨 App design & development © NiceDreamzApps AGPL-3.0

Get the app

Download on App Store Get it on Google Play GitHub Stars GitHub Forks

πŸš€ Made with ❀️ by NiceDreamzApps


Β© 2026 RealTime AI Camera β€’ Open Source β€’ Privacy-First β€’ Built to be heard

About

A camera that tells you what it sees, out loud and offline. On-device scene and page description from a fine-tuned vision model, live OCR, 601-class detection and LiDAR depth. Built for VoiceOver and TalkBack. Free on iPhone and Android.

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages