The phone records 10 minute chunks of audio at a time, in airplane mode. Every 10 minutes, airplane mode is turned off and the audio is uploaded to a server. The server then splits the audio into 15 second overlapping chunks, and each is passed to Shazam's API (no official API, but someone reverse engineered it and made a great Python package). This setup is super power efficient! The phone dips down to a minimum 70% percent battery by the early morning.