File size: 899 Bytes
18f8e1a
57dc741
18f8e1a
 
 
 
 
 
 
 
 
 
 
 
 
 
57dc741
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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