Signal-to-Noise Ratio (SNR)
Module Interface
- class torchmetrics.audio.SignalNoiseRatio(zero_mean=False, **kwargs)[source]
Calculate Signal-to-noise ratio (SNR) meric for evaluating quality of audio.
where
denotes the power of each signal. The SNR metric compares the level of the desired signal to the level of background noise. Therefore, a high value of SNR means that the audio is clear.As input to forward and update the metric accepts the following input
preds
(Tensor
): float tensor with shape(...,time)
target
(Tensor
): float tensor with shape(...,time)
As output of forward and compute the metric returns the following output
snr
(Tensor
): float scalar tensor with average SNR value over samples
- Parameters:
zero_mean (
bool
) – if to zero mean target and preds or notkwargs (
Any
) – Additional keyword arguments, see Advanced metric settings for more info.
- Raises:
TypeError – if target and preds have a different shape
Example
>>> from torch import tensor >>> from torchmetrics.audio import SignalNoiseRatio >>> target = tensor([3.0, -0.5, 2.0, 7.0]) >>> preds = tensor([2.5, 0.0, 2.0, 8.0]) >>> snr = SignalNoiseRatio() >>> snr(preds, target) tensor(16.1805)
- plot(val=None, ax=None)[source]
Plot a single or multiple values from the metric.
- Parameters:
val (
Union
[Tensor
,Sequence
[Tensor
],None
]) – Either a single result from calling metric.forward or metric.compute or a list of these results. If no value is provided, will automatically call metric.compute and plot that result.ax (
Optional
[Axes
]) – An matplotlib axis object. If provided will add plot to that axis
- Return type:
- Returns:
Figure and Axes object
- Raises:
ModuleNotFoundError – If matplotlib is not installed
>>> # Example plotting a single value >>> import torch >>> from torchmetrics.audio import SignalNoiseRatio >>> metric = SignalNoiseRatio() >>> metric.update(torch.rand(4), torch.rand(4)) >>> fig_, ax_ = metric.plot()
>>> # Example plotting multiple values >>> import torch >>> from torchmetrics.audio import SignalNoiseRatio >>> metric = SignalNoiseRatio() >>> values = [ ] >>> for _ in range(10): ... values.append(metric(torch.rand(4), torch.rand(4))) >>> fig_, ax_ = metric.plot(values)
Functional Interface
- torchmetrics.functional.audio.signal_noise_ratio(preds, target, zero_mean=False)[source]
Calculate Signal-to-noise ratio (SNR) meric for evaluating quality of audio.
where
denotes the power of each signal. The SNR metric compares the level of the desired signal to the level of background noise. Therefore, a high value of SNR means that the audio is clear.- Parameters:
- Return type:
- Returns:
Float tensor with shape
(...,)
of SNR values per sample- Raises:
RuntimeError – If
preds
andtarget
does not have the same shape
Example
>>> from torchmetrics.functional.audio import signal_noise_ratio >>> target = torch.tensor([3.0, -0.5, 2.0, 7.0]) >>> preds = torch.tensor([2.5, 0.0, 2.0, 8.0]) >>> signal_noise_ratio(preds, target) tensor(16.1805)