Spaces:
Runtime error
Runtime error
| import pytest | |
| from scraibe.audio import AudioProcessor | |
| import torch | |
| DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| TEST_WAVEFORM = torch.sin(torch.randn(160000)).to(DEVICE) | |
| TEST_SR = 16000 | |
| SAMPLE_RATE = 16000 | |
| NORMALIZATION_FACTOR = 32768 | |
| def probe_audio_processor(): | |
| """Fixture for creating an instance of the AudioProcessor class with test waveform and sample rate. | |
| This fixture is used to create an instance of the AudioProcessor class with a predfined test waveform and sample rate (TEST_SR). It returns the instantiated AudioProcessor , which can bes used as a | |
| dependency in other test functions. | |
| Returns: | |
| AudioProcessor (obj): An instance of the AudioProcessor class with the test waveform and sample rate. | |
| """ | |
| return AudioProcessor(TEST_WAVEFORM, TEST_SR) | |
| def test_AudioProcessor_init(probe_audio_processor): | |
| """ | |
| Test the initialization of the AudioProcessor class. | |
| This test verifies that the AUdioProcessor class is correctly initialized with the provided waveform and sample rate. It checks whether the instantiated AhdioProcessor object has the correct attributes | |
| and whether the waveform and sample rate match the expected values. | |
| Args: | |
| probe_audio_processor (obj): An instance of the AudioProcessor class to be tested. | |
| Returns: | |
| None | |
| """ | |
| assert isinstance(probe_audio_processor, AudioProcessor) | |
| assert probe_audio_processor.waveform.device == TEST_WAVEFORM.device | |
| assert torch.equal(probe_audio_processor.waveform, TEST_WAVEFORM) | |
| assert probe_audio_processor.sr == TEST_SR | |
| def test_cut(probe_audio_processor): | |
| """Test the cut function of the AudioProcessor class. | |
| This test verifies that the cut function correctly extracts a segment of audio data from | |
| the waveform, given start and end indices. It checks whether the size of the extracted segment matches | |
| the expected size based on the provided start and end indices and the sample rate. | |
| Returns: | |
| None | |
| """ | |
| start = 4 | |
| end = 7 | |
| trimmed_waveform = probe_audio_processor.cut(start, end) | |
| expected_size = int((end - start) * TEST_SR) | |
| real_size = trimmed_waveform.size(0) | |
| assert real_size == expected_size | |
| # assert AudioProcessor(TEST_WAVEFORM, TEST_SR).cut(start, end).size() == int((end - start) * TEST_SR) | |
| def test_audio_processor_invalid_sr(): | |
| """Test the behavior of AudioProcessor when an invalid smaple rate is provided. | |
| This test verifies that the AudioProcessor constructor raises a ValueError when an invalid sample rate is provided. It uses the pytest.raises context manager to check if the ValueError is raised when initializing an | |
| AudioProcessor object with an invalid sample rate. | |
| Returns: | |
| None | |
| """ | |
| with pytest.raises(ValueError): | |
| AudioProcessor(TEST_WAVEFORM, [44100, 48000]) | |
| def test_audio_processor_SAMPLE_RATE(): | |
| """Test the default sample rate of the AudioProcessor class. | |
| This test verifies that the default sample rate of the AudioProcessor class matches the expected value defined by the constant SAMPLE_RATE. It instantiates an AudioProcessor object with a test waveform | |
| and checks whether the sample rate attribute (sr) of the AudioProcessor object equals the predefined constant SAMPLE_RATE. | |
| Returns: | |
| None | |
| """ | |
| probe_audio_processor = AudioProcessor(TEST_WAVEFORM) | |
| assert probe_audio_processor.sr == SAMPLE_RATE | |