⚗️ | Added some stupid ways for training + some makeup

This commit is contained in:
2025-10-04 22:38:11 +03:00
parent 0bc8fc2792
commit 3f23242d6f
12 changed files with 304 additions and 463 deletions

34
data.py
View File

@@ -12,12 +12,15 @@ import AudioUtils
class AudioDataset(Dataset):
audio_sample_rates = [11025]
def __init__(self, input_dir, clip_length=16384):
def __init__(self, input_dir, clip_length: int = 8000, normalize: bool = True):
self.clip_length = clip_length
self.normalize = normalize
input_files = [
os.path.join(root, f)
for root, _, files in os.walk(input_dir)
for f in files
if f.endswith(".wav") or f.endswith(".mp3") or f.endswith(".flac")
os.path.join(input_dir, f)
for f in os.listdir(input_dir)
if os.path.isfile(os.path.join(input_dir, f))
and f.lower().endswith((".wav", ".mp3", ".flac"))
]
data = []
@@ -25,14 +28,15 @@ class AudioDataset(Dataset):
input_files, desc=f"Processing {len(input_files)} audio file(s)"
):
decoder = decoders.AudioDecoder(audio_clip)
decoded_samples = decoder.get_all_samples()
audio = decoded_samples.data
audio = decoded_samples.data.float() # ensure float32
original_sample_rate = decoded_samples.sample_rate
audio = AudioUtils.stereo_tensor_to_mono(audio)
if normalize:
audio = AudioUtils.normalize(audio)
# Generate low-quality audio with random downsampling
mangled_sample_rate = random.choice(self.audio_sample_rates)
resample_transform_low = torchaudio.transforms.Resample(
original_sample_rate, mangled_sample_rate
@@ -41,25 +45,27 @@ class AudioDataset(Dataset):
mangled_sample_rate, original_sample_rate
)
low_audio = resample_transform_low(audio)
low_audio = resample_transform_high(low_audio)
low_audio = resample_transform_high(resample_transform_low(audio))
splitted_high_quality_audio = AudioUtils.split_audio(audio, clip_length)
splitted_low_quality_audio = AudioUtils.split_audio(low_audio, clip_length)
if not splitted_high_quality_audio or not splitted_low_quality_audio:
continue # skip empty or invalid clips
splitted_high_quality_audio[-1] = AudioUtils.pad_tensor(
splitted_high_quality_audio[-1], clip_length
)
splitted_low_quality_audio = AudioUtils.split_audio(low_audio, clip_length)
splitted_low_quality_audio[-1] = AudioUtils.pad_tensor(
splitted_low_quality_audio[-1], clip_length
)
for high_quality_sample, low_quality_sample in zip(
for high_quality_data, low_quality_data in zip(
splitted_high_quality_audio, splitted_low_quality_audio
):
data.append(
(
(high_quality_sample, low_quality_sample),
(high_quality_data, low_quality_data),
(original_sample_rate, mangled_sample_rate),
)
)