Skip to main content

Acoustic communication library for audio-based data transfer

Project description

SonicMesh

Acoustic Ultrasonic Data Transfer Library (Research Project)

SonicMesh is a Python library designed for high-frequency ultrasonic communication, enabling data transfer over audio. This project is part of ongoing research into ultrasonic FSK (frequency shift keying) communication and aims to push the limits of audio based data transmission particularly for file transfer tht includes images.

Features

  • Send text and files over sound using ultrasonic frequencies
  • 64-FSK encoder for efficient data transmission
  • FFT-based ultrasonic decoder for accurate reception.
  • WAV utils to save and read transmissions
  • Exoposes high-level APIs for quick experimentation

Goals

  • Enable high speed audio-based transfer of data (images and text for now).
  • Explore novel encoding strategies for ultrasonic communication.
  • provides a flexible library for research and experimentation

Installation

pip install sonicmesh

Quick Example

from sonicmesh import encode_message, transmit, decode_signal


#Encoding a message
signal = encode_message("Hello World!!")

# Transmit over speaker
transmit(signal)

# Decoding received signal (from WAV file for now - microphones later)
decoded = decode_signal("received.wav")
print(decoded)

Research Focus

SonicMesh is serious research project aiming to pushing the limits of acoustic communication where users can:

  • Experiment with ultrasonic-FSK transmissionn
  • Test basic audio-based file transfer, including images (altho its still underdeveloped since the FSK decoding is still not optimized).
  • Contribute to development of high-frequency data transmission techniques

Architecture Overview

SonicMesh internally consists of three major components:

  1. Encoder
  • Convert raw bytes/text into symbols
  • Maps each symbol to one of 64 frequencies (64-FSK)
  • Generates the final audio waveform for transmission
  1. Decoder
  • Performs FFT based frequency detection
  • extracts symbol sequences from the spectrogram
  • converts them back into bytes, text, or file data
  1. Acoustic Configuration Defines:
  • Sample Rate
  • Symbol Duration
  • Frequency Table
  • Bit depth per symbol (64-FSK -> 6 bits/ sybmol)

Roadmap

Planned areas of development:

  • High speed FSK enhancemeents for faster JPEG (and other file) transmission
  • Better noise robustness using windowing and adaptive thresholding
  • Microphone live decoding (real-time RX path)
  • Spectrogram visualization tools for debugging
  • Higher-order modulation (128-FSK or chirp based systems)
  • Erorr correction codes (Hamming, BCH, or even Reed-Solomon)

Current Limitations

To set the correct expectations:

  • File transfer works but is slow at the moment
  • FFT decoding still needs a lot of optimization and noise filtration
  • Microphone live receive is still in experimental / "in-progress" stage.

Contributing

Contributions are welcome especially inL

  • Audio signal processing
  • optimizing fsk encoding/decoding
  • increasing data transfer speed

All contributions should maintain the research oriented and experiment nature of the project.

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sonicmesh-0.1.2.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sonicmesh-0.1.2-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file sonicmesh-0.1.2.tar.gz.

File metadata

  • Download URL: sonicmesh-0.1.2.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for sonicmesh-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c534679c5be92ff1608480bfc0347a422e98f6599336970b3eb87c2f88e9859e
MD5 03cb6f8957c83e49e52954bbd52d4d35
BLAKE2b-256 943a3a438223f68f4d7436be057e7a01b681fdb51cd335dcf65bb5c7462a3659

See more details on using hashes here.

File details

Details for the file sonicmesh-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: sonicmesh-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for sonicmesh-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 88ebdc82251b03f9f2cceeeba06630af3964b87f06b8a2803e907430484a0dc7
MD5 c8f7bd51536fd7649cb835d049977d9f
BLAKE2b-256 7549846420b2198893a1d1af765ff3514b47428fbdbb1a994560e8e25089666a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page