pyroomacoustics.utilities module

pyroomacoustics.utilities.all_combinations(lst1, lst2)

Return all combinations between two arrays.

pyroomacoustics.utilities.angle_function(s1, v2)

Compute azimuth and colatitude angles in radians for a given set of points s1 and a singular point v2.

Parameters
  • s1 (numpy array) – 3×N for a set of N 3-D points, 2×N for a set of N 2-D points.

  • v2 (numpy array) – 3×1 for a 3-D point, 2×1 for a 2-D point.

Returns

2×N numpy array with azimuth and colatitude angles in radians.

Return type

numpy array

pyroomacoustics.utilities.autocorr(x, p, biased=True, method='numpy')

Compute the autocorrelation for real signal x up to lag p.

Parameters
  • x (numpy array) – Real signal in time domain.

  • p (int) – Amount of lag. When solving for LPC coefficient, this is typically the LPC order.

  • biased (bool) – Whether to return biased autocorrelation (default) or unbiased. As there are fewer samples for larger lags, the biased estimate tends to have better statistical stability under noise.

  • method (‘numpy, ‘fft’, ‘time’, pra) – Method for computing the autocorrelation: in the frequency domain with fft or pra (np.fft.rfft is used so only real signals are supported), in the time domain with time, or with numpy’s built-in function np.correlate (default). For p < log2(len(x)), the time domain approach may be more efficient.

Returns

Autocorrelation for x up to lag p.

Return type

numpy array

pyroomacoustics.utilities.clip(signal, high, low)

Clip a signal from above at high and from below at low.

pyroomacoustics.utilities.compare_plot(signal1, signal2, Fs, fft_size=512, norm=False, equal=False, title1=None, title2=None)
pyroomacoustics.utilities.convmtx(x, n)

Create a convolution matrix H for the vector x of size len(x) times n. Then, the result of np.dot(H,v) where v is a vector of length n is the same as np.convolve(x, v).

pyroomacoustics.utilities.create_noisy_signal(signal_fp, snr, noise_fp=None, offset=None)

Create a noisy signal of a specified SNR. :param signal_fp: File path to clean input. :type signal_fp: string :param snr: SNR in dB. :type snr: float :param noise_fp: File path to noise. Default is to use randomly generated white noise. :type noise_fp: string :param offset: Offset in seconds before starting the signal. :type offset: float

Returns

  • numpy array – Noisy signal with specified SNR, between [-1,1] and zero mean.

  • numpy array – Clean signal, untouched from WAV file.

  • numpy array – Added noise such that specified SNR is met.

  • int – Sampling rate in Hz.

pyroomacoustics.utilities.dB(signal, power=False)
pyroomacoustics.utilities.fractional_delay(t0)

Creates a fractional delay filter using a windowed sinc function. The length of the filter is fixed by the module wide constant frac_delay_length (default 81).

Parameters

t0 (float) – The delay in fraction of sample. Typically between -1 and 1.

Returns

A fractional delay filter with specified delay.

Return type

numpy array

pyroomacoustics.utilities.fractional_delay_filter_bank(delays)

Creates a fractional delay filter bank of windowed sinc filters

Parameters

delays (1d narray) – The delays corresponding to each filter in fractional samples

Returns

An ndarray where the ith row contains the fractional delay filter corresponding to the ith delay. The number of columns of the matrix is proportional to the maximum delay.

Return type

numpy array

pyroomacoustics.utilities.goertzel(x, k)

Goertzel algorithm to compute DFT coefficients

pyroomacoustics.utilities.highpass(signal, Fs, fc=None, plot=False)

Filter out the really low frequencies, default is below 50Hz

pyroomacoustics.utilities.levinson(r, b)

Solve a system of the form Rx=b where R is hermitian toeplitz matrix and b is any vector using the generalized Levinson recursion as described in M.H. Hayes, Statistical Signal Processing and Modelling, p. 268.

Parameters
  • r – First column of R, toeplitz hermitian matrix.

  • b – The right-hand argument. If b is a matrix, the system is solved for every column vector in b.

Returns

The solution of the linear system Rx = b.

Return type

numpy array

pyroomacoustics.utilities.low_pass_dirac(t0, alpha, Fs, N)

Creates a vector containing a lowpass Dirac of duration T sampled at Fs with delay t0 and attenuation alpha.

If t0 and alpha are 2D column vectors of the same size, then the function returns a matrix with each line corresponding to pair of t0/alpha values.

pyroomacoustics.utilities.lpc(x, p, biased=True)

Compute p LPC coefficients for a speech segment x.

Parameters
  • x (numpy array) – Real signal in time domain.

  • p (int) – Amount of lag. When solving for LPC coefficient, this is typically the LPC order.

  • biased (bool) – Whether to use biased autocorrelation (default) or unbiased. As there are fewer samples for larger lags, the biased estimate tends to have better statistical stability under noise.

Returns

p LPC coefficients.

Return type

numpy array

pyroomacoustics.utilities.normalize(signal, bits=None)

normalize to be in a given range. The default is to normalize the maximum amplitude to be one. An optional argument allows to normalize the signal to be within the range of a given signed integer representation of bits.

pyroomacoustics.utilities.normalize_pwr(sig1, sig2)

Normalize sig1 to have the same power as sig2.

pyroomacoustics.utilities.prony(x, p, q)

Prony’s Method from Monson H. Hayes’ Statistical Signal Processing, p. 154

Parameters
  • x – signal to model

  • p – order of denominator

  • q – order of numerator

Returns

  • a – numerator coefficients

  • b – denominator coefficients

  • err (the squared error of approximation)

pyroomacoustics.utilities.real_spectrum(signal, axis=-1, **kwargs)
pyroomacoustics.utilities.requires_matplotlib(func)
pyroomacoustics.utilities.rms(data)

Compute root mean square of input.

Parameters

data (numpy array) – Real signal in time domain.

Returns

Root mean square.

Return type

float

pyroomacoustics.utilities.shanks(x, p, q)

Shank’s Method from Monson H. Hayes’ Statistical Signal Processing, p. 154

Parameters
  • x – signal to model

  • p – order of denominator

  • q – order of numerator

Returns

  • a – numerator coefficients

  • b – denominator coefficients

  • err – the squared error of approximation

pyroomacoustics.utilities.spectrum(signal, Fs, N)
pyroomacoustics.utilities.time_dB(signal, Fs, bits=16)

Compute the signed dB amplitude of the oscillating signal normalized wrt the number of bits used for the signal.

pyroomacoustics.utilities.to_16b(signal)

converts float 32 bit signal (-1 to 1) to a signed 16 bits representation No clipping in performed, you are responsible to ensure signal is within the correct interval.

pyroomacoustics.utilities.to_float32(data)

Cast data (typically from WAV) to float32.

Parameters

data (numpy array) – Real signal in time domain, typically obtained from WAV file.

Returns

data as float32.

Return type

numpy array