Skip to content

HMAKT99/OpenHearing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OpenHearing

Free, open-source hearing assistance for Android — no root, any earbuds.

CI License: GPL v3

Apple ships a hearing screening and a hearing-aid mode on AirPods Pro 2/3 — but locks them to iPhone/iPad/Mac. OpenHearing brings open hearing assistance to Android, working with any earbuds: screen your hearing, build a personalized amplification profile, and boost quiet speech in real time.

Complement to LibrePods: LibrePods drives AirPods' own hearing-aid mode (root required); OpenHearing does its own on-device processing — no root, any earbuds.


⚠️ Important: this is not a medical device

OpenHearing is a sound-amplification and hearing-assistance tool. It is NOT a medical device, NOT a certified hearing aid, and NOT a substitute for a professional hearing exam. It does not diagnose or treat any condition. If you have concerns about your hearing, see an audiologist or doctor. Keep the volume comfortable and stop if anything is too loud.


Screenshots

Onboarding with safety disclaimer Home screen Pure-tone hearing screening
Onboarding
acknowledge the disclaimer
Home Screening
heard / not-heard, with volume cap + stop
Audiogram and prescribed gain Hearing assist screen Settings and comfort calibration
Results
audiogram + prescribed gain
Hearing assist Settings
comfort calibration, high contrast

Screenshots are from the running app on an emulator (the screening values shown are from an automated test pass). ▶️ A real demo video is coming after on-device validation.


Features

  • 🎧 Pure-tone hearing screening — adaptive (Hughson–Westlake) staircase, per ear, per frequency → an audiogram.
  • 🔊 Real-time hearing assist — multi-band gain from your audiogram, wide dynamic-range compression, and a feedback/howl guard.
  • 🛡️ Safety first — a hard look-ahead output limiter (extensively tested), comfort calibration to cap loudness, and an always-available instant Stop.
  • Accessibility-first — large controls, high-contrast theme, scalable text.
  • 🔒 Private by design — no accounts, no analytics, no ads, no network access. Audio is processed on-device and never recorded or transmitted.
  • 🎧 Any earbuds — wired or Bluetooth; AirPods support is a future enhancement.

How to use

  1. Install — sideload the APK from Releases (F-Droid coming).
  2. Read & accept the safety disclaimer on first launch.
  3. Run the hearing screening — put on a headset in a quiet room, tap Run hearing screening → Start. After each tone, tap Yes, I heard it or No, I didn't. The volume cap and Stop / mute are always on screen.
  4. Review your results — a per-ear audiogram and the prescribed amplification (half-gain rule). This is saved as your profile.
  5. Turn on Hearing assist — grant microphone access, set the amplification level, tap Start assist. Sound around you is amplified in real time; tap Stop assist any time.
  6. Calibrate comfort (Settings) — preview the maximum loudness and lower it until comfortable; that caps how loud assist mode can ever get. Toggle the high-contrast theme here too.

See docs/SAFETY.md, docs/CALIBRATION.md, and docs/DEVICE_TESTING.md for details.


Privacy

Privacy is platform-enforced, not just promised: OpenHearing declares no INTERNET permission, so it physically cannot make network calls. Your hearing data, profile, and audio never leave the device — and microphone audio in assist mode is processed in real time and never recorded or transmitted.

  • No accounts, no ads, no analytics, no trackers, no network.
  • Dependencies are AndroidX / Compose / Hilt / Kotlin only — no Google Play Services, Firebase, or ad/analytics SDKs.

Verify it yourself from the APK:

aapt dump permissions OpenHearing-<version>.apk

The only permissions are RECORD_AUDIO (the mic for assist mode), FOREGROUND_SERVICE + FOREGROUND_SERVICE_MICROPHONE (to keep assist running with a visible notification), and POST_NOTIFICATIONS. See docs/PRIVACY.md.


Build from source

Requirements: JDK 17, Android SDK (API 35, build-tools 35.0.0). Point the build at your SDK via local.properties (sdk.dir=...) or ANDROID_HOME.

./gradlew ktlintCheck detekt test testDebugUnitTest   # lint + unit tests
./gradlew assembleDebug                                # debug APK

CI runs the same checks on every push/PR. Release/signing steps are in docs/RELEASE.md.


Project status — what's verified vs. not

Early alpha: the full software pipeline (screen → profile → real-time assist) is built and unit-tested, but not yet validated on real hardware.

Area Status
Audiogram screening engine (staircase, fitting) ✅ pure-Kotlin, unit-tested
Real-time assist DSP (EQ + WDRC + feedback guard + limiter) ✅ unit-tested; limiter safety suite is the release gate
Android audio engine + foreground assist service ✅ builds — needs on-device validation
Onboarding, persistence, assist UI, accessibility
Comfort calibration + output ceiling ✅ (true dB SPL calibration needs a meter)
Signed release build, privacy, F-Droid metadata ✅ — docs/RELEASE.md
AirPods Pro 2/3 detection / transparency routing UNVERIFIEDdocs/PROTOCOL.md

On AirPods: the protocol is reverse-engineered, not public; we build on LibrePods/CAPod. It may not be fully controllable from Android without root/firmware access — which is why OpenHearing works fully on any earbuds first.


Architecture

Clean multi-module Kotlin (Compose/Material 3, MVVM, Hilt, coroutines). DSP and safety logic live in pure-Kotlin modules so they're unit-tested with no emulator. See ARCHITECTURE.md.

:app · :core-common (units + safety constants) · :core-audiogram (screening

  • fitting) · :core-audio (DSP + limiter) · :airpods-protocol (UNVERIFIED) · :data (persistence).

Contributing

Contributions welcome — especially hardware testers (AirPods Pro 2/3 + an Android phone) and accessibility feedback. See CONTRIBUTING.md, CODE_OF_CONDUCT.md, and docs/SAFETY.md.

License

GPLv3 — see LICENSE.

Credits

  • LibrePods and CAPod for the AirPods reverse-engineering groundwork.

OpenHearing is an independent project, not affiliated with or endorsed by Apple. "AirPods" is a trademark of Apple Inc., used only to describe hardware compatibility.

About

Open-source hearing-assistance for Android — pure-tone screening, audiogram-based amplification, and best-effort AirPods Pro 2/3 support. Not a medical device.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages