38

我正在做:

import librosa


D = librosa.stft(samples, n_fft=nperseg, 
                 hop_length=overlap, win_length=nperseg,
                 window=scipy.signal.windows.hamming)

spect, _ = librosa.magphase(D)

audio_signal = librosa.griffinlim(spect, n_iter=1024, 
                                  win_length=nperseg, hop_length=overlap, 
                                  window=signal.windows.hamming)
print(audio_signal, audio_signal.shape)
sf.write('test.wav', audio_signal, sample_rate)

它在重建的音频信号中引入了明显的失真。我能做些什么来改善它?

4

2 回答 2

1

您需要使用居中的窗口函数,使窗口信号为零相位,即它在窗口中间完全对称。在这种情况下,您可以使用 hann 窗口,它是具有非零端点的升余弦窗口。

D = librosa.stft(samples, n_fft=nperseg, 
                 hop_length=overlap, win_length=nperseg,
                 window=scipy.signal.windows.hann)

spect, _ = librosa.magphase(D)

audio_signal = librosa.griffinlim(spect, n_iter=1024, 
                                  win_length=nperseg, hop_length=overlap, 
                                  window=signal.windows.hann)
print(audio_signal, audio_signal.shape)
sf.write('test.wav', audio_signal, sample_rate)
于 2021-09-13T18:57:56.350 回答
0

您应该使用基于神经网络的声码器(如 WaveNet)进行重建

于 2021-11-15T12:33:14.617 回答