diegotg343's picture
fixed bug with samples
57dc741
raw
history blame contribute delete
899 Bytes
import torchaudio, torch, numpy as np
from torch.nn.functional import pad
from .config import TARGET_SR, MAX_SECONDS
def ensure_mono(wav: torch.Tensor) -> torch.Tensor:
if wav.dim() != 2:
raise ValueError("Expected [channels, T]")
return wav if wav.size(0) == 1 else wav.mean(0, keepdim=True)
def resample_if_needed(wav: torch.Tensor, sr: int, target_sr: int = TARGET_SR) -> torch.Tensor:
return wav if sr == target_sr else torchaudio.functional.resample(wav, sr, target_sr)
def clamp_duration(wav: torch.Tensor, sr: int, max_seconds: float = MAX_SECONDS) -> torch.Tensor:
if max_seconds <= 0: return wav
max_len = int(sr * max_seconds)
return wav[:, :max_len] if wav.size(1) > max_len else wav
def add_convenient_samples(wav: torch.Tensor) -> torch.Tensor:
frames = wav.shape[1] // 256
if frames % 2 == 0:
return pad(wav, (0, 256))
return wav