Convert STFT to LogMel.
(x_stft, fs, n_mels, n_fft, fmin=None, fmax=None, eps=1e-10)
| 73 | |
| 74 | |
| 75 | def stft2logmelspectrogram(x_stft, fs, n_mels, n_fft, fmin=None, fmax=None, eps=1e-10): |
| 76 | """Convert STFT to LogMel.""" |
| 77 | # x_stft: (Time, Channel, Freq) or (Time, Freq) |
| 78 | fmin = 0 if fmin is None else fmin |
| 79 | fmax = fs / 2 if fmax is None else fmax |
| 80 | |
| 81 | # spc: (Time, Channel, Freq) or (Time, Freq) |
| 82 | spc = np.abs(x_stft) |
| 83 | # mel_basis: (Mel_freq, Freq) |
| 84 | mel_basis = librosa.filters.mel( |
| 85 | sr=fs, n_fft=n_fft, n_mels=n_mels, fmin=fmin, fmax=fmax |
| 86 | ) |
| 87 | # lmspc: (Time, Channel, Mel_freq) or (Time, Mel_freq) |
| 88 | lmspc = np.log10(np.maximum(eps, np.dot(spc, mel_basis.T))) |
| 89 | |
| 90 | return lmspc |
| 91 | |
| 92 | |
| 93 | def spectrogram(x, n_fft, n_shift, win_length=None, window="hann"): |
no outgoing calls
no test coverage detected
searching dependent graphs…