In [14]:
import numpy as np
import scipy.spatial as sp
import wave

In [35]:
def load_wav(filename):
    with wave.open(filename, mode='rb') as w:
        return np.fromstring(w.readframes(w.getnframes()), dtype=np.uint16)

siren_1 = load_wav('data/siren.wav') # http://soundbible.com/1233-Siren.html
siren_2 = load_wav('data/police-siren-2.wav') # http://soundbible.com/580-Police-Siren-2.html
honk_1 = load_wav('data/honk-1.wav') # http://soundbible.com/60-Car-Horn-Honk-1.html

In [50]:
def similarity(u, v):
    min_size = min(u.size, v.size)
    _u = np.resize(u, min_size)
    _v = np.resize(v, min_size)
    return sp.distance.cosine(_u, _v)

In [53]:
print(similarity(siren_1, siren_2))
print(similarity(siren_1, honk_1))
print(similarity(siren_2, honk_1))


-3.7195930481
-3.73122310638
0.484257698059