Transmit encrypted messages via sound β no Bluetooth, Wi-Fi, or data needed.
Audio-Based Secret Messaging App
Transmit encrypted messages via sound β no Bluetooth, Wi-Fi, or data needed.
Imagine two phones sitting next to each other β one sends a secret message through high-frequency sound (inaudible to humans), and the other decodes it through its microphone.
Itβs like data transfer via sound waves, useful for:
- Offline data exchange
- Spy tools or fun secret chat
- Device pairing without network
- Classroom/study use for sneaky text transfer π
- Converts text into data packets.
- Modulates data as audio tones in the ultrasonic range (above normal human hearing).
- Sends tones through the phone speaker.
Example: 'HELLO' β binary β mapped to tones like 18000Hz, 18100Hz... etc.
- Before data transfer, devices do a quick tone handshake to sync.
- Could use a βpingβ tone (like radar) to let the receiver know to start recording.
- Embed watermark/fingerprint into sound for authenticity.
- Could also help in error detection or app branding.
- Should work between:
- Android
βοΈ Android - Android
βοΈ Browser (via Web Audio API) - Browser
βοΈ Browser
- Android
- Web app uses Web Audio API for both generating and analyzing ultrasonic sound.
- Android (Java/Kotlin) or Web (JS)
- Converts message to binary
- Maps binary β tone frequencies (FSK, ASK, or custom modulation)
- Plays modulated sound via speaker
- Listens using microphone
- Uses FFT (Fast Fourier Transform) to detect tone frequency
- Maps back from tone β binary β text
- Optional AES-128/256 or custom lightweight cipher
- Protects messages from being sniffed (e.g., if another mic is listening)
- Reed-Solomon ECC helps fix errors caused by noise
- Useful because ultrasonic waves can be affected by environment (walls, movement, etc.)
/secret-sound-messenger/
β
βββ /android-app/ # Java app for mobile sender/receiver
β βββ AudioSender.java
β βββ AudioReceiver.java
β βββ ReedSolomon.java
β
βββ /web-app/ # JS Web Audio app
β βββ encoder.js
β βββ decoder.js
β βββ visualizer.js
β
βββ /core-algorithms/ # Shared modulation & encoding logic
β βββ modulation.py (or .js)
β βββ encryption.py
β
βββ /docs/ # Documentation and tech explanations
β βββ signal-diagrams.png
β βββ protocol-spec.md
β
βββ README.md
βββ LICENSE
| Bit | Frequency |
|---|---|
| 0 | 18000 Hz |
| 1 | 19000 Hz |
| Sync | 20000 Hz |
- Each bit is played as a tone for a fixed duration (e.g., 50ms)
- Add start/stop tones to define boundaries
| Issue | Solution |
|---|---|
| Ambient noise | Use error correction (Reed-Solomon) |
| Devices have different speaker/mic quality | Dynamic calibration via handshake |
| Echo/overlap | Add delay between packets or unique βstart toneβ |
| Sound reflections in room | Use filtering and signal smoothing |
- π· Use QR codes to pair devices before sending (for added security)
- π Chat history encryption + storage
- π Add a local-only offline chat history
- π‘ Add option to "broadcast" message to nearby phones
- π§βπ« Educational Mode: visualize the signal as a waveform
- Type your message
- App encrypts + encodes it to audio
- Plays high-frequency sound
- Opens mic in receive mode
- Listens for handshake tone
- Decodes sound to bits β text
- Decrypts and shows the message
This is perfect for GitHub because:
- It involves signal processing, encryption, low-level audio, and cross-platform logic
- Super unique, not many public repos like this
- You can write detailed documentation with visuals, diagrams, and live demos
This project is licensed under the MIT License.
Develope By - Sk Wasim Akram
-
π¨βπ» All of my projects are available at https://skwasimakram.com
-
π I regularly write articles on https://blog.skwasimakram.com
-
π« How to reach me hello@skwasimakram.com
-
π§βπ» Google Developer Profile https://g.dev/skwasimakram
-
π² LinkedIn https://www.linkedin.com/in/sk-wasim-akram