summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-torch-stft.spec273
-rw-r--r--sources1
3 files changed, 275 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..076c974 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
+[![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 <Python_Bot@openeuler.org> - 0.1.4-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..8ac4040
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+ddd4600243c92ef8c95c92facd636a08 torch_stft-0.1.4.tar.gz