def wav2mel(wav, hparams=None): # mel = Audio2Mel().cuda()(src) # return mel hparams = hparams or melgan_hparams wav = np.pad(wav.flatten(), (_pad_len, _pad_len), mode="reflect") mel = mel_spectrogram(wav, hparams) mel = mel / 20 return mel
def audio2mel_mellotron(src): """ 用aukit模块重现生成mel,和mellotron的频谱适应。 :param src: :return: """ wavs = src.cpu().numpy() mels = [] for wav in wavs: wav = wav.flatten()[:-1] # 避免生成多一个空帧频谱 mel = mel_spectrogram(wav, default_hparams) mels.append(mel) mels = torch.from_numpy(np.array(mels).astype(np.float32)) return mels
def audio2mel_synthesizer(src): """ 用aukit模块重现生成mel,和synthesizer的频谱适应。 :param src: :return: """ _pad_len = (synthesizer_hparams.n_fft - synthesizer_hparams.hop_size) // 2 wavs = src.cpu().numpy() mels = [] for wav in wavs: wav = np.pad(wav.flatten(), (_pad_len, _pad_len), mode="reflect") mel = mel_spectrogram(wav, synthesizer_hparams) mel = mel / 20 mels.append(mel) mels = torch.from_numpy(np.array(mels).astype(np.float32)) return mels
def audio2mel(src): # print("wav", src.shape) # mel = Audio2Mel().cuda()(src) # print("mel", mel.cpu().shape) # return mel # wavs = F.pad(src, (p, p), "reflect") wavs = src.cpu().numpy() mels = [] for wav in wavs: wav = np.pad(wav.flatten(), (_pad_len, _pad_len), mode="reflect") mel = mel_spectrogram(wav, default_hparams) mels.append(mel) mels = torch.from_numpy(np.array(mels).astype(np.float32)) return mels
def wavs2mels(indir: Path, outdir: Path): for fpath in tqdm(indir.glob("*.wav")): wav = aukit.load_wav(fpath, sr=16000) wav = np.pad(wav.flatten(), (_pad_len, _pad_len), mode="reflect") mel = mel_spectrogram(wav, default_hparams) np.save(outdir.joinpath(fpath.stem + ".npy"), mel, allow_pickle=False)
def melspectrogram(wav, hparams=None): wav = np.pad(wav.flatten(), (_pad_len, _pad_len), mode="reflect") mel = mel_spectrogram(wav, melgan_hparams) mel = mel / 20 return mel