STFT/ISTFT transforms and phase recovery using Phase Gradient Heap Integration
Project description
pghipy: Phase Gradient Heap Integration in Python
A Python implementation of STFT/ISTFT transforms and phase recovery using Phase Gradient Heap Integration. Based on code from phase-reconstruction and tifgan/phase_recovery. The package does not require installation of ltfatpy and works in Windows/MacOS/Linux.
Installation
pip install pghipy
Usage
from pghipy import get_default_window, calculate_synthesis_window
from pghipy import stft, pghi, istft
NFFT = 1024
HOP = NFFT//8 # Increasing overlap improves phase recovery
# Create Gaussian windows
winpghi, gamma = get_default_window(NFFT)
winsynth = calculate_synthesis_window(NFFT, HOP, winpghi)
# Magnitude spectrogram
y, sr = librosa.load(librosa.example('trumpet'))
S = np.abs(stft(y,win_length=NFFT,hop_length=HOP,window=winpghi))
# Estimate phase
phase = pghi(S,win_length=NFFT,hop_length=HOP,gamma=gamma)
# Invert
S = S*np.exp(1.0j*phase)
y_inv = istft(S,win_length=NFFT,hop_length=HOP,synthesis_window=winsynth)
Note: Uses numba JIT compiler to obtain a significant speed-up in phase recovery. Compilation is deferred until the first execution of the function pghi (i.e., lazy compilation).
Thanks
Richard Lyman rrlyman
Andrés Marafioti andimarafioti
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pghipy-0.1.0.tar.gz
(3.9 kB
view hashes)