我有大约20,000个音频文件,采样率为44100Hz。我使用这些数据来训练文本到语音的Tacotron模型。然而,成功训练所需的参数配置如下:因此,我需要将数据降采样到22050Hz。
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)
然而,通过这种方式降采样,我认为只有采样率发生了变化,其余的音频参数并没有相应地调整。
有人能帮助我如何在考虑其他音频参数的情况下进行音频降采样吗?
或者
基于给定的采样率,如何配置/计算上述参数?
回答:
看起来您的模型需要一个Mel频谱图作为输入,该频谱图是用给定参数生成的。即sr=22050
,hop_length=...
等。这些参数与降采样无关。
要创建合适的频谱图,可以这样做:
max_wav_value=32768.0sampling_rate=22050filter_length=1024 # 我认为不需要hop_length=256win_length=1024n_mel_channels=80mel_fmin=0.0mel_fmax=8000.0# 提示:librosa默认将采样率降至22050Hzx, 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频谱图创建合理质量的音频是困难的。另一方面,将这样的频谱图用作语音到文本模型的输入对我来说是完全合理的。