Paul Clark* //
Feeling uncomfortably productive today? I’ve got a remedy for that, involving internet memes and signal processing. Come and waste a few minutes of your day with Laurel, Yanny and GNURadio.
It’s been going on for a couple of days, so you’re probably already wearying of the interpretive controversy centered around the audio clip. In short, some people listen to it and clearly hear the word “Laurel,” while others clearly hear the word “Yanni.” Although the academic braintrust hasn’t yet converged on a consensus explanation, there does appear to be some connection to the lower and higher frequency components of the audio. This immediately got me thinking about how to use GNURadio to process the sound to produce both interpretations for the listener.
At this point, you’re probably thinking two things: “This guy must have something better to do,” and “You can’t use radio software to process audio!” While I’ll concede the first point, you can actually use GNURadio to do stuff like this. Although GNURadio is designed for processing radio signals, it actually possesses a host of general-purpose signal processing capabilities, many of which can be applied to any digitized signal you want – including an audio signal of dubious value.
I built the following flow-graph to produce three different variations of the clip: the original, a Laurelized version and a Yannified one:
The Audio Sink (which is essentially your sound card) plays the audio stream picked by the Selector-block, which you control via the QT GUI Chooser. If you select the “Original” option you’ll simply hear an unmodified version of the original WAV file (this sounds very clearly like “Laurel” to me, but if you’re one of those crazy Yanny people… more power to you).
If you choose the “Laurel” button, you’ll get an audio stream passed through a Low Pass Filter that removes frequencies higher than 4.5 kHz.
Finally, choosing the “Yanny” button results in a high pass filtered version that has any frequencies lower than 2 kHz removed. This version of the audio is also slowed down slightly by the Rational Resampler block, but this was just to clarify the sound a bit.
If you want to try this out for yourself, you can clone my project at:
You’ll need GNURadio on your machine, but you can take care of that on an Ubuntu install by typing:
sudo apt-get install gnuradio
(this won’t give you the latest version of GNURadio, but it’s recent enough for this)
You can then change into the laurel-yanny directory and type:
Clicking the small play button in the toolbar will run the flowgraph:
I found that when I selected the “Yanny” button and moved the high pass filter cutoff to the left, the “Laurel” sound became more clear.
Moving it to the right strengthened my ability to hear the “Yanny” sound. At the midpoint, my brain’s audio interpretation actually started going back and forth between the two. I was even able to think one of the words and induce my brain to perceive it. It’s wacky stuff, people.
*Paul Clark owns Factoria Labs, an organization dedicated to the propagation of software defined radio. The more paranoid among you might suspect that this post was all just a ploy to get you to start using GNURadio to see how awesome it is. While Paul can neither confirm nor deny that, he can tell you that he’s teaching some classes on GNURadio and SDR at Black Hat in Vegas this year. Sign up for his Introductory or Intermediate classes by 25-May for early-bird pricing!