loudness_zwtv#
- loudness_zwtv(signal, fs, field_type='free')[source]#
Returns the loudness value from a time signal
This function computes the acoustic loudness according to Zwicker method for time-varying signals (ISO.532-1:2017).
- Parameters:
signal (numpy.array) – A time signal values [Pa].
fs (integer) – Sampling frequency, can be omitted if the input is a DataTime object. Default to None
field_type ({'free', 'diffuse'}) – Type of soundfield. Default is ‘free’
Outputs
- Returns:
N (float) – Overall loudness [sones], size (Ntime,).
N_specific (numpy.ndarray) – Specific loudness [sones/bark], size (Nbark, Ntime).
bark_axis (numpy.ndarray) – Bark axis, size (Nbark,).
time_axis (numpy.ndarray) – Time axis, size (Ntime,).
Warning
The sampling frequency of the signal must be >= 48 kHz to fulfill requirements. If the provided signal doesn’t meet the requirements, it will be resampled.
See also
loudness_zwstLoudness computation for a stationary time signal
loudness_zwst_persegLoudness computation by time-segment
loudness_zwst_freqLoudness computation from a sound spectrum
Notes
For each time frame considered, the total loudness \(N\) is computed as the integral of the specific loudness \(N'\) measured in sone/bark, over the Bark scale. The values of specific loudness are evaluated from third octave band levels as function of critical band rate \(z\) in Bark. The calculation includes the mutual effects that a time window can have on its neighbors.
\[N=\int_{0}^{24Bark}N'(z)\textup{dz}\]Due to normative continuity, the method is in accordance with ISO 226:1987 equal loudness contours instead of ISO 226:2003, as defined in the following standards:
ISO 532:1975 (method B)
DIN 45631:1991
ISO 532-1:2017 (method 1)
References
[1]E.Zwicker and H.Fastl. Program for calculating loudness according to din 45631 (iso 532b). Journal of the Acoustical Society of Japan, 1991. URL: https://www.jstage.jst.go.jp/article/ast1980/12/1/12_1_39/_article.
[2]ISO.532-1:2017. Methods for calculating loudness, part 1 Zwicker Method. International Organization for Standardization, 2017. URL: https://www.iso.org/standard/63077.html.
Examples
>>> from mosqito.sq_metrics import loudness_zwtv >>> import matplotlib.pyplot as plt >>> import numpy as np >>> fs=48000 >>> d=1 >>> dB=60 >>> time = np.arange(0, d, 1/fs) >>> f = np.linspace(1000,5000, len(time)) >>> stimulus = 0.5 * (1 + np.sin(2 * np.pi * f * time)) >>> rms = np.sqrt(np.mean(np.power(stimulus, 2))) >>> ampl = 0.00002 * np.power(10, dB / 20) / rms >>> stimulus = stimulus * ampl >>> N, N_spec, bark_axis, time_axis = loudness_zwtv(stimulus, fs) >>> plt.plot(time_axis, N) >>> plt.xlabel("Time [s]") >>> plt.ylabel("Loudness [Sone]")
(
Source code,png,hires.png,pdf)