音频的采样率如何与音频的跳跃长度、滤波器长度、窗口长度相关以及下采样如何影响音频参数?

时间:2021-04-19 05:38:32

标签: python tensorflow machine-learning audio librosa

我有大约 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 和以下代码对我的数据进行下采样。<​​/p>

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)

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

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

如何根据给定的采样率配置/计算上述参数?

1 个答案:

答案 0 :(得分:1)

看起来您的模型需要 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 所指的帧取决于 pad_mode 函数的 librosa.feature.melspectrogram 参数。

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

相关问题