Download tests/models/test_encodec_model.py from jonluca/MusicGen: direct link, hf CLI and curl.
- Browser
- Download file 2.33 kB
-
https://huggingface.co/spaces/jonluca/MusicGen/resolve/d56cc001d9fe99bb8feee2d208527e1cc64160f3/tests/models/test_encodec_model.py
- Command line
-
hf download hf://spaces/jonluca/MusicGen@d56cc001d9fe99bb8feee2d208527e1cc64160f3/tests/models/test_encodec_model.py
-
curl -L -o test_encodec_model.py https://huggingface.co/spaces/jonluca/MusicGen/resolve/d56cc001d9fe99bb8feee2d208527e1cc64160f3/tests/models/test_encodec_model.py
2.33 kB
| # Copyright (c) Meta Platforms, Inc. and affiliates. | |
| # All rights reserved. | |
| # | |
| # This source code is licensed under the license found in the | |
| # LICENSE file in the root directory of this source tree. | |
| import random | |
| import numpy as np | |
| import torch | |
| from audiocraft.models import EncodecModel | |
| from audiocraft.modules import SEANetEncoder, SEANetDecoder | |
| from audiocraft.quantization import DummyQuantizer | |
| class TestEncodecModel: | |
| def _create_encodec_model(self, | |
| sample_rate: int, | |
| channels: int, | |
| dim: int = 5, | |
| n_filters: int = 3, | |
| n_residual_layers: int = 1, | |
| ratios: list = [5, 4, 3, 2], | |
| **kwargs): | |
| frame_rate = np.prod(ratios) | |
| encoder = SEANetEncoder(channels=channels, dimension=dim, n_filters=n_filters, | |
| n_residual_layers=n_residual_layers, ratios=ratios) | |
| decoder = SEANetDecoder(channels=channels, dimension=dim, n_filters=n_filters, | |
| n_residual_layers=n_residual_layers, ratios=ratios) | |
| quantizer = DummyQuantizer() | |
| model = EncodecModel(encoder, decoder, quantizer, frame_rate=frame_rate, | |
| sample_rate=sample_rate, channels=channels, **kwargs) | |
| return model | |
| def test_model(self): | |
| random.seed(1234) | |
| sample_rate = 24_000 | |
| channels = 1 | |
| model = self._create_encodec_model(sample_rate, channels) | |
| for _ in range(10): | |
| length = random.randrange(1, 10_000) | |
| x = torch.randn(2, channels, length) | |
| res = model(x) | |
| assert res.x.shape == x.shape | |
| def test_model_renorm(self): | |
| random.seed(1234) | |
| sample_rate = 24_000 | |
| channels = 1 | |
| model_nonorm = self._create_encodec_model(sample_rate, channels, renormalize=False) | |
| model_renorm = self._create_encodec_model(sample_rate, channels, renormalize=True) | |
| for _ in range(10): | |
| length = random.randrange(1, 10_000) | |
| x = torch.randn(2, channels, length) | |
| codes, scales = model_nonorm.encode(x) | |
| codes, scales = model_renorm.encode(x) | |
| assert scales is not None | |