Instructions to use Novix/SongGenerationtwo with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- SongGeneration
How to use Novix/SongGenerationtwo with SongGeneration:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
| #!/usr/bin/env python | |
| # -*- coding: utf-8 -*- | |
| """ | |
| @File : spec.py | |
| @Time : 2023/8/8 下午5:10 | |
| @Author : waytan | |
| @Contact : waytan@tencent.com | |
| @License : (C)Copyright 2023, Tencent | |
| @Desc : Spec | |
| """ | |
| import torch as th | |
| def spectro(x, n_fft=512, hop_length=None, pad=0): | |
| *other, length = x.shape | |
| x = x.reshape(-1, length) | |
| is_mps = x.device.type == 'mps' | |
| if is_mps: | |
| x = x.cpu() | |
| z = th.stft(x, | |
| n_fft * (1 + pad), | |
| hop_length or n_fft // 4, | |
| window=th.hann_window(n_fft).to(x), | |
| win_length=n_fft, | |
| normalized=True, | |
| center=True, | |
| return_complex=True, | |
| pad_mode='reflect') | |
| _, freqs, frame = z.shape | |
| return z.view(*other, freqs, frame) | |
| def ispectro(z, hop_length=None, length=None, pad=0): | |
| *other, freqs, frames = z.shape | |
| n_fft = 2 * freqs - 2 | |
| z = z.view(-1, freqs, frames) | |
| win_length = n_fft // (1 + pad) | |
| is_mps = z.device.type == 'mps' | |
| if is_mps: | |
| z = z.cpu() | |
| x = th.istft(z, | |
| n_fft, | |
| hop_length, | |
| window=th.hann_window(win_length).to(z.real), | |
| win_length=win_length, | |
| normalized=True, | |
| length=length, | |
| center=True) | |
| _, length = x.shape | |
| return x.view(*other, length) | |