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 with respect to a reference 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 in the first and second row, respectively. If the input vectors are 2-D, the colatitude is always fixed to pi/2.

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