librosa.mu_expand
- librosa.mu_expand(x, *, mu=255.0, quantize=True)[source]
mu-law expansion
This function is the inverse of
mu_compress
. Given a mu-law compressed signal-1 <= x <= 1
, the mu-law expansion is calculated by:sign(x) * (1 / mu) * ((1 + mu)**abs(x) - 1)
- Parameters:
- xnp.ndarray
The compressed signal. If
quantize=True
, values must be in the range [-1, +1].- mupositive number
The compression parameter. Values of the form
2**n - 1
(e.g., 15, 31, 63, etc.) are most common.- quantizeboolean
If
True
, the input is assumed to be quantized to1 + mu
distinct integer values.
- Returns:
- x_expandednp.ndarray with values in the range [-1, +1]
The mu-law expanded signal.
- Raises:
- ParameterError
If
x
has values outside the range [-1, +1] andquantize=False
Ifmu <= 0
See also
Examples
Compress and expand without quantization
>>> x = np.linspace(-1, 1, num=16) >>> x array([-1. , -0.86666667, -0.73333333, -0.6 , -0.46666667, -0.33333333, -0.2 , -0.06666667, 0.06666667, 0.2 , 0.33333333, 0.46666667, 0.6 , 0.73333333, 0.86666667, 1. ]) >>> y = librosa.mu_compress(x, quantize=False) >>> y array([-1. , -0.97430198, -0.94432361, -0.90834832, -0.86336132, -0.80328309, -0.71255496, -0.52124063, 0.52124063, 0.71255496, 0.80328309, 0.86336132, 0.90834832, 0.94432361, 0.97430198, 1. ]) >>> z = librosa.mu_expand(y, quantize=False) >>> z array([-1. , -0.86666667, -0.73333333, -0.6 , -0.46666667, -0.33333333, -0.2 , -0.06666667, 0.06666667, 0.2 , 0.33333333, 0.46666667, 0.6 , 0.73333333, 0.86666667, 1. ])
Compress and expand with quantization. Note that this necessarily incurs quantization error, particularly for values near +-1.
>>> y = librosa.mu_compress(x, quantize=True) >>> y array([-128, -124, -120, -116, -110, -102, -91, -66, 66, 91, 102, 110, 116, 120, 124, 127]) >>> z = librosa.mu_expand(y, quantize=True) array([-1. , -0.84027248, -0.70595818, -0.59301377, -0.4563785 , -0.32155973, -0.19817918, -0.06450245, 0.06450245, 0.19817918, 0.32155973, 0.4563785 , 0.59301377, 0.70595818, 0.84027248, 0.95743702])