def downSample(data, sampleRate = 20000, dsType = 'mean'):
""" Function that downsamples data.
:param data: list including syllables with sample data
:param sampleRate: desired samplerate
:param dsType: Type of interpolating used for downsampling.
Can be mean or IIR, which uses an order 8 Chebyshev type 1 filter (default = mean)
:returns syllables: downsampled data, in same format as input data
"""
syllables = []
for syllable in data:
samples = []
for sample in syllable:
SR = int(np.round(sample[1]/float(sampleRate)))
if dsType == 'mean':
pad_size = int(math.ceil(float(sample[0].size)/SR)*SR - sample[0].size)
s_padded = np.append(sample[0], np.zeros(pad_size)*np.NaN)
s_new = sp.nanmean(s_padded.reshape(-1,SR), axis=1)
elif dsType == 'IIR':
s_new = ss.decimate(sample[0],SR)
samples.append([s_new, sampleRate])
syllables.append(samples)
return syllables
#%%
评论列表
文章目录