import numpy as np
|
|
import os
|
|
import audio as Audio
|
|
|
|
|
|
def build_from_path(in_dir, out_dir):
|
|
index = 1
|
|
out = list()
|
|
|
|
with open(os.path.join(in_dir, 'metadata.csv'), encoding='utf-8') as f:
|
|
for line in f:
|
|
parts = line.strip().split('|')
|
|
wav_path = os.path.join(in_dir, 'wavs', '%s.wav' % parts[0])
|
|
text = parts[2]
|
|
out.append(_process_utterance(out_dir, index, wav_path, text))
|
|
|
|
if index % 100 == 0:
|
|
print("Done %d" % index)
|
|
index = index + 1
|
|
|
|
return out
|
|
|
|
|
|
def _process_utterance(out_dir, index, wav_path, text):
|
|
# Compute a mel-scale spectrogram from the wav:
|
|
mel_spectrogram = Audio.tools.get_mel(wav_path).numpy().astype(np.float32)
|
|
# print(mel_spectrogram)
|
|
|
|
# Write the spectrograms to disk:
|
|
mel_filename = 'ljspeech-mel-%05d.npy' % index
|
|
np.save(os.path.join(out_dir, mel_filename),
|
|
mel_spectrogram.T, allow_pickle=False)
|
|
|
|
return text
|