Ultrasonic communication: use sound to transfer data

Martin Brinkmann
Jan 9, 2014

Whenever you want to chat with someone electronically, you will have to establish a connection somehow. This can be over the Internet, a local area network or mobile connection for example.

There are other means to communicate though, and one of them is by sound. While that is not an entirely new concept, there have not really been that many computer applications that make use of it.

Quietnet is a chat program coded in Python that operates using near ultrasonic frequencies. Ultrasound itself is sound with a frequency greater than 20 kHz which makes it inaudible for humans. The application itself works with ~19 kHz frequencies.

As far as usage goes, all you need to do is run two scripts, send.py and listen.py on your machine. Send is used to send chat messages using the frequency, while listen will display any messages that get picked up in the process.

You can use it for tests to see if it works. If there are multiple chat participants, each needs to run both programs -- assuming that they all want to receive and send.

Before Quietnet can be run, it is necessary to install Python, as well as pyaudio and numpy (Numerical Python), on the operating system.

Once that is out of the way, run the commands python send.py and python listen.py to get started. Whatever you type into the send.py window should appear on the listen.py window as well in the process.

The sending works without any of the usual technologies that you need to have enabled for it to work, such as Bluetooth or WiFi.

If it works depends on a number of factors though, including the quality of speakers and microphone. The author suggests to turn up the volume to improve the efficiency of the transfer, but that is about it.

Note that while you may not be able to hear to the sound, that animals or young humans may be able to.

I could not get the script to run on my Windows 7 machine with Python 3.3 installed.

Another  application is the web audio implementation Sonicnet.js, a JavaScript library that can send and receive data as sounds.

The author explains the concept behind the implementation:

Basically, you can specify a range of frequencies to use, and an alphabet of characters that can be transmitted. The frequency spectrum is split into ranges corresponding to the specified alphabet and start/end codes, with each character/code corresponding to a part of the full frequency range.

The sending side converts each character of the word to be sent into the center of the corresponding frequency range, and transmits that frequency for a certain duration. The receiving side does a continuous fourier transform of the signal and looks for peaks in the specified frequency range. Upon finding a peak for a significant duration, it does the conversion back from frequency to character.

The idea to use sound to transfer data is not new, but new applications may bring the technology to a larger audience.


Tutorials & Tips

Previous Post: «
Next Post: «


  1. Doyle said on April 22, 2014 at 5:19 pm

    i have the same idea too,what make me think about “data to sound” is ,sometime people wanna send something(normally a photo)to someone,however he is on the street ,No wifi , No 3G/4G…….. if we can transfer data though Phone-call,i think that can be done if the transfer speed is fast enough.

  2. Don said on January 13, 2014 at 10:31 pm

    Speakers and microphones are really made for human-audible sounds. So this ultrasonic app is really just a fun toy.

  3. geeknik said on January 9, 2014 at 6:56 pm

    As a ham radio operator, I’ve used PSK31 to communicate with other radio stations around the world. But I also know how slow it is, so using it to transfer large files will take forever. The 31 is the # of characters per second. And looking at the source code, your files will have to be ascii encoded, it won’t understand binary files unless they update the code. ;)

  4. Andrew said on January 9, 2014 at 5:41 pm

    I hope one day we can put two phones together and transfer files between them, while making that old school dial-up modem sound… Nostalgic for us folks, annoy those around us :)

    1. ilev said on January 9, 2014 at 6:47 pm

      You can easily do this today.

  5. ilev said on January 9, 2014 at 10:16 am

    “..use sound to transfer data” and viruses too, on Windows PCs.


    1. Martin Brinkmann said on January 9, 2014 at 10:37 am

      Viruses cannot be transferred, but they can communicate, unless I misread.

      1. ilev said on January 9, 2014 at 10:58 am

        Viruses can transmit themselves.

        A new type of malware that is using sound to transmit itself…

        The malware doesn’t communicate with other malware but with the OS.

        ..“Covert channels can be used to circumvent system and network policies by establishing communications that have not been considered in the design of the computing system. We construct a covert channel between different computing systems that utilizes audio modulation/demodulation to exchange data between the computing systems over the air medium,”…

        And there is another malware that jumps too..

        Meet “badBIOS,” the mysterious Mac and PC malware that jumps airgaps


Leave a Reply

Check the box to consent to your data being stored in line with the guidelines set out in our privacy policy

We love comments and welcome thoughtful and civilized discussion. Rudeness and personal attacks will not be tolerated. Please stay on-topic.
Please note that your comment may not appear immediately after you post it.