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
Release history Release notifications | RSS feed
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
File details
Details for the file pyaudioaliasingmetrics-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: pyaudioaliasingmetrics-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96f1f3e8d9214123bb0bb1d31fca0454702bb0224ba7185727da747b08a8edf8 |
|
MD5 | ded2cc69238aab15d63bb9d9dbb0eb0b |
|
BLAKE2b-256 | 70cf6c564d81834a3aa7f724446c511c15c559f4f63b5a502600f21364f6f6e4 |