音频的采样率与跳跃长度、滤波器长度、音频的 window 长度有何关系?下采样如何影响音频参数?

How is sampling rate of audio related to hop length, filter length, window length of an audio and how does downsampling affect the audio parameters?

我有大约 20K 个文件的音频数据,采样率为 44100Khz。 我正在使用这些数据来训练 Text-to-Speech Tacotron 模型。 但是,为成功训练配置的参数如下: 因此我需要将数据下采样到 22.5Khz。

max_wav_value=32768.0,
sampling_rate=22050,
filter_length=1024,
hop_length=256,
win_length=1024,
n_mel_channels=80,
mel_fmin=0.0,
mel_fmax=8000.0,

我可以使用 librosa=0.6.0 和下面的代码成功地对我的数据进行下采样。

x, sr = librosa.load("Audio_44100.wav", sr=44100)
y = librosa.resample(x, 44100, 22050)
librosa.output.write_wav("Audio_22050.wav", y, sr=22050, norm=False)

但是,通过这种方式进行下采样,我认为只有采样率发生了变化,而其余的音频参数并没有相应变化。

有人可以帮忙说明如何在考虑其他音频参数的情况下对音频进行下采样吗?

以上参数如何根据给定的采样率configured/calculated?

您的模型似乎需要 Mel spectrogram 作为输入,它是使用给定参数生成的。 IE。 sr=22050hop_length=...等。这些参数与下采样无关。

要创建合适的频谱图,请执行以下操作:

max_wav_value=32768.0
sampling_rate=22050
filter_length=1024  # not needed, I think
hop_length=256
win_length=1024
n_mel_channels=80
mel_fmin=0.0
mel_fmax=8000.0

# FYI: librosa downsamples to 22.050 Hz by default
x, sr = librosa.load("Audio_44100.wav", sr=sampling_rate)
mels = librosa.feature.melspectrogram(
    y=y, sr=sr,
    win_length=win_length,
    hop_length=hop_length,
    n_mels=n_mel_channels,
    fmin= mel_fmin,
    fmax=mel_fmax
)

mels 将具有 (n_mels, t) 的形状,其中 t 是可能的跳数。请注意,t 指的是哪个帧取决于 librosa.feature.melspectrogram 函数的 pad_mode 参数。

显然这是作为“文本到语音”模型的输入。也就是说,这让我觉得很奇怪,因为很难从 Mel 频谱图创建质量合理的音频。另一方面,使用这样的频谱图作为 Speech-To-Text 模型的输入对我来说非常有意义。