Spaces:
Sleeping
Sleeping
| """ | |
| Tests for CLI. | |
| """ | |
| import subprocess | |
| from pathlib import Path | |
| import argbind | |
| import numpy as np | |
| import pytest | |
| import torch | |
| from audiotools import AudioSignal | |
| from dac.__main__ import run | |
| def setup_module(module): | |
| data_dir = Path(__file__).parent / "assets" | |
| data_dir.mkdir(exist_ok=True, parents=True) | |
| input_dir = data_dir / "input" | |
| input_dir.mkdir(exist_ok=True, parents=True) | |
| for i in range(5): | |
| signal = AudioSignal(np.random.randn(1000), 44_100) | |
| signal.write(input_dir / f"sample_{i}.wav") | |
| return input_dir | |
| def teardown_module(module): | |
| repo_root = Path(__file__).parent.parent | |
| subprocess.check_output(["rm", "-rf", f"{repo_root}/tests/assets"]) | |
| def test_reconstruction(model_type): | |
| # Test encoding | |
| input_dir = Path(__file__).parent / "assets" / "input" | |
| output_dir = input_dir.parent / model_type / "encoded_output" | |
| args = { | |
| "input": str(input_dir), | |
| "output": str(output_dir), | |
| "device": "cuda" if torch.cuda.is_available() else "cpu", | |
| "model_type": model_type, | |
| } | |
| with argbind.scope(args): | |
| run("encode") | |
| # Test decoding | |
| input_dir = output_dir | |
| output_dir = input_dir.parent / model_type / "decoded_output" | |
| args = { | |
| "input": str(input_dir), | |
| "output": str(output_dir), | |
| "model_type": model_type, | |
| } | |
| with argbind.scope(args): | |
| run("decode") | |
| def test_compression(): | |
| # Test encoding | |
| input_dir = Path(__file__).parent / "assets" / "input" | |
| output_dir = input_dir.parent / "encoded_output_quantizers" | |
| args = { | |
| "input": str(input_dir), | |
| "output": str(output_dir), | |
| "n_quantizers": 3, | |
| "device": "cuda" if torch.cuda.is_available() else "cpu", | |
| } | |
| with argbind.scope(args): | |
| run("encode") | |
| # Open .dac file | |
| dac_file = output_dir / "sample_0.dac" | |
| artifacts = np.load(dac_file, allow_pickle=True)[()] | |
| codes = artifacts["codes"] | |
| # Ensure that the number of quantizers is correct | |
| assert codes.shape[1] == 3 | |
| # Ensure that dtype of compression is uint16 | |
| assert codes.dtype == np.uint16 | |
| # CUDA_VISIBLE_DEVICES=0 python -m pytest tests/test_cli.py -s | |