def __getitem__(self, t): df = self._map(t).reset_index() s = None for f in df['file_path']: if s is None: s = Signal.from_wav(f) else: s = join(s, Signal.from_wav(f)) # further triming i0 = int((t.start - df['time'].iloc[0]).seconds * s.fs) i1 = i0 + (t.stop - t.start).seconds * s.fs #print(i0,i1,i1-i0,s.shape, s[i0:i1].shape, s.fs) s = s[i0:i1] #s = Signal(s[i0:i1], s.fs) t = df['time'].iloc[0] + pd.Timedelta(i0 / s.fs, unit='seconds') return s, t
class test_wav(): """Test writing to and reading from wav file.""" duration = 5.0 fs = 10025 samples = int(fs * duration) channels = 3 signal = Signal(np.random.randn(channels, samples), fs) with tempfile.TemporaryFile() as file: signal.to_wav(file) signal = Signal.from_wav(file) assert signal.samples == samples assert signal.fs == fs assert signal.channels == channels
def load_signal(filename): path = os.path.join(args.source, filename) signal = Signal.from_wav(path) _, event, _, kind, part = os.path.splitext(filename)[0].split('-') aircraft = event.split('_')[-1] return {'aircraft': aircraft, 'kind': kind, 'part': part, 'signal': signal}