1. A method comprising, by one or more computer systems: capturing audio data from a sensor of a client device; performing waveform analysis on the audio data; generating a fingerprint for the audio data; sending the fingerprint and a self-determined location of the client device to a server; receiving, from the server, location information associated with the location of the client device, wherein the location information is determined by: comparing the fingerprint to a database of stored audio waveform fingerprints comprising uploaded audio waveform fingerprints from one or more client devices; finding one or more matching audio waveform fingerprints from a comparison set of audio waveform fingerprints obtained from the database, the comparison set determined based at least in part on the self-determined location of the client device; and determining, based at least in part on the matching audio waveform fingerprints, the location information associated with the location of the client device; and updating the self-determined location of the client device based at least in part on the received location information.