Exemplo n.º 1
0
def test_get():
    signal = Signal(["test", "test2"], [[1, 2], [3, 4]])
    audio = signal.get("test")
    assert audio == [1, 2]

    with pytest.raises(ValueError) as pe:
        audio = signal.get("test3")
Exemplo n.º 2
0
def test_overlay():
    dummy_signal = Signal(["test"], [np.array(range(100), dtype=np.float32)])
    augment = Augment()

    augment.overlay((5, 10), 17, 1)
    augment.augment(dummy_signal, "test")

    audio = dummy_signal.get("test")
    actual = np.array([11, 12, 13, 14, 15], dtype=np.float32)
    assert np.allclose(audio[17: 22], actual)
Exemplo n.º 3
0
def test_set():
    signal = Signal(["test", "test2"], [[1, 2], [3, 4]])
    signal.set("test", [1, 2.5])

    with pytest.raises(ValueError) as pe:
        signal.set("test3", [1, 2.5])

    signal.set("tesT2", [3, 4.5])

    with pytest.raises(ValueError) as pe:
        signal.set("tesT2", [3, 4.5, 4])
Exemplo n.º 4
0
    def separate(self, audio: Union[str, np.ndarray], sample_rate=44_100):
        """Separate audio into specified stems.

            Note: Spleeter uses tensorflow backend. Hence, corresponding
            installed device will automatically be used (CPU/GPU).
            Minimum VRAM/RAM requirement: 4GB (for small audio, <6 minutes).

            Args:
                audio_file (str, array): path to the original signal or the signal itself.
                sample_rate (int): sampling rate of the file.

            Returns:
                signal (Signal): separated signals.

            Raises:
                tf.errors.ResourceExhaustedError: When memory gets exhausted.

        """
        if isinstance(audio, np.ndarray):
            waveform = audio
        else:
            waveform, _ = self._audio_adapter.load(audio,
                                                   sample_rate=sample_rate)

        print(waveform.shape)
        #predict in chunks
        prediction = {}
        for chunk in self._chunk(waveform, sample_rate):
            chunk_prediction = self._separator.separate(chunk)

            for chunk_key, chunk_value in chunk_prediction.items():
                if chunk_key not in prediction:
                    prediction[chunk_key] = []
                prediction.get(chunk_key).append(chunk_value)

        #merge chunk prediction
        prediction = {k: np.vstack(v) for k, v in prediction.items()}
        print(list(v.shape for v in prediction.values()))
        signal = Signal(prediction.keys(), prediction.values())

        return signal
Exemplo n.º 5
0
def test_create():
    signal = Signal(["test"], [[1, 2]])
    assert signal is not None
Exemplo n.º 6
0
def test_len():
    signal = Signal(["test", "test2"], [[1, 2, 3], [4, 5, 6]])
    assert len(signal) == 2
    assert signal.get_signal_length() == 3
Exemplo n.º 7
0
def test_n_stem():
    signal = Signal(["test", "test2"], [[1, 2], [3, 4]])
    stem = signal.stems
    assert stem == 2
Exemplo n.º 8
0
def test_diff_len():
    with pytest.raises(Exception) as pe:
        signal = Signal(["test"], [[1], [2, 3]])
Exemplo n.º 9
0
import pytest
import numpy as np

from separator.main import Signal
from separator.main.augment import Augment

dummy_signal = Signal(["test"], [np.array(range(100), dtype=np.float32)])

def test_command():
    augment = Augment()

    augment.amplitude((3, 10), 0, 1)
    assert len(augment.command) == 1

    augment.augment(dummy_signal, "test")
    assert len(augment.command) == 1

    augment.amplitude((3, 10), 0, 1)
    assert len(augment.command) == 2

    augment.clear()
    assert len(augment.command) == 0

def test_amplitude():
    augment = Augment()
    augment.amplitude((3, 10), 0, 1)
    augment.augment(dummy_signal, "test")

    audio = dummy_signal.get("test")
    assert not any(audio[3: 10])