%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 [![Build Status](https://travis-ci.com/pseeth/pytorch-stft.svg?branch=master)](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): ![images/stft.png](images/stft.png) ## 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 [![Build Status](https://travis-ci.com/pseeth/pytorch-stft.svg?branch=master)](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): ![images/stft.png](images/stft.png) ## 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 [![Build Status](https://travis-ci.com/pseeth/pytorch-stft.svg?branch=master)](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): ![images/stft.png](images/stft.png) ## 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 - 0.1.4-1 - Package Spec generated