diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-12 03:15:35 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-12 03:15:35 +0000 |
| commit | 512b2b89450939e2d7564391977e66779b2b273a (patch) | |
| tree | 924494c28c5aa4dc7fd7d3ff825bbad66e87617d | |
| parent | 3f81d52141e5af57c061b13b600d3670a21f6359 (diff) | |
automatic import of python-torch-stft
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-torch-stft.spec | 273 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 275 insertions, 0 deletions
@@ -0,0 +1 @@ +/torch_stft-0.1.4.tar.gz diff --git a/python-torch-stft.spec b/python-torch-stft.spec new file mode 100644 index 0000000..e38edd5 --- /dev/null +++ b/python-torch-stft.spec @@ -0,0 +1,273 @@ +%global _empty_manifest_terminate_build 0 +Name: python-torch-stft +Version: 0.1.4 +Release: 1 +Summary: An STFT/iSTFT for PyTorch +License: BSD License +URL: https://github.com/pseeth/torch-stft +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c3/bd/ea6bc20ccaf1008c62c3b235eeb76649190e155ad43c0a06ed6bda2afd5f/torch_stft-0.1.4.tar.gz +BuildArch: noarch + +Requires: python3-numpy +Requires: python3-scipy +Requires: python3-librosa + +%description +[](https://travis-ci.com/pseeth/pytorch-stft) + +# STFT/iSTFT in PyTorch + +An STFT/iSTFT written up in PyTorch using 1D Convolutions. Requirements are a recent version PyTorch, numpy, and librosa (for loading audio in test_stft.py). Thanks to Shrikant Venkataramani for sharing code this was based off of and Rafael Valle for catching bugs and adding the proper windowing logic. Uses Python 3. + +## Installation +Install easily with pip: +``` +pip install torch_stft +``` + +## Usage +``` +import torch +from torch_stft import STFT +import numpy as np +import librosa +import matplotlib.pyplot as plt + +audio = librosa.load(librosa.util.example_audio_file(), duration=10.0, offset=30)[0] +device = 'cpu' +filter_length = 1024 +hop_length = 256 +win_length = 1024 # doesn't need to be specified. if not specified, it's the same as filter_length +window = 'hann' + +audio = torch.FloatTensor(audio) +audio = audio.unsqueeze(0) +audio = audio.to(device) + +stft = STFT( + filter_length=filter_length, + hop_length=hop_length, + win_length=win_length, + window=window +).to(device) + +magnitude, phase = stft.transform(audio) +output = stft.inverse(magnitude, phase) +output = output.cpu().data.numpy()[..., :] +audio = audio.cpu().data.numpy()[..., :] +print(np.mean((output - audio) ** 2)) # on order of 1e-16 +``` + +Output of [`compare_stft.py`](compare_stft.py): + + + +## Tests +Test it by just cloning this repo and running + +``` +pip install -r requirements.txt +python -m pytest . +``` + +Unfortunately, since it's implemented with 1D Convolutions, some filter_length/hop_length +combinations can result in out of memory errors on your GPU when run on sufficiently large input. + + +## Contributing +Pull requests welcome. + + + + + +%package -n python3-torch-stft +Summary: An STFT/iSTFT for PyTorch +Provides: python-torch-stft +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-torch-stft +[](https://travis-ci.com/pseeth/pytorch-stft) + +# STFT/iSTFT in PyTorch + +An STFT/iSTFT written up in PyTorch using 1D Convolutions. Requirements are a recent version PyTorch, numpy, and librosa (for loading audio in test_stft.py). Thanks to Shrikant Venkataramani for sharing code this was based off of and Rafael Valle for catching bugs and adding the proper windowing logic. Uses Python 3. + +## Installation +Install easily with pip: +``` +pip install torch_stft +``` + +## Usage +``` +import torch +from torch_stft import STFT +import numpy as np +import librosa +import matplotlib.pyplot as plt + +audio = librosa.load(librosa.util.example_audio_file(), duration=10.0, offset=30)[0] +device = 'cpu' +filter_length = 1024 +hop_length = 256 +win_length = 1024 # doesn't need to be specified. if not specified, it's the same as filter_length +window = 'hann' + +audio = torch.FloatTensor(audio) +audio = audio.unsqueeze(0) +audio = audio.to(device) + +stft = STFT( + filter_length=filter_length, + hop_length=hop_length, + win_length=win_length, + window=window +).to(device) + +magnitude, phase = stft.transform(audio) +output = stft.inverse(magnitude, phase) +output = output.cpu().data.numpy()[..., :] +audio = audio.cpu().data.numpy()[..., :] +print(np.mean((output - audio) ** 2)) # on order of 1e-16 +``` + +Output of [`compare_stft.py`](compare_stft.py): + + + +## Tests +Test it by just cloning this repo and running + +``` +pip install -r requirements.txt +python -m pytest . +``` + +Unfortunately, since it's implemented with 1D Convolutions, some filter_length/hop_length +combinations can result in out of memory errors on your GPU when run on sufficiently large input. + + +## Contributing +Pull requests welcome. + + + + + +%package help +Summary: Development documents and examples for torch-stft +Provides: python3-torch-stft-doc +%description help +[](https://travis-ci.com/pseeth/pytorch-stft) + +# STFT/iSTFT in PyTorch + +An STFT/iSTFT written up in PyTorch using 1D Convolutions. Requirements are a recent version PyTorch, numpy, and librosa (for loading audio in test_stft.py). Thanks to Shrikant Venkataramani for sharing code this was based off of and Rafael Valle for catching bugs and adding the proper windowing logic. Uses Python 3. + +## Installation +Install easily with pip: +``` +pip install torch_stft +``` + +## Usage +``` +import torch +from torch_stft import STFT +import numpy as np +import librosa +import matplotlib.pyplot as plt + +audio = librosa.load(librosa.util.example_audio_file(), duration=10.0, offset=30)[0] +device = 'cpu' +filter_length = 1024 +hop_length = 256 +win_length = 1024 # doesn't need to be specified. if not specified, it's the same as filter_length +window = 'hann' + +audio = torch.FloatTensor(audio) +audio = audio.unsqueeze(0) +audio = audio.to(device) + +stft = STFT( + filter_length=filter_length, + hop_length=hop_length, + win_length=win_length, + window=window +).to(device) + +magnitude, phase = stft.transform(audio) +output = stft.inverse(magnitude, phase) +output = output.cpu().data.numpy()[..., :] +audio = audio.cpu().data.numpy()[..., :] +print(np.mean((output - audio) ** 2)) # on order of 1e-16 +``` + +Output of [`compare_stft.py`](compare_stft.py): + + + +## Tests +Test it by just cloning this repo and running + +``` +pip install -r requirements.txt +python -m pytest . +``` + +Unfortunately, since it's implemented with 1D Convolutions, some filter_length/hop_length +combinations can result in out of memory errors on your GPU when run on sufficiently large input. + + +## Contributing +Pull requests welcome. + + + + + +%prep +%autosetup -n torch-stft-0.1.4 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-torch-stft -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 0.1.4-1 +- Package Spec generated @@ -0,0 +1 @@ +ddd4600243c92ef8c95c92facd636a08 torch_stft-0.1.4.tar.gz |
