Skip to content

STFT transforms suitable for use with PGHI (phase gradient heap integration)

License

Notifications You must be signed in to change notification settings

andimarafioti/tifresi

Repository files navigation

tifresi: Time Frequency Spectrogram Inversion

'tifresi' to be pronounced 'tifreeezy' provide a simple implementation of TF and spectrogam suitable for inversion, i.e. with a high quality phase recovery. The phase recovery algorithm used is PGHI (phase gradient heap integration).

Installation

This repository use the ltfatpy packages that requires a few libraries to be installed. The package relies on some libraries that have to be installed beforehands. To avoid any issue, please perform these steps in order and use a virtual environnement (pipenv, virtualenv or conda).

  1. Install fftw3, lapack and cmake
    • On debian based unix system:
    sudo apt-get install libfftw3-dev liblapack-dev cmake
    
    • On MacOS X using homebrew:
    brew install fftw lapack cmake
    
    • On MacOS X using port:
    sudo port install fftw-3 fftw-3-single lapack cmake
    
  2. Install cython (required for installing ltfatpy):
    pip install cython
    
  3. Install the package from pypi
    pip install tifresi
    
    or from source
    git clone https://github.com/andimarafioti/tifresi
    cd tifresi
    pip install .
    

Starting

After installation of the requirements, you can check the following notebooks:

  • demo.ipynb illustrates how to construct a spectrogram and invert it.
  • demo-mel.ipynb illustrates how to compute a mel spectrogram with the setting used in this repository.

License & citation

The content of this repository is released under the terms of the MIT license. Please consider citing our papers if you use it.

@inproceedings{marafioti2019adversarial,
  title={Adversarial Generation of Time-Frequency Features with application in audio synthesis},
  author={Marafioti, Andr{\'e}s and Perraudin, Nathana{\"e}l and Holighaus, Nicki and Majdak, Piotr},
  booktitle={International Conference on Machine Learning},
  pages={4352--4362},
  year={2019}
}
@article{pruuvsa2017noniterative,
  title={A noniterative method for reconstruction of phase from STFT magnitude},
  author={Pr{\uu}{\v{s}}a, Zden{\v{e}}k and Balazs, Peter and S{\o}ndergaard, Peter Lempel},
  journal={IEEE/ACM Transactions on Audio, Speech, and Language Processing},
  volume={25},
  number={5},
  pages={1154--1164},
  year={2017},
  publisher={IEEE}
}

Developing

As a developer, you can test the package using pytest:

pip install pytest

Then run tests using

pytest tifresi

You can also use the source code checker flake8:

pip install flake8

Then run tests using

flake8 .

TODO

  • Improve doc
  • Put the documentation on readthedoc or somthing similar

About

STFT transforms suitable for use with PGHI (phase gradient heap integration)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published