SoundWire is a nifty little app that lets you listen to sound that normally comes out of your Windows (or Linux) PC on an Android device. The main use of this for me is as “wireless headphones” for listening to YouTube or movies that the PC can play without really purchasing actual wireless headphones. The data is streamed over Wi-Fi, something that has pros and cons. One of the main advantages of using Wi-Fi as transport is a large wireless range.
What you will need to have for this setup is a PC, an Android smartphone, a pair of your favorite wired headphones and free SoundWire software on the PC and smartphone. If your use involves listening to sound and watching the corresponding video on the screen (as opposed to just streaming music), then you will need to make few additional adjustments. The purpose of this is to reduce any delay (lag) between the video and sound, in such a way that they are in sync. First, make sure your Wi-Fi is working well and that you can transfer moderate amounts of data over Wi-Fi without issues. Second, in SoundWire app, click settings, “Audio buffer size” and then change the buffer size to 8k. Working with low latency will also require an Android device that supports low-latency audio (Android 4.2+ versions do that). More on why latency is important later.
The reason I decided to write about this setup is that is has a few advantages over the alternatives. The main alternative to consider in this case is wireless Bluetooth headphones or a Bluetooth adapter for regular headphones (such as Jumbl™ Bluetooth 4.0 adapter, etc). I have decided not to consider any analog solutions that were popular in the past. These are just too sensitive to interference than I would like. Here is a quick comparison between the options:
Factor | SoundWire | Blouetooth headphones |
---|---|---|
Price | 0-3$ | ~35$ for an adapter or ~100$ for wireless headphones |
Prerequisite | Wi-Fi network, Android smartphone, headphones | Bluetooth support or Bluetooth dongle in the PC |
Size | The size of the smartphone | The size of a key-chain |
Battery lifetime | As much as you have on your phone including indication | Considerable, but can run out suddenly |
Reception range | Everywhere you have Wi-Fi in your home | Few meters from your transmitter |
Flexibility | Can choose your own headphones | Can use as headphones for other devices than just your PC |
Given the comparison above, SoundWire is now my preferred method of wirelessly listening to audio. The free version of SoundWire is pretty accommodating. There are ads and from time-to-time a sound notice will be injected into the audio stream. Those who find that unacceptable are more than welcome to shell 3$ for this handy app.
And now some babble on the issue of latency for the technically curious. Transferring data over the local network introduces very little latency and is not the source of a possible delay. Most of the latency is caused by having buffers in the low level and high level systems. SoundWire maintains its own buffer of configurable size. The buffer enables “hiding” any small issues of throughput drop. If there is a momentary network issue at some point, the buffer will have some data to play such that the listener doesn’t notice the issue while the system is waiting for more. Once the network is back to normal, the buffer will be filled again. On the other hand, the buffer introduces latency because data needs to be accumulated first. If you don’t accumulate anything how can you have an “extra” for later, right? For the purpose of streaming audio that needs to be in sync with video which is played without latency, we need to have a pretty short latency, this forces us to use small buffers and accept higher sensitivity to network issues. What is the ideal buffer size we should use?
Based on broadcast television standards, the recommended latency for audio to video synchronization is within +40 ms and −60 ms (audio before/after video, respectively). The audio streams that we work with in this case are uncompressed 44.1 / 48 kHz stereo 16-bit. Most audio compression algorithms will increase latency, so using uncompressed streams is preferred, although it increases throughput. A 48 kHz stereo 16-bit stream has 192KB/sec or 7.68KB per 40ms. Meaning that a 8KB buffer will bring us to a latency that is close to 40ms and is within the accepted audio to video sync. Conveniently, 8KB is also the smallest option available in SoundWire. 😉
Thanks so much I’ve been using soundwire and my samsung s6 to hear the sound while playing World of Warcraft. During pvp its really important that there is little to no delay and this helped a ton. Thanks !
thank you so much for the delay advice helped so much ♥
This doesn’t work for me if I set my buffer to less than 128k it cuts out constantly
Hi David,
This can happen if your WiFi signal is not reliable enough.
Try this when you are closer to the router. Alternatively there could be radio interference in your location, for example from other WiFi routers. Changing the radio channel of the router might help.
Hi, thank you so much for this app! However, would it be possible to allow a buffer smaller than 8k (yeah, I trust my wifi connection :p). It’s OK with movies, but the latency is still too high with video games… Great job though.
Hi Tristan,
I did not make this app, so I can’t say.
I suggest you check at the site of the author at http://georgielabs.net/ .
thanks so much for this app!!! also lowering audio buffer helped me a lot!!
The app is updated now and the audio buffer size is in ms. Not an issue but wondering what would be a proper value for low latency.
The problem that I have is that the sound is very weird when I use AirPods with my phone. With wired earphones the sound is ok, not when I use the AirPods.
Hi Dani,
Regarding the proper low latency value in ms, the answer is in the article above: “the recommended latency for audio to video synchronization is within +40 ms and −60 ms”.
Not sure about AirPods, don’t own a pair. In general, anything wireless will add latency and buffering, so I am not recommending that route for a low latency use. If you want to use a wireless device then just pair it, the AirPods, to the computer in the first place.
Using bluetooth rather than wired headphones also introduces latency, as there is encoding/decoding to get the audio signal through bluetooth. (Also a good reason to not use bluetooth speakers with a TV.)
Hola. Mi problemas es que al iniciar soundwire server en la pc me da un error, es el siguiente
Error, could not initialize audio stream (code 88890003)
Alguna solución? Gracias de antemano