You can enhance the MultiResolutionSTFTLoss by applying Mel-scaled spectrograms and perceptual weighting. This requires specifying fft_sizes, hop_sizes, win_lengths, scale="mel", n_bins, and the sample_rate.
import torch
import auraloss
bs = 8
chs = 1
seq_len = 131072
sample_rate = 44100
target = torch.rand(bs, chs, seq_len)
pred = torch.rand(bs, chs, seq_len)
# Define the loss function with perceptual weighting
loss_fn = auraloss.freq.MultiResolutionSTFTLoss(
fft_sizes=[1024, 2048, 8192],
hop_sizes=[256, 512, 2048],
win_lengths=[1024, 2048, 8192],
scale="mel",
n_bins=128,
sample_rate=sample_rate,
perceptual_weighting=True,
)
# Compute loss
loss = loss_fn(pred, target)
bs = 8
chs = 1
seq_len = 131072
sample_rate = 44100
# some audio you want to compare
target = torch.rand(bs, chs, seq_len)
pred = torch.rand(bs, chs, seq_len)
# define the loss function
loss_fn = auraloss.freq.MultiResolutionSTFTLoss(
fft_sizes=[1024, 2048, 8192],
hop_sizes=[256, 512, 2048],
win_lengths=[1024, 2048, 8192],
scale="mel",
n_bins=128,
sample_rate=sample_rate,
perceptual_weighting=True,
)
# compute
loss = loss_fn(pred, target)