One of the cooler/weirder features Google is introducing with the Pixel 2 and Pixel 2 smartphones is called Now Playing. At first glance, it seems like something phones have been able to do for years: recognize music that’s playing nearby and tell you the name of the artist and song.
But unlike other song ID apps, Now Playing doesn’t require an internet connection to do its magic, and it doesn’t send any information to Google over the internet. So nobody has to know that you didn’t recognize that track, whether it was from Bob Dylan or Chance the Rapper.
In order to work offline though, the Pixel phones keep a database of song patterns on your device… which means that the feature’s a bit more limited than those that use a cloud server. Now the folks at xda-developers have dug into that database to find the first 17,000 or so songs that Now Playing can identify.
Xda contributor Kieron Quinn has posted the full list (so far) online, so you can peruse it to figure out which songs Google thinks you’re most likely to want to see identified.
Google says it’ll update the database on a weekly basis. So the list will change over time, although I suspect that means some songs that people don’t listen to that often will get dropped as more common songs get added. Maintaining a complete database of all music ever recorded would probably take up more than the 64GB or 128GB of storage space available on Google’s new phones.
The company says Now Playing can recognize 10,000+ songs, but according to xda-developers, it looks like the database contains at least 17,300 so far… so the emphasis is on the plus.
In what sense is the “Google Pixel 2” doing this?
An app is searching a local database. At least some people will use this database frequently
enough to warrant downloading it to each phone rather than just keeping it in the datacenter.
Personally, I would only use this a few times a year, so keeping the database on the phone
would be monumentally wasteful.
But even if this app would be useful to me, why is it not just an Android App? If it truly needs
processing power found *only* on the Google Pixel 2 then I’d say it’s probably using too much
power to even run.
While the Pixel is indeed in the top tier of phone processing power, it is not miles ahead of
the competition. Artificially limiting the app to specific hardware is just a PR stunt.
I would much rather use an internet connection and (1) not maintain a database on my phone and (2) not use cpu power to compare my sample with the database. Not hating, just thinking that most phone users would rather use the small app that just uploads the sample to a server.
The same is true for language translation and maps… at least for me.
The power used on a cellular connection would be greater than then cpu use from checking a db.
Let’s see, 40Mbs upload speed of a 3MB audio sample is less than 1 second. To be processed locally, about 50,000 MACs to apply various filters to get the sample ready to compare. Another 17,000 * 1000 MACs to compare against the database. That’s about 17 million MACs. Maybe a couple of seconds on the Qualcomm DSP.
Those are the numbers I used for my power estimate. Can you tell me your numbers?
Where are you that 40mbit is baseline? Try 5 or 10. All of a sudden your, idk, 1W radio is active for 5-6 seconds.
Also I’m fairly sure with some smarts you could cut down the search time. Like working out the beats per minute would only require you to find the peaks in the lower ranges but by doing that you now only have to look at songs with a BPM of say 80-90. That’ll at least halve the comparisons.
I agree with Max here.
Although, I would prefer to simply Google for the song. Not because it uses less energy, but moreso that I can have slightly more storage… but a much much cleaner Operating System.
Who knows, even something as trivial as a database could be a venue for bugs and instabilities. Welcome to 21st century programming : )
I cleared my data meter on my phone and used the google music detection app. Detected the song with 0.41MB of data used (that was the total for the google app). Using your smallest number of 5mbit.. that’s 0.41*8/5 = 0.656 seconds for the 1W radio. Real world numbers.
Here is an article on open source audio fingerprinting, and it has nothing to do with BPM
https://www.codeproject.com/Articles/206507/Duplicates-detector-via-audio-fingerprinting