Ejemplo n.º 1
0
    def relocate_audio_to_single_container(self, target_path):
        """
        Copies every track to a single container.
        Afterwards all tracks in the container are linked against
        this single container.
        """

        cont = containers.AudioContainer(target_path)
        cont.open()

        new_tracks = {}

        # First create a new container track for all existing tracks
        for track in self.tracks.values():
            sr = track.sampling_rate
            samples = track.read_samples()

            cont.set(track.idx, samples, sr)
            new_track = tracks.ContainerTrack(track.idx, cont)

            new_tracks[track.idx] = new_track

        # Update track list of corpus
        self._tracks = new_tracks

        # Update utterances to point to new tracks
        for utterance in self.utterances.values():
            new_track = self.tracks[utterance.track.idx]
            utterance.track = new_track

        cont.close()
Ejemplo n.º 2
0
    def test_read_samples_with_duration(self, sample_container):
        sample_track = tracks.ContainerTrack('track1', sample_container)
        samples = sample_track.read_samples(duration=5 / 16000)

        assert samples.dtype == np.float32
        assert np.allclose(samples,
                           np.array([0.1, 0.2, 0.3, 0.4, 0.5]),
                           atol=1.e-4)
Ejemplo n.º 3
0
    def test_read_samples_with_offset(self, sample_container):
        sample_track = tracks.ContainerTrack('track1', sample_container)
        samples = sample_track.read_samples(offset=5 / 16000)

        assert samples.dtype == np.float32
        assert np.allclose(samples,
                           np.array([0.6, 0.7, 0.8, 0.9, 1.0]),
                           atol=1.e-4)
Ejemplo n.º 4
0
    def test_read_samples(self, sample_container):
        sample_track = tracks.ContainerTrack('track1', sample_container)
        samples = sample_track.read_samples()

        assert samples.dtype == np.float32
        assert np.allclose(
            samples,
            np.array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]),
            atol=1.e-4)
Ejemplo n.º 5
0
    def test_read_frames_matches_length(self, tmpdir):
        cont_path = os.path.join(tmpdir.strpath, 'audio.hdf5')
        cont = containers.AudioContainer(cont_path)
        cont.open()

        content = np.random.random(7)
        cont.set('track', content, 16000)
        track = tracks.ContainerTrack('some_idx', cont, 'track')

        data = list(track.read_frames(frame_size=2, hop_size=1))
        frames = np.array([x[0] for x in data])
        last = [x[1] for x in data]

        assert frames.shape == (6, 2)
        assert frames.dtype == np.float32

        assert last[:-1] == [False] * (len(data) - 1)
        assert last[-1]

        cont.close()
Ejemplo n.º 6
0
    def read_tracks_from_audio_containers(audio_path, corpus):
        if os.path.isfile(audio_path):
            base_path = os.path.dirname(audio_path)
            audio_tracks = textfile.read_separated_lines(audio_path,
                                                         separator=' ',
                                                         max_columns=3)

            audio_containers = {}

            for entry in audio_tracks:
                track_idx = entry[0]
                container_path = entry[1]
                key = entry[2]

                if container_path in audio_containers.keys():
                    container = audio_containers[key]
                else:
                    abs_path = os.path.abspath(os.path.join(base_path, container_path))
                    container = containers.AudioContainer(abs_path)

                track = tracks.ContainerTrack(track_idx, container, key)
                corpus.import_tracks(track)
Ejemplo n.º 7
0
    def test_read_frames(self, tmpdir):
        cont_path = os.path.join(tmpdir.strpath, 'audio.hdf5')
        cont = containers.AudioContainer(cont_path)
        cont.open()

        content = np.random.random(10044)
        cont.set('track', content, 16000)
        track = tracks.ContainerTrack('some_idx', cont, 'track')

        data = list(track.read_frames(frame_size=400, hop_size=160))
        frames = np.array([x[0] for x in data])
        last = [x[1] for x in data]

        assert frames.shape == (62, 400)
        assert frames.dtype == np.float32
        assert np.allclose(frames[0], content[:400], atol=0.0001)
        expect = np.pad(content[9760:], (0, 116), mode='constant')
        assert np.allclose(frames[61], expect, atol=0.0001)

        assert last[:-1] == [False] * (len(data) - 1)
        assert last[-1]

        cont.close()
Ejemplo n.º 8
0
    def test_read_samples_with_resampling(self, sample_container):
        sample_track = tracks.ContainerTrack('track1', sample_container)
        samples = sample_track.read_samples(sr=8000)

        assert samples.dtype == np.float32
        assert samples.shape[0] == 5
Ejemplo n.º 9
0
 def test_duration(self, sample_container):
     sample_track = tracks.ContainerTrack('track1', sample_container)
     assert sample_track.duration == pytest.approx(10 / 16000)
Ejemplo n.º 10
0
 def test_num_samples(self, sample_container):
     sample_track = tracks.ContainerTrack('track1', sample_container)
     assert sample_track.num_samples == 10
Ejemplo n.º 11
0
 def test_sampling_rate(self, sample_container):
     sample_track = tracks.ContainerTrack('track1', sample_container)
     assert sample_track.sampling_rate == 16000