Skip to main content

Computes SNR and SINAD from spectral data

Project description

pyaudioaliasingmetrics

A Python implementation of SNR and SINAD metrics, using Numpy and Numba

These implementations expects three types of inputs :

  • spectral magnitudes of the required signals
  • the fundamental frequency of the signal
  • a description of which harmonics are part of the signal

Installation

You can install this library using pip

pip install pyaudioaliasingmetrics

Usage

Matlab suggest using a Kaiser window with a beta factor of 38

SNR

Computing the SNR of a saw wave at 440Hz, sampled at 44100Hz

import numpy as np
import audioaliasingmetrics as aam

noisy_signal : np.ndarray[np.float32] = ... # audio time serie of the noisy signal

length = noisy_signal.shape[0]
window = window = np.kaiser(length, 38)
magnitude = np.abs(np.fft.rfft(noisy_signal * window))
snr = aam.snr(magnitude, 44100, 440.0, aam.Harmonics.ALL)

SINAD

Computing the SINAD of a saw wave at 440Hz, sampled at 44100Hz

import numpy as np
import audioaliasingmetrics as aam

noisy_signal : np.ndarray[np.float32] = ... # audio time serie of the noisy signal
clean_signal : np.ndarray[np.float32] = ... # audio time serie of the clean signal

length = noisy_signal.shape[0]
window = window = np.kaiser(length, 38)
noisy_magnitude = np.abs(np.fft.rfft(noisy_signal * window))
clean_magnitude = np.abs(np.fft.rfft(clean_signal * window))

sinad = aam.sinad(noisy_magnitude, clean_magnitude, 44100, 440.0, aam.Harmonics.ALL)

Harmonics selection

You can select which harmonics are part of your signal with the harmonics parameter of both methods. It supports two modes:

  • A Harmonics enum value (ODD / EVEN / ALL) to respectively select all possible odd, even or both harmonics.
  • A list/numpy array of integers values >2 of harmonics factors by which to multiply the fundamental with, to precisely select harmonics.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pyaudioaliasingmetrics-0.1.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file pyaudioaliasingmetrics-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pyaudioaliasingmetrics-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 96f1f3e8d9214123bb0bb1d31fca0454702bb0224ba7185727da747b08a8edf8
MD5 ded2cc69238aab15d63bb9d9dbb0eb0b
BLAKE2b-256 70cf6c564d81834a3aa7f724446c511c15c559f4f63b5a502600f21364f6f6e4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page