Source code for malaya_speech.utils.griffin_lim

import librosa
import numpy as np


[docs]def from_mel( mel_, sr=16000, n_fft=2048, n_iter=32, win_length=1000, hop_length=100, ): """ Change melspectrogram into waveform using Librosa. Parameters ---------- spectrogram: np.array Returns -------- result: np.array """ return librosa.feature.inverse.mel_to_audio( mel_, sr=sr, n_fft=n_fft, hop_length=hop_length, win_length=win_length, window='hann', center=True, pad_mode='reflect', power=1.0, n_iter=n_iter, )
[docs]def from_mel_vocoder( mel, sr=22050, n_fft=1024, n_mels=256, fmin=80, fmax=7600, n_iter=32, win_length=None, hop_length=256, ): """ Change melspectrogram into waveform using Librosa. Parameters ---------- spectrogram: np.array Returns -------- result: np.array """ mel_spec = np.power(10.0, mel) mel_basis = librosa.filters.mel( sr, n_fft=n_fft, n_mels=n_mels, fmin=fmin, fmax=fmax ) mel_to_linear = np.maximum( 1e-10, np.dot(np.linalg.pinv(mel_basis), mel_spec) ) gl_lb = librosa.griffinlim( mel_to_linear, n_iter=n_iter, hop_length=hop_length, win_length=win_length, ) return gl_lb