Designing an audio adblocker
adblockradio.com
adblockradio.com
https://en.wikipedia.org/wiki/Subaudible_tone
One could use these tones to 'detect' a commercial and avoid it, or strip out these tones entirely to promote operational security amongst devices.
Or one could layer superfluous erroneous tones into every stream to poison the dataset.
I do not rely on metadata, nor do I use the usual time schedules for ad breaks.
I like this two-horned decision dropped in the broadcaster's lap.
Make a crowdsourced list of 'uuids' or whatever these tones are decoded as, and then just inject a constant stream of random ones into any audio signal. With 1% participation, could probably make advertiser dataset worthless.
This might be a criterion among others, as there will always be ads that do not have subaudible tones.
"Then don't listen to it". Alternatively, I'll do what I do now, which is listen to it but skip the ads and wait for software that can automatically skip them to come around, which is the same thing I did for websites.
"That's selfish" Yes, just like the millions of people who use adblock software on their browser. Of course adblock software came after web browsers built in popup blockers in response to the X-10 Spycam being 50% of web advertising circa 2001-2003, so really you could argue the web browsers are selfish and we're all selfish if we don't turn off the popup blockers. Really, even if a website says "By using this website, we're going to install malware on your computer", you're selfish if you reject the malware. If selfish means that I make decisions that make things better for me at the expense of others, then yes, I am selfish when it comes to ads. I view ads as toxic and bad for my health, and I take measures to avoid them.
"But it'll lead to the collapse of podcast publishing". Maybe. Of course publishers repeatedly said adblocking would lead to the collapse of the web, and as best as I can tell mostly idiots doing a pivot to Facebook Video caused what collapse did occur (because, as selfish actors, they pursued a greater revenue stream at the expense of quality and integrity -- oops, turns out there's no money there because the numbers are all fake.), Adblocking also ushered in sustainable models for journalism, blogging, etc. Certainly all the websites I read have found alternate revenue models just fine. Maybe that's because the ones that didn't went under, but I apparently didn't notice.
If podcasting collapses and goes back to the dark ages of being a non-commercial hobby medium like it was three years ago, like, okay?
"Stop comparing podcasts to websites, podcast ads aren't as bad" Maybe, but you don't get to decide for me my threshold for ignoring or blocking ads. Ads weren't as bad when I started using AdBlock Plus in 2004, but they were bad enough for me to decide to use it. Others may have had their breaking point later because they are less sensitive to ads. Some people might still browse the web with ads on and claim they don't care. You do you.
The strange thing to me is people expressing that they'd rather block ads, but they're too noble to do so, so they get mad at others for blocking ads? Uh, okay?
I don't see this as selfish, not when it comes online ads. I think this "moral" argument is pushed by people who generally benefit from ads and have less incentive to considers ethical issues raised by ad tech. From their perspective, advertising is free money. Publishing has a cost and people's work and effort should be compensated, all right. But you are not ripping someone off just because they picked the wrong revenue model. You are just protecting yourself by preventing your data being used by thirds parties without your consent. And you should.
And besides, there are ethical ads options. Given the choice, I would support publishers using these ads, in absence of a better solution.
Then, ads started actively degrading my browsing experience. Some ads would make a web page load slowly, or not load at all. Other ads would cover up the page that I was reading.
I can assume that the same can be said for some web radio ads?
You can't have it both ways, either the content is free and I can consume it on my terms, or inform me of what's expected for this exchange and I'll make a decision about whether I want to pay the cost or not.
Does it need to be stated? When I leave my bike outside where is it stated that it's mine and you are not allowed to take a ride? Where is it stated that you shouldn't have loud conversations in the theater?
You know full well that ads pay for the content but choose to play the ignorant. You're doing this simply because you can and there are no consequences and, as of now, those that do watch the ads are financing the service you consume.
Absolutely. The online advertising industry blew their goodwill with gross carelessness years ago, and have only continued to make things worse as revenues fall. Fuck 'em all. Aside from a handful of sites I can count on one hand, I'll never browse without an adblocker again. If innovations like this audio blocker catch on and start to kill podcasts too, well...sorry. Unfortunate collateral damage I guess.
The strange thing to me is people expressing that they'd rather block ads, but they're too noble to do so, so they get mad at others for blocking ads? Uh, okay?
I think most of the people doing this are playing the troll contrarian card and fishing for responses.
If advertisers had gotten together and said, "people have limited tolerance for ads, so we need to work out a scheme to put limits on how much we throw at them," there never would have been any demand for adblockers.
> Adblocking also ushered in sustainable models for journalism, blogging, etc.
The new model of direct patronage is much better than advertiser funded content. They actually listen to their supporters, what a concept!
> Maybe that's because the ones that didn't went under, but I apparently didn't notice.
That's a major function of a market, forcing non-performing market entrants to shift their resources towards a function they're better suited to. It's not pretty, because it means going out of business, but it's necessary.
There's money and there's money.
If one cool website gets money thanks to painful invasive advertising, I call that bad money. I'm paying them using bad money. They've chosen that I deserve that mean to pay them. Not very respectful, but I'm ok with it since I read it.
If on the other they ask me a few bucks to access them, that's good money. They basically do me a favor. The favor to have a choice : is that site so good I'm willing to pay ? 30 years ago, I was spending say 6-7 euros a month to buy magazines, so it was possible to make content interesting enough for me to pay. And it wasn't dark ages, I had some very interesting information (Dr. Dobb's, Edge, Byte...)
Imagine, when buying your groceries, you had to pay half cash, half by prostituting yourself. Nobody would want that.
Though, prostitution is a valid funding model, as sex workers earn a living with it.
To extend the metaphor, I see advertising as some kind of prostitution for my brain. I do not want that for my brain.
That's fine, but then your response should be to not visit the website at all. Not to take take what you want as you see fit.
what if something of value was lost?
Personally I don't mind listening to a few ads on a podcast because I assume it is helping the creator cover their living expenses so that they may continue creating content that I enjoy. And spoken ads (hopefully) are not tracking me, although I suppose there are ways to overlay inaudible tones that other devices can pick up, etc.
I'm happy to pay for things if its low friction and reasonably priced, but will never accept being advertised to (in any form really, but especially audio and video ads).
An audio adblocker seems like a great thing, and I'm excited about this. If enough of us use it, hopefully we can force creators to abandon ads and find a model where they work for us, not the ad companies.
I wish there was a way to block billboards too. Back when google was making google glass, I thought it'd be possible to block out billboard advertisements someday.. to bad that didn't work. Or, just move to a state that bans them, I guess.
Why not just stop listening to what they’re creating?
But, I don't have issues with podcasts where they work directly with a company to pitch a product. It's old school and it isn't as impersonal and cash-grabby as a junky website with an Adsense account.
I can imagine a tool like this becoming necessary when Amazon/Google start piping in ads through their home speaker products.
We just can't have nice things, I guess.
I don't mind paying content creators directly. I do mind allowing them to commodify parts of my mind.
People could produce ad-free versions of their podcast for Patrons.
Apple or other podcast vendors would also be in a good position to provide an open standard for subscription podcasts without ads.
The Economist also does this - if you have a digital subscription you get a private/unique URL with an RSS feed serving the complete audio edition. If you cancel the subscription the feed stops working.
people willing to pay for content worth paying for
> There are ways to overlay inaudible tones
Are you referencing prior work or was that hypothetical? There is actual prior work on this. They were able to engineer a POC that could trigger "Hey Siri" and "OK Google" inaudibly by broadcasting it with ultrasound on a harmonic of the correct frequency, but at a pitch inaudible to humans [1]
Something that does not generate revenue (easily) is often referred to as a hobby, r&d, or fun.
I'm much more interested in the podcast that is made for fun, than one made for profit.
If you end up producing value to others with your hobby, and you decide to ask for value in return, by all means, do so, and provide a non-de-platformable method of compensation.
While I understand that there is value in physically locating you as you play it, but the fact that the spoken ad got onto your podcast means that you are in some way located, right? I've gotten area (ie. ISP that don't exist anywhere else) specific messages in my podcasts.
I guess they don't get as much usage data as lot of other apps, unless the playback app shares it.
I can't help but think that advertisements are somehow toxic to the mind.
The ideal format, arguably popularized by Chapo Trap House, is that you have a weekly free show and then at least one weekly bonus episode.
I pay for stitcher premium and export the feed to an app that's actually useable.
I recently paid to support Thrilling Adventure Hour on patreon and find it pretty crappy they still have adverts on the paid feed.
Is there any way to discover ad-free podcasts, paid or not?
I've essentially abandoned podcasts because of my annoyance with ads, and have instead been paying for audiobooks.
I think the MP3 gets generated based on location.
In podcasts, the ad injection software will often pause the audio at the point where the ad tone occurred while it plays the ad, and resume it afterwards for continuity.
AdSwizz's AIS suite is one example of the tools commonly used for this: https://www.adswizz.com/ad-insertion-suite/
(I work in the internet radio space, lots of old-school internet radio streams are similar).
I heard about this tech on a podcast actually.
Ad injection would apply if you were using your favorite podcast network's app, webplayer, etc.
Ads in a plain MP3 are "baked in"
I remember my dad pointing this out many years ago on ITV in the UK.
It seems like the ads are added to the audio file at the start and the end of the podcast.
(I use Player FM)
However, that could offer another avenue for ad-blocking. If you download multiple podcasts from different IPs, you can isolate the ads by finding the parts of the audio that are different.
Nothing pisses me off quite like the time waste that is podcast advertising. I skip them, but I was dreaming of a system like this...
Why would you be more willing to pay to an app developer who will shut down the revenue stream for the content creator, than to listen to the ads and therefore fund the content creator?
I've never bought anything from an ad, never intentionally clicked one or visited a link from a podcast ad. There's truly no difference for me. Their revenue stream will remain intact, the kind of people who do that will keep doing that.
There's no way to spin this around: this reduces revenue for the creator of the free content you're consuming (and for all other creators).
Everyone loses, except for the app maker, that makes money (if they are selling the app) by sucking it out of the content creators.
But if you do happen to be right and the model falls apart, that's even better. I'll gladly chip a bit of money to creators who are worth it, but right now there's no easy and affordable way to do that. I actively want to see advertising based business models fail so we can see those systems evolve. I hate ads.
The advertising industry has repeatedly shown itself to be sleazy and underhanded and willing to throw everybody under the bus to make money for themselves. Spam, malware, pop-up ads, tracking cookies, extra loud volume commercials, etc. They can't go out of business fast enough, IMO.
You probably wouldn't defend a pay-day loan business, so why defend advertisers?
A lot of media is designed to be addictive, hooking the consumer in order to create a captive audience for ad delivery. I'm no longer sure the ads themselves, or even the tracking they often entail, are the worst thing about the whole system. That's why I'm not too bothered about giving people the tools to not see or hear ads if they so choose.
They are not, advertisement never creates value for the society, it's a 0-sum game. They never add value they only shift the stream of money from a producer which makes a good product which would sell without ads to a producer which has money to invest in ads to trick people to buy the worse product.
You're plainly, absolutely, completely, wrong. But, as you made the claim, I'll wait for your burden of proof.
> They never add value they only shift the stream of money from a producer which makes a good product which would sell without ads to a producer which has money to invest in ads to trick people to buy the worse product.
You just stated a very narrow case, as if it represented the whole.
Your argument is essentially "if you're selling well without ads, then ads will not add value", which is self-evident, but irrelevant.
Putting up a sign in front of your shop saying "New Mousetrap - Improved Design" is advertising.
If you make a better mousetrap and nobody knows about it, your mousetrap is irrelevant.
Sure, not all advertising generates benefits to society, just as not all products do.
What advertising does is a push mechanism, where they try to flood my brain with nonsense so that I get confused and don't buy the best product for me, but instead buy something the advertiser sells.
Product and price discovery can be done by me doing research, so saying that it's advertising enabling that is just dishonest.
Advertising is communication, you might not like it, but it is communication. It is product and price discovery.
This is a good thing.
>and reducing the revenue for content producers.
They'll just have to be creative in finding ways to monetize.
That would only be true if everybody hearing the ad responded to it. Obviously that doesn't happen, and there's an implicit assumption in advertising models that only some percentage of the listeners/viewers will respond to the ads. People blocking the ads are unlikely to respond anyway, so whether they block the ads or not doesn't make much difference in the long run.
Do you mean any ad ever, or just a podcast ad? If it's the former that is a pretty bold claim.
I'd love to see adblockers so successful that that "revenue stream" becomes completely worthless and nobody considers advertising again.
Thanks for your message.
Please submit your podcasts on https://github.com/adblockradio/available-models
Among other questions, there is an issue with the copyrighted dataset that needs discussion.
More podcasters really do need to get on the premium ad-free model though. I pay money to make ads go away on a few platforms (YouTube, Spotify etc) and would gladly put my money where my mouth is and do the same for podcasts. Websites, too, if anyone can come up with a decent way to make it work - AND STOP TRACKING ME!
You don't feel the same way about a website? What is different about podcasts? Genuinely curious, because I have a similar initial reaction but am not exactly sure why.
It also strongly indicates that the podcast author has vetted the ads, and is at least implicitly approving of the product; on the web, it's very likely that the author has absolutely no idea what ads are being shown to their visitors.
(I should find that thing. It's in my garage somewhere.)
If there was an outlet where I can just pay for ad free podcast I would be happy to do it. It also would pay far more than what ads pay. I still remember the release of YouTube Red was how this was hurting creators but it was a cynical argument that paying actual money would pay less than a paying customer.
Punishing advertising dollars is the only way to reduce marketshare of the industry in the long term.
It's in French, but there are subtitles. https://youtu.be/AqCB6tGR3hs?t=658
You could set that up on a raspberry Pi, to play IPTV.
A pure HDMI pass-through may be expensive because of the HDMI acquisition-side.
Adblock Radio as a proxy is totally feasible (Pi-Hole like https://pi-hole.net/). I am currently working on this.
I've been musing about a system/software that could listen on my PC's audio and control/adjust/mute the volume when it detects ads.
Such a system could also work for video content played on a PC!
This system could also be implemented on a dongle-like Raspberry Pi that would take the PC's audio output (3.5mm jack in/out), process the audio, and play back the "clean" audio to it's jack output: that could be seen as an audio firewall.
I think that working with analog audio (instead of official radio's streams) is the way to go to avoid legal issues: they cannot plug the "analog hole"!
I’d much more prefer to pay the podcaster directly than to listen to ads. But this doesn’t seem to be an option.
I am currently working on Sonos / Google Home / Amazon Alexa
Interesting, are you planning to mute Sonos/Home/Alexa by analyzing it's audio output stream? If so: do you plan to use the devices audio controls?
Are you planning on using the Sonos/Home/Alexa microphone for detection of other sources?
>...Unfortunately all product paths I can foresee will surely lead to targeted replacement ads, played at higher volume
Any thoughts on other ways to monetize? ;-)
Now I feel sad.
About the machine learning model; forgive me if any of these questions were covered in the article:
1) Why classify as three categories (music, talk, ads) versus just two (ads, content)? Seems like that might help simplify things, since I assume all we care about is whether something is an ad or not.
2) So based on the description you're feeding 4 seconds worth of buffer into the model for classification, every second; the model being a stateless RNN. I'm curious, did you try just using a (1D) CNN instead? That would allow you to use a more robust architecture, versus RNNs which tend to be finicky. (And RNN doesn't seem to provide benefit, since you aren't using its state, other than potentially being a smaller model).
3) AFAIK there are loss functions which penalize false positives (in this case, penalizing incorrectly tagging content as ads). Was this experimented with?
4) This one is more of a curious idea: 4 seconds worth of buffer might lack enough context, which we can see play out in some of the failings alluded to in "Future improvements". So I'm curious...
Suppose, if your architecture isn't set up this way already, that you've got a layer before your final layer that's just a little bit bigger than the number of categories. Say, 32 features. (A lot of RNN architectures are built with an output matrix that's HiddenState => Outputs (n=3). So I'm suggesting HiddenState => Embedding [n=32] => Outputs [n=3]).
Train that architecture like before. Now, take that trained model and chop off the output layer so that its output is those 32 element vectors. We can now build a secondary, context model on top of it. It takes as input those 32 element vectors (one vector per second) and outputs the same classifications (ad/not-ad). But since its input is much smaller, you can train an RNN with a much, much deeper BPTT.
Hopefully this model can not only be more intelligent by using context, but also take the place of your hysteresis.
Since the underlying model is fixed, you can pre-compute its outputs on your dataset, so there's absolutely no cost while training the higher order model (and the pre-computed dataset will be really tiny; 32 elements every second would be only 100mb for your 10 day corpus.)
Now, this is somewhat dependent on your corpus being of the nature "here's a long section of audio where the ad is tagged precisely". i.e. it can just be a mixed bag of "this whole audio segment is ad/not-ad". If you don't have that kind of data you'd need to create it (assuming my crazy idea is worth the effort). Hopefully you wouldn't need much. This higher order model shouldn't need to be very complex, which means it doesn't need a big corpus.
Or you could try to use a CTC loss function, in which case you just need a dataset that's large chunks of audio and vague labels like "this length of audio has 1 ad somewhere in it."
By the way, this isn't intended as advice; I'm by no means a domain expert here. I'm really just thinking out loud. And since none of the other comments at the time of this writing are discussing anything other than the morality of this software, I thought I'd take the time to inject some more technical discussion.
> hip-hop music, easily mispredicted as advertisements
Well given the endemic use of name dropping and product placement in popular hip-hop, I'm not sure that's a misprediction ... :P
Joking aside, one thing that might be useful is to find a stream with positively no ads (e.g. Spotify Premium, Apple Music, etc). Play that through a trained classifier. If the classifier ever detects an ad, add that audio sample to your corpus.
1) Audio streams are naturally segmented between those three states. Separating talk from music is rather easy. The most challenging part is to separate talk from ads (spoken ads) and music from ads (musical ads). Filtering ads and talk gives you a music-only experience, which is good when you want to work for example.
2) 3) I am not an expert on RNNs. My understanding is that the LSTM keeps the state between each prediction. I will hopefully get back to you with more precise answers.
4) Your idea about the embedded layer N=32 looks very smart. The dataset is, strictly speaking, a mixed bags of 10-second 100% ads, 100% speech and 100% music (with some slight tolerance at the edges of the track). But when labeling data, I have often tried to label contiguous segments of a minute to several minutes. Though, to not spoil the dataset, I often get a discontinuity on transitions (e.g. music -> ads). So in conclusion I would need to create the dataset you describe. Not a big deal I guess.
X) Streams without ads are quite common. E.g. http://www.radiomeuh.com/ or https://www.fip.fr/ The thing is that you get a very big corpus of whitelisted data. Too big actually. The solution I have used for a while is to monitor the radio metadata (using https://github.com/adblockradio/webradio-metadata) and downloading musics with youtube-dl. It worked quite well to bootstrap ;)
Is there any way we could keep in touch apart from Hacker News? Feel free to email me if you feel like it.
those ads will be updated one day.( Company/product shut down...)
On standalone players, it a really great idea and it is already being considered.
If you expect payment for a service, give your "customers" an opportunity to support you directly. It can be a premium account, merchandise, or even a simple donation service. Don't force your "customers" to become the product.
I don't see why podcasts should get a pass.
...but if that option isn't available, that makes stealing ok? "Hmm, I like this podcast but I don't like the ads. There's no premium support option. Therefore... I will consume the content of the podcast without the ads."
I find this line of thinking a bit immoral, to be honest. The moral option is to not listen to the podcast. And before you jump on me asking if its immoral to go to the bathroom during a TV ad break, I'm talking strictly about algorithmic ad-blocking.
It would be like if I had a place setup where you can get a copy of one of my indie video games I've been privately developing after watching an ad. My place has no option to flat out pay for copies of my indie games. But... you really like my indie games so you decide it's okay to just walk in and steal copies of my indie games until I provide you with an option to pay for them.
For example, watching non-premium crunchyroll with an ad-blocker enabled is dishonest, IMO.
If we all start using audio adblockers, advertisers will then develop adblock detectors for podcasts. Then, it is likely we will get completely unskippable ads.
The only moral options are to 1) Power through the ads (or fast forward through them) so that you may listen to the podcast for free 2) Become a premium user to skip the ads (unfortunately this isn't always an option) 3) Don't listen to the podcast
The content creator is not rewarded by your extra effort. A lost view is a lost view.
It's morally grey, in my opinion.
If we can agree that:
1. Using an adblocker on services that offer premium versions (such as Crunchyroll) is dishonest
2. Going to the bathroom/looking away from the TV during an ad playing on Crunchyroll free is not dishonest
Then the morality line is somewhere in between there.
My philosophy is to always support the content creator in some way. To consume content while robbing the creator of their source of income (even if it's pennies) is dishonest, in my opinion. I don't have qualms manually skipping an ad I've already seen 5 times, and can quote buy heart, however.
This is interesting, but isn't be an argument against offering a pay-for option. I expect the paying subscribers are more valuable per user, so any user you convert to paying increases your revenue.
The trouble with the rest of the online ad space is that they destroy performance and are VERY invasive.
Tracking and malware are serious issues as well but they're not the main reason for the vitriolic hate. Even if they didn't track you and were vetted flawlessly for malware, they would STILL be avoided like the plague by any user savvy enough to do it.
I wish websites would stop fucking around and realize that there is a limit to the amount of advertising we will tolerate. I like free stuff and I don't mind ads to fund it. But if the annoyance of the ads exceeds the entertainment from the content, you're shooting yourself in the leg.
On mobile, I use a VPN that blocks ads or malicious websites, and it happens to block the whole episodes from downloading on such podcasts.
I do agree that some ads can be enjoyable (like the sponsored narrations of the authors endorsing a product in a playful manner -- think "No Such Thing as a Fish" or "Comedy Bang Bang").
I try to support artists that accept donations through Patreon (on a per episode or monthly basis), but this quickly gets expensive.
I would like some sort of way of actually prorating a set amount of money between the podcasts I'm listening to (something like Brave browser, but with more accountability).
The other issue is that a handful of the shows I listen to that are patreon supported, are starting to introduce insane amounts of ads. One of the shows I listen to, always opens with 5-7 mins of ad reads, and then continues to have smaller, 3-4 min ad breaks throughout the show. It's frankly too much.
I've done my due diligence and left low reviews on these shows, but that really doesn't matter. I'm all for adblockers due to the seemingly brazen injection of more and more advertising in a space that used to use advertising in moderation.
The problem with "premium" podcasts is that every publisher has their own premium, and some publishers don't seem to have a premium ad-free option at all.
What I'd prefer is an ad-free central podcast service or app that I could subscribe to for ad-free podcasts. I'd be happy to pay for that. Failing that, I'd jump on any podcast player that used this technology to skip ads automatically for me.
The same goes for public media beg-a-thons. We get it, you want people to donate. Don't waste 30 min of our time begging.